summaryrefslogtreecommitdiff
path: root/core/src/main/java/coffee/liz/ecs/model/Query.java
blob: 8b52d42e3c0546deb39b245fa9148139b77ea45c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package coffee.liz.ecs.model;

import java.util.Arrays;
import java.util.Set;
import java.util.stream.Collectors;

public record Query(Set<Class<? extends Component>> queryingComponents, QueryFilter filter) {
    @SafeVarargs
    public static Query allOf(final Class<? extends Component>... components) {
        return new Query(Arrays.stream(components).collect(Collectors.toSet()), QueryFilter.ALL_OF);
    }

    @SafeVarargs
    public static Query anyOf(final Class<? extends Component>... components) {
        return new Query(Arrays.stream(components).collect(Collectors.toSet()), QueryFilter.ANY_OF);
    }

    @SafeVarargs
    public static Query noneOf(final Class<? extends Component>... components) {
        return new Query(Arrays.stream(components).collect(Collectors.toSet()), QueryFilter.NONE_OF);
    }

    public enum QueryFilter {
        ALL_OF, ANY_OF, NONE_OF
    }
}