Gridarta Editor
MutableOrGameObjectMatcher.java
Go to the documentation of this file.
1 /*
2  * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games.
3  * Copyright (C) 2000-2015 The Gridarta Developers.
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18  */
19 
20 package net.sf.gridarta.model.match;
21 
22 import java.util.ArrayList;
23 import java.util.Collection;
25 import org.jetbrains.annotations.NotNull;
26 
34 
38  private static final long serialVersionUID = 1L;
39 
44  private final boolean defaultState;
45 
50  @NotNull
51  private final Collection<GameObjectMatcher> gameObjectMatchers = new ArrayList<>();
52 
58  public MutableOrGameObjectMatcher(final boolean defaultState) {
59  this.defaultState = defaultState;
60  }
61 
62  @Override
63  public boolean isMatching(@NotNull final GameObject<?, ?, ?> gameObject) {
64  if (gameObjectMatchers.isEmpty()) {
65  return true;
66  }
67  for (final GameObjectMatcher gameObjectMatcher : gameObjectMatchers) {
68  if (gameObjectMatcher.isMatching(gameObject)) {
69  return true;
70  }
71  }
72  return defaultState;
73  }
74 
81  public void addArchObjectMatcher(@NotNull final GameObjectMatcher gameObjectMatcher) {
82  if (!containsArchObjectMatcher(gameObjectMatcher)) {
83  gameObjectMatchers.add(gameObjectMatcher);
84  }
85  }
86 
91  public void removeArchObjectMatcher(@NotNull final GameObjectMatcher gameObjectMatcher) {
92  gameObjectMatchers.remove(gameObjectMatcher);
93  }
94 
102  public boolean containsArchObjectMatcher(@NotNull final GameObjectMatcher gameObjectMatcher) {
103  return gameObjectMatchers.contains(gameObjectMatcher);
104  }
105 
109  public void removeAll() {
110  gameObjectMatchers.clear();
111  }
112 
113 }
Interface for classes that match GameObjects.
static final long serialVersionUID
The serial version UID.
boolean isMatching(@NotNull final GameObject<?, ?, ?> gameObject)
Matches an GameObject.
final Collection< GameObjectMatcher > gameObjectMatchers
The GameObjectMatchers to OR.
Base package of all Gridarta classes.
Reflects a game object (object on a map).
Definition: GameObject.java:36
boolean containsArchObjectMatcher(@NotNull final GameObjectMatcher gameObjectMatcher)
Checks whether a certain GameObjectMatcher is contained in this matcher.
void removeArchObjectMatcher(@NotNull final GameObjectMatcher gameObjectMatcher)
Removes an GameObjectMatcher.
void addArchObjectMatcher(@NotNull final GameObjectMatcher gameObjectMatcher)
Adds an GameObjectMatcher.
GameObjects are the objects based on Archetypes found on maps.
final boolean defaultState
The default matching state when gameObjectMatchers is empty.
MutableOrGameObjectMatcher(final boolean defaultState)
Creates a new instance.