Gridarta Editor
GameObject.java
Go to the documentation of this file.
1 /*
2  * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games.
3  * Copyright (C) 2000-2023 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.var.daimonin.model.gameobject;
21 
29 import org.jetbrains.annotations.NotNull;
30 import org.jetbrains.annotations.Nullable;
31 
42 public class GameObject extends DefaultIsoGameObject<GameObject, MapArchObject, Archetype> {
43 
48  private static final int @NotNull [] LIGHT_MASK_WIDTH = { 0, 1, 2, 2, 3, 3, 3, 4, 4, 4, };
49 
53  private static final long serialVersionUID = 1L;
54 
58  @NotNull
59  private final transient ArchetypeTypeSet archetypeTypeSet;
60 
70  public GameObject(@NotNull final Archetype archetype, @NotNull final FaceObjectProviders faceObjectProviders, @NotNull final AnimationObjects animationObjects, @NotNull final ArchetypeTypeSet archetypeTypeSet) {
71  super(archetype, faceObjectProviders, animationObjects);
72  this.archetypeTypeSet = archetypeTypeSet;
73  }
74 
75  @Override
76  public void addLast(@NotNull final GameObject gameObject) {
77  // force type change when a MONSTER is put in a spawn point
79  gameObject.setAttributeInt(TYPE, Archetype.TYPE_SPAWN_POINT_MOB); // change to SPAWN_POINT_MOB
80  }
81  super.addLast(gameObject);
82  }
83 
84  @Override
85  public void addFirst(@NotNull final GameObject gameObject) {
86  // force type change when a MONSTER is put in a spawn point
88  gameObject.setAttributeInt(TYPE, Archetype.TYPE_SPAWN_POINT_MOB); // change to SPAWN_POINT_MOB
89  }
90  super.addFirst(gameObject);
91  }
92 
93  @Override
94  public void propagateElevation(@NotNull final BaseObject<?, ?, ?, ?> gameObject) {
95  }
96 
97  @Override
98  public void updateTileStretch(final int heightValue, final boolean isAbsolute, @NotNull final Integer @Nullable [] subLayers) {
99  // ignore
100  }
101 
102  @Override
103  public void applyMassChange(@NotNull final Integer @NotNull [] layers, @NotNull final Integer[] subLayers, @NotNull final String changes) {
104  }
105 
106  @Override
107  public boolean isDrawDouble(final boolean drawDoubleFaces) {
108  return drawDoubleFaces;
109  }
110 
111  @Override
112  public boolean isStretched(final boolean tileStretching) {
113  return false;
114  }
115 
116  @NotNull
117  @Override
118  public GameObject clone() {
119  return super.clone();
120  }
121 
122  @NotNull
123  @Override
124  protected GameObject getThis() {
125  return this;
126  }
127 
128  @Override
129  public boolean isScripted() {
130  for (final BaseObject<?, ?, ?, ?> tmp : this) {
131  if (tmp.getTypeNo() == Archetype.TYPE_EVENT_OBJECT) {
132  return true;
133  }
134  }
135  return false;
136  }
137 
138  @Override
139  public int getLightRadius() {
140  final int attributeInt = Math.abs(getAttributeInt(GLOW_RADIUS));
141  return LIGHT_MASK_WIDTH[Math.min(attributeInt, LIGHT_MASK_WIDTH.length - 1)];
142  }
143 
144 }
net.sf.gridarta.var.daimonin.model.gameobject.GameObject.updateTileStretch
void updateTileStretch(final int heightValue, final boolean isAbsolute, @NotNull final Integer @Nullable[] subLayers)
Definition: GameObject.java:98
net.sf.gridarta.model.archetypetype
Defines types of GameObjects with corresponding attributes.
Definition: AbstractArchetypeAttributeInvSpell.java:20
net.sf.gridarta.var.daimonin.model.gameobject.GameObject.addFirst
void addFirst(@NotNull final GameObject gameObject)
Definition: GameObject.java:85
net.sf.gridarta.var.daimonin.model.gameobject.GameObject.isStretched
boolean isStretched(final boolean tileStretching)
Returns whether to draw this game object with stretching transformation.
Definition: GameObject.java:112
net.sf.gridarta.model.gameobject.DefaultIsoGameObject
Default implementation for GameObject implementing classes.
Definition: DefaultIsoGameObject.java:38
net.sf.gridarta.var.daimonin.model.gameobject.GameObject.archetypeTypeSet
final transient ArchetypeTypeSet archetypeTypeSet
The ArchetypeTypeSet for looking up archetype types.
Definition: GameObject.java:59
net.sf.gridarta.var.daimonin.model.archetype.Archetype.TYPE_SPAWN_POINT
int TYPE_SPAWN_POINT
Definition: Archetype.java:76
net.sf.gridarta
Base package of all Gridarta classes.
net.sf.gridarta.model.anim.AnimationObjects
AnimationObjects is a container for AnimationObjects.
Definition: AnimationObjects.java:30
net.sf
net.sf.gridarta.var.daimonin.model.gameobject.GameObject.addLast
void addLast(@NotNull final GameObject gameObject)
Definition: GameObject.java:76
net.sf.gridarta.var.daimonin.model.archetype.Archetype
Implements Daimonin archetypes.
Definition: Archetype.java:30
net.sf.gridarta.model.face.FaceObjectProviders
Provider for faces of GameObjects and Archetypes.
Definition: FaceObjectProviders.java:46
net.sf.gridarta.var
net.sf.gridarta.var.daimonin.model.gameobject.GameObject.isScripted
boolean isScripted()
Definition: GameObject.java:129
net.sf.gridarta.var.daimonin.model.archetype.Archetype.TYPE_EVENT_OBJECT
int TYPE_EVENT_OBJECT
Definition: Archetype.java:92
net.sf.gridarta.model.archetypetype.ArchetypeTypeSet
Manages ArchetypeType instances, list, and bitmask definitions.
Definition: ArchetypeTypeSet.java:40
net.sf.gridarta.var.daimonin.model.gameobject.GameObject.clone
GameObject clone()
Definition: GameObject.java:118
net.sf.gridarta.var.daimonin.model
net.sf.gridarta.model.gameobject.AbstractGameObject< G, A, R >::archetype
R archetype
The Archetype of this game object.
Definition: AbstractGameObject.java:51
net.sf.gridarta.var.daimonin.model.gameobject.GameObject.LIGHT_MASK_WIDTH
static final int[] LIGHT_MASK_WIDTH
Maps values of GLOW_RADIUS to effective glow radius in map squares.
Definition: GameObject.java:48
net.sf.gridarta.model.gameobject
GameObjects are the objects based on Archetypes found on maps.
Definition: AbstractGameObject.java:20
net
net.sf.gridarta.model.gameobject.DefaultIsoGameObject.faceObjectProviders
final transient FaceObjectProviders faceObjectProviders
The FaceObjectProviders for looking up faces.
Definition: DefaultIsoGameObject.java:121
net.sf.gridarta.var.daimonin.model.gameobject.GameObject.isDrawDouble
boolean isDrawDouble(final boolean drawDoubleFaces)
Returns whether to draw this game object with double height.
Definition: GameObject.java:107
net.sf.gridarta.model.archetypetype.ArchetypeTypeSet.getArchetypeTypeByBaseObject
ArchetypeType getArchetypeTypeByBaseObject(@NotNull final BaseObject<?, ?, ?, ?> baseObject)
Returns the ArchetypeType for the given BaseObject.
Definition: ArchetypeTypeSet.java:142
net.sf.gridarta.var.daimonin.model.gameobject.GameObject.propagateElevation
void propagateElevation(@NotNull final BaseObject<?, ?, ?, ?> gameObject)
Definition: GameObject.java:94
net.sf.gridarta.model.gameobject.DefaultIsoGameObject.GLOW_RADIUS
static final String GLOW_RADIUS
The name of the "glow_radius" attribute.
Definition: DefaultIsoGameObject.java:115
net.sf.gridarta.var.daimonin.model.gameobject.GameObject.getLightRadius
int getLightRadius()
Definition: GameObject.java:139
net.sf.gridarta.var.daimonin.model.gameobject.GameObject.serialVersionUID
static final long serialVersionUID
The serial version UID.
Definition: GameObject.java:53
net.sf.gridarta.model.baseobject.BaseObject
Definition: BaseObject.java:34
net.sf.gridarta.var.daimonin.model.gameobject.GameObject
Handles the Daimonin GameObjects.
Definition: GameObject.java:42
net.sf.gridarta.var.daimonin.model.gameobject.GameObject.applyMassChange
void applyMassChange(@NotNull final Integer @NotNull[] layers, @NotNull final Integer[] subLayers, @NotNull final String changes)
Definition: GameObject.java:103
net.sf.gridarta.model
net.sf.gridarta.var.daimonin.model.gameobject.GameObject.GameObject
GameObject(@NotNull final Archetype archetype, @NotNull final FaceObjectProviders faceObjectProviders, @NotNull final AnimationObjects animationObjects, @NotNull final ArchetypeTypeSet archetypeTypeSet)
Creates a new instance.
Definition: GameObject.java:70
net.sf.gridarta.var.daimonin.model.archetype
Definition: Archetype.java:20
net.sf.gridarta.model.baseobject
Definition: AbstractBaseObject.java:20
net.sf.gridarta.var.daimonin
Main package of Gridarta4Daimonin, contains all classes specific to the Daimonin version of the Grida...
net.sf.gridarta.model.face
The face is the appearance of an object.
Definition: AbstractFaceObjects.java:20
net.sf.gridarta.model.anim
Gridarta can handle frame information of animations and allow the selection of an animation using a t...
Definition: AbstractAnimationObjects.java:20
net.sf.gridarta.var.daimonin.model.maparchobject.MapArchObject
MapArchObject contains the specific meta data about a map that is stored in the map-arch,...
Definition: MapArchObject.java:39
net.sf.gridarta.var.daimonin.model.maparchobject
Definition: DefaultMapArchObjectFactory.java:20
net.sf.gridarta.model.baseobject.BaseObject.getTypeNo
int getTypeNo()
Returns the type number of this Archetype.
net.sf.gridarta.var.daimonin.model.gameobject.GameObject.getThis
GameObject getThis()
Definition: GameObject.java:124
net.sf.gridarta.model.archetypetype.ArchetypeType.getTypeNo
int getTypeNo()
Returns the type number.
Definition: ArchetypeType.java:151
net.sf.gridarta.var.daimonin.model.archetype.Archetype.TYPE_SPAWN_POINT_MOB
int TYPE_SPAWN_POINT_MOB
Definition: Archetype.java:78
net.sf.gridarta.var.daimonin.model.archetype.Archetype.TYPE_MOB
int TYPE_MOB
Definition: Archetype.java:74