package coffee.liz.ecs.model; import java.util.Arrays; import java.util.Set; import java.util.stream.Collectors; public record Query(Set> queryingComponents, QueryFilter filter) { @SafeVarargs public static Query allOf(final Class... components) { return new Query(Arrays.stream(components).collect(Collectors.toSet()), QueryFilter.ALL_OF); } @SafeVarargs public static Query anyOf(final Class... components) { return new Query(Arrays.stream(components).collect(Collectors.toSet()), QueryFilter.ANY_OF); } @SafeVarargs public static Query noneOf(final Class... components) { return new Query(Arrays.stream(components).collect(Collectors.toSet()), QueryFilter.NONE_OF); } public enum QueryFilter { ALL_OF, ANY_OF, NONE_OF } }