package com.cardshifter.modapi.base;
import java.util.*;
public class CreatureTypeComponent extends Component implements CopyableComponent {
private final List<String> creatureTypes;
public CreatureTypeComponent(List<String> creatureTypes) {
this.creatureTypes = new ArrayList<>(creatureTypes);
}
public CreatureTypeComponent(String creatureType) {
creatureTypes = new ArrayList<>(1);
creatureTypes.add(creatureType);
}
public boolean hasCreatureType(String creatureType) {
return creatureTypes.stream().anyMatch(type -> creatureType.equals(type));
}
public boolean has(String creatureType) {
return hasCreatureType(creatureType);
}
@Override
public Component copy(Entity copyTo) {
return new CreatureTypeComponent(creatureTypes);
}
@Override
public String toString() {
return "CreatureTypeComponent [creatureType=" + String.join(",", creatureTypes) + "]";
}
public boolean hasAny(String... types) {
Set<String> lookingFor = new HashSet<>(Arrays.asList(types));
return creatureTypes.stream().anyMatch(lookingFor::contains);
}
public boolean noneMatch(String... types) {
return !hasAny(types);
}
public String getAllTypes() {
return String.join(" ", creatureTypes);
}
}