Class ImageSurfaceCompositeEntity
- java.lang.Object
-
- de.extio.spacecraft.shared.model.entity.AbstractCompositeEntity
-
- de.extio.spacecraft.shared.model.entity.builtin.composite.ImageSurfaceCompositeEntity
-
- All Implemented Interfaces:
HasPosition2,HasPositionAndDimension2,SpatialIndex2Capable
- Direct Known Subclasses:
AbstractAiSpawnPortal,AbstractPortalCompositeEntity
public class ImageSurfaceCompositeEntity extends AbstractCompositeEntity
Image surfaces are showing an area of a tileset in the game world
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class de.extio.spacecraft.shared.model.entity.AbstractCompositeEntity
AbstractCompositeEntity.CollisionCalculationResult, AbstractCompositeEntity.DefaultDamageWaveDamageHandler
-
-
Field Summary
Fields Modifier and Type Field Description protected doubleserverDampenVelocityFactorprotected booleanserverSurfaceBuilt-
Fields inherited from class de.extio.spacecraft.shared.model.entity.AbstractCompositeEntity
accelerationVector, DAMAGE_COLORS, DAMAGE_CONSUMER_BOTH, DAMAGE_CONSUMER_ENTITY, DAMAGE_CONSUMER_SHIELD, DAMAGEWAVE_DIRECTIONS, dimension, dirty, entityManager, fields, fresh, lastMovement, LOGGER, meshes, position, positionDirty, precisePosition, prevPosition, prevVelocityVector, ROTATE_COLLISION_COLOR, splitEntityGroups, sumMassCached, sumMassCachedTurn, uuid, velocityVector, VMAX_M_LB, VMAX_M_UB, VMAX_VEL_MAX, VMAX_VEL_MIN, VMAX_VEL_VAR
-
-
Constructor Summary
Constructors Constructor Description ImageSurfaceCompositeEntity()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcreate(UUID uuid, CoordI2 position, CoordI2 dimension)Called upon initial creation of this composite entity.voiddamageWave(GameSession gameSession, DamageWaveOptions damageWaveOptions, List<AbstractEntity> damagedEntities)Distributes incoming damage on entities.
There are certain aspects relevant for the calculation:
* A tiles consists of several layered entities
* An entity only absorbs a certain amount of damage (plateaus), which is also dependent on the weapon
* A tile can be protected by shields
* Also shields have plateaus
* Damage that is not absorbed propagates to nearby tiles
* Damage cannot propagate through some tiles in certain directions, i.e.Map<String,Object>getDynamicSerializationProperties(boolean incremental, UUID recipient)Dynamic serialization properties are created when transferring data from server to client (or vice versa) as well as when persisting a composite to disk.Area2getTilesetArea()StringgetTilesetModName()StringgetTilesetName()booleanisDestructible()booleanisEditorParametersDirty()voidlocalCopy(AbstractCompositeEntity other)Local copy of all fields that are not covered by update()voidlocalInit(EntityManager entityManager)Local initialization of transient fields.voidonServerTurnPass0(GameSession gameSession)Server side: Called every turn to contain any logic related to this entitiy.protected AbstractCompositeEntity.CollisionCalculationResultpriorityCalculateCollision(Map.Entry<AbstractCompositeEntity,List<AbstractEntity>> collisionPartner)Overrides the regular collision calculationvoidserverBuildSurface(GameSession gameSession)protected voidserverDampenVelocity()voidserverResetSurface()voidsetDestructible(boolean destructible)voidsetDynamicSerializationProperties(Map<String,Object> properties)This is the counterpart of getDynamicSerializationProperties(), see the description there.voidsetEditorParametersDirty(boolean editorParametersDirty)voidsetTilesetArea(Area2 tilesetArea)voidsetTilesetModName(String tilesetModName)voidsetTilesetName(String tilesetName)doublesumMass()Sums up the total mass of this compositevoidupdate(AbstractCompositeEntity other)Updates non-transient fields (i.e.-
Methods inherited from class de.extio.spacecraft.shared.model.entity.AbstractCompositeEntity
accelerate, calculateCollision, calculateVMax, compressDimension, excludeDynamicSerializationPropertiesPermanentStorage, getAccelerationVector, getAnimationOffset, getCompositeEntityFactoryClassName, getDimension, getDynamicSerializationPropertiesForSeparateTransfer, getEntityManager, getEntityNetworkConsolesCache, getFields, getLastEdited, getLastRotation, getLastRotationDirection, getMeshes, getPosition, getPrecisePosition, getPrevPosition, getSceneTag, getServerFieldsLastPublished, getServerLastInViewPort, getServerMeshesLastPublished, getServerScannedBy, getUuid, getVelocityVector, handleMove, handleMoveApply, includeInSpatialIndex2ResultSet, isDirty, isFresh, isInSpatialIndex2ResultSet, isLocalInit, isPositionDirty, isRemoved, isShadowed, isSplitEntityGroups, onClientActionMessage, onClientDraw, onClientFrame, onRemove, onServerActionMessage, onServerCollision, onServerTurnPass1, onServerTurnPass2, resetFieldsForPermanentStorage, resetStatic, restoreFieldsFromPermanentStorage, rotate, setAccelerationVector, setCompositeEntityFactoryClassName, setDimension, setDirty, setEntityManager, setFresh, setLastEdited, setPosition, setPositionDirty, setPrecisePosition, setPrevPosition, setSceneTag, setServerFieldsLastPublished, setServerMeshesLastPublished, setShadowed, setSplitEntityGroups, setUuid, setVelocityVector, splitEntityGroups
-
-
-
-
Method Detail
-
create
public void create(UUID uuid, CoordI2 position, CoordI2 dimension)
Description copied from class:AbstractCompositeEntityCalled upon initial creation of this composite entity. This method is not called locally (i.e. when the composite has been transferred from server to client), so only initialize non-transient fields here. See also localInit()- Overrides:
createin classAbstractCompositeEntity
-
update
public void update(AbstractCompositeEntity other)
Description copied from class:AbstractCompositeEntityUpdates non-transient fields (i.e. when receiving an entity update from server or copying a composite entity)- Overrides:
updatein classAbstractCompositeEntity
-
localInit
public void localInit(EntityManager entityManager)
Description copied from class:AbstractCompositeEntityLocal initialization of transient fields. See also create() and update()- Overrides:
localInitin classAbstractCompositeEntity
-
localCopy
public void localCopy(AbstractCompositeEntity other)
Description copied from class:AbstractCompositeEntityLocal copy of all fields that are not covered by update()- Overrides:
localCopyin classAbstractCompositeEntity
-
getDynamicSerializationProperties
public Map<String,Object> getDynamicSerializationProperties(boolean incremental, UUID recipient)
Description copied from class:AbstractCompositeEntityDynamic serialization properties are created when transferring data from server to client (or vice versa) as well as when persisting a composite to disk. These properties provide a way to implement complex serialization logic (i.e. views) and to distinguish between incremental and full updates.- Overrides:
getDynamicSerializationPropertiesin classAbstractCompositeEntity
-
setDynamicSerializationProperties
public void setDynamicSerializationProperties(Map<String,Object> properties)
Description copied from class:AbstractCompositeEntityThis is the counterpart of getDynamicSerializationProperties(), see the description there.- Overrides:
setDynamicSerializationPropertiesin classAbstractCompositeEntity
-
onServerTurnPass0
public void onServerTurnPass0(GameSession gameSession)
Description copied from class:AbstractCompositeEntityServer side: Called every turn to contain any logic related to this entitiy. Pass0 is called at the beginning of the cycle before entity callbacks have been called.- Overrides:
onServerTurnPass0in classAbstractCompositeEntity
-
serverBuildSurface
public void serverBuildSurface(GameSession gameSession)
-
serverResetSurface
public void serverResetSurface()
-
serverDampenVelocity
protected void serverDampenVelocity()
-
damageWave
public void damageWave(GameSession gameSession, DamageWaveOptions damageWaveOptions, List<AbstractEntity> damagedEntities)
Description copied from class:AbstractCompositeEntityDistributes incoming damage on entities.
There are certain aspects relevant for the calculation:
* A tiles consists of several layered entities
* An entity only absorbs a certain amount of damage (plateaus), which is also dependent on the weapon
* A tile can be protected by shields
* Also shields have plateaus
* Damage that is not absorbed propagates to nearby tiles
* Damage cannot propagate through some tiles in certain directions, i.e. walls, unless the entity is destroyed
* Propagated damage is dampened
* Damage handlers for tiles are pluggable- Overrides:
damageWavein classAbstractCompositeEntity
-
priorityCalculateCollision
protected AbstractCompositeEntity.CollisionCalculationResult priorityCalculateCollision(Map.Entry<AbstractCompositeEntity,List<AbstractEntity>> collisionPartner)
Description copied from class:AbstractCompositeEntityOverrides the regular collision calculation- Overrides:
priorityCalculateCollisionin classAbstractCompositeEntity
-
sumMass
public double sumMass()
Description copied from class:AbstractCompositeEntitySums up the total mass of this composite- Overrides:
sumMassin classAbstractCompositeEntity
-
setDestructible
public void setDestructible(boolean destructible)
-
getTilesetModName
public String getTilesetModName()
-
setTilesetModName
public void setTilesetModName(String tilesetModName)
-
getTilesetName
public String getTilesetName()
-
setTilesetName
public void setTilesetName(String tilesetName)
-
getTilesetArea
public Area2 getTilesetArea()
-
setTilesetArea
public void setTilesetArea(Area2 tilesetArea)
-
isEditorParametersDirty
public boolean isEditorParametersDirty()
-
setEditorParametersDirty
public void setEditorParametersDirty(boolean editorParametersDirty)
-
isDestructible
public boolean isDestructible()
-
-