Go to the documentation of this file.
20 package net.sf.gridarta.model.gameobject;
30 import org.jetbrains.annotations.NotNull;
31 import org.jetbrains.annotations.Nullable;
38 public abstract class AbstractGameObject<G
extends GameObject<G, A, R>, A extends
MapArchObject<A>, R extends
Archetype<G, A, R>> extends
AbstractBaseObject<G, A, R, G> implements
GameObject<G, A, R> {
82 public String
getAttributeString(@NotNull
final String attributeName,
final boolean queryArchetype) {
87 return queryArchetype ?
archetype.getAttributeString(attributeName) :
"";
93 final String normalizedFaceName =
faceName.isEmpty() ? null :
faceName.intern();
96 return normalizedFaceName !=
null && !normalizedFaceName.isEmpty() && normalizedFaceName !=
archetype.getFaceName() ? normalizedFaceName :
null;
102 if (mapSquare !=
null) {
110 if (mapSquare !=
null) {
118 if (mapSquare !=
null) {
125 @SuppressWarnings(
"unchecked")
128 clone.container =
null;
129 return clone.getThis();
141 return gameObjectFactory.cloneGameObject(
getThis());
146 baseObjectVisitor.visit(
this);
150 public void remove() {
152 for (G tail = head.getMultiNext(); tail !=
null; tail = tail.getMultiNext()) {
154 if (tailContainer ==
null) {
157 tailContainer.
remove(tail);
160 if (headContainer ==
null) {
163 headContainer.
remove(head);
237 if (gameObject !=
null) {
238 return gameObject.getTopContainer();
261 throw new IllegalStateException(
"not inside a container");
String getAttributeValue(@NotNull final String attributeName)
void visit(@NotNull final BaseObjectVisitor< G, A, R > baseObjectVisitor)
static final long serialVersionUID
void setArchetype(@NotNull final R archetype)
boolean isBottom(@NotNull final G gameObject)
final transient FaceObjectProviders faceObjectProviders
void beginGameObjectChange(@NotNull G gameObject)
MapModel< G, A, R > getMapModel()
GameObjectContainer< G, A, R > container
G getPrev(@NotNull final G gameObject)
void insertAfter(@NotNull final G node)
AbstractGameObject(@NotNull final R archetype, @NotNull final FaceObjectProviders faceObjectProviders, @NotNull final AnimationObjects animationObjects)
GameObjectContainer< G, A, R > getContainer()
MapSquare< G, A, R > getMapSquare()
void moveUp(@NotNull final G gameObject)
abstract MapSquare< G, A, R > getMapSquare()
void remove(@NotNull final G gameObject)
void moveDown(@NotNull final G gameObject)
abstract G asGameObject()
void insertAfter(@Nullable final G previousGameObject, @NotNull final G gameObject)
void endGameObjectChange()
void moveBottom(@NotNull final G gameObject)
void setMapX(final int mapX)
boolean hasUndefinedArchetype()
void setContainer(@Nullable final GameObjectContainer< G, A, R > container, final int mapX, final int mapY)
void transientGameObjectChange(@NotNull G gameObject)
MapSquare< G, A, R > getMapSquareOptional()
void insertBefore(@NotNull final G node)
void moveTop(@NotNull final G gameObject)
void insertBefore(@NotNull final G gameObject, @Nullable final G nextGameObject)
G getContainerGameObject()
abstract MapSquare< G, A, R > getMapSquareOptional()
void notifyTransientChange()
String getEffectiveFaceName(@NotNull final String faceName)
void endGameObjectChange(@NotNull G gameObject)
final AnimationObjects animationObjects
G newInstance(@NotNull final GameObjectFactory< G, A, R > gameObjectFactory)
void beginGameObjectChange()
G getNext(@NotNull final G gameObject)
boolean isTop(@NotNull final G gameObject)
String getAttributeString(@NotNull final String attributeName, final boolean queryArchetype)
void setMapY(final int mapY)