20 package net.sf.gridarta.model.validation.checks;
22 import java.util.Arrays;
23 import java.util.IdentityHashMap;
35 import org.jetbrains.annotations.NotNull;
43 public class EnvironmentChecker<G
extends GameObject<G, A, R>, A extends
MapArchObject<A>, R extends
Archetype<G, A, R>> extends
AbstractValidator<G, A, R> implements
GameObjectValidator<G, A, R> {
49 private final Map<ArchetypeType, Void>
noMap =
new IdentityHashMap<>();
56 private final Map<ArchetypeType, int @NotNull []>
inv =
new IdentityHashMap<>();
71 noMap.put(archetypeType,
null);
81 if (
inv.containsKey(archetypeType)) {
82 throw new IllegalArgumentException(
"archetype type has already been set: " + archetypeType);
85 final int[] tmp = types.clone();
87 inv.put(archetypeType, tmp);
92 final G envGameObject = gameObject.getContainerGameObject();
93 if (envGameObject ==
null) {
95 if (archetypeType.matches(gameObject)) {
103 if (archetypeType.
matches(gameObject)) {
104 final int[] types = entry.getValue();
105 if (types !=
null && Arrays.binarySearch(types, envGameObject.getTypeNo()) < 0) {
106 final String typeDescription = archetypeType.
getTypeName();
107 final String envTypeDescription = Integer.toString(envGameObject.getTypeNo());