package Roguelike.Save;
import java.util.EnumMap;
import java.util.HashMap;
import Roguelike.Entity.ActivationAction.ActivationActionGroup;
import Roguelike.Entity.EnvironmentEntity;
import Roguelike.Global;
import Roguelike.Items.Inventory;
import Roguelike.Lights.Light;
import Roguelike.Sprite.Sprite;
import Roguelike.Sprite.TilingSprite;
import Roguelike.StatusEffect.StatusEffect;
import Roguelike.Tiles.Point;
import Roguelike.Util.EnumBitflag;
import Roguelike.Util.FastEnumMap;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.XmlReader.Element;
public final class SaveEnvironmentEntity extends SaveableObject<EnvironmentEntity>
{
public int hp;
public Point pos = new Point();
public Array<StatusEffect> statuses = new Array<StatusEffect>();
public Inventory inventory;
public String UID;
public Sprite sprite;
public TilingSprite tilingSprite;
public Light light;
public EnumBitflag<Global.Passability> passableBy;
public boolean canTakeDamage;
public boolean attachToWall;
public boolean overhead;
public Global.Direction location;
public Array<ActivationActionGroup> onActivateActions;
public Array<ActivationActionGroup> onTurnActions;
public Array<ActivationActionGroup> onHearActions;
public Array<ActivationActionGroup> onDeathActions;
public Array<ActivationActionGroup> noneActions;
public Array<ActivationActionGroup> proximityActions;
public FastEnumMap<Global.Statistic, Integer> stats;
@Override
public void store( EnvironmentEntity obj )
{
hp = obj.HP;
pos.set( obj.tile[0][0].x, obj.tile[0][0].y );
for ( StatusEffect status : obj.statusEffects )
{
statuses.add( status );
}
inventory = obj.inventory;
UID = obj.UID;
sprite = obj.sprite;
tilingSprite = obj.tilingSprite;
passableBy = obj.passableBy;
onActivateActions = obj.onActivateActions;
onTurnActions = obj.onTurnActions;
onHearActions = obj.onHearActions;
onDeathActions = obj.onDeathActions;
noneActions = obj.noneActions;
proximityActions = obj.proximityActions;
canTakeDamage = obj.canTakeDamage;
attachToWall = obj.attachToWall;
overhead = obj.overHead;
location = obj.location;
light = obj.light;
stats = obj.statistics;
}
@Override
public EnvironmentEntity create()
{
EnvironmentEntity entity = new EnvironmentEntity();
entity.sprite = sprite;
entity.tilingSprite = tilingSprite;
entity.passableBy = passableBy;
entity.onActivateActions = onActivateActions;
entity.onTurnActions = onTurnActions;
entity.onHearActions = onHearActions;
entity.onDeathActions = onDeathActions;
entity.noneActions = noneActions;
entity.proximityActions = proximityActions;
entity.canTakeDamage = canTakeDamage;
entity.HP = hp;
for ( StatusEffect saveStatus : statuses )
{
entity.addStatusEffect( saveStatus );
}
entity.inventory = inventory;
entity.UID = UID;
entity.statistics = stats;
entity.attachToWall = attachToWall;
entity.overHead = overhead;
entity.location = location;
entity.light = light;
entity.isVariableMapDirty = true;
return entity;
}
}