package Roguelike.Fields.DurationStyle; import Roguelike.Fields.Field; import com.badlogic.gdx.utils.XmlReader.Element; public class FadeDurationStyle extends AbstractDurationStyle { private float fadeRate; private boolean resetOnStack; private boolean resetOnEntity; @Override public void update(float delta, Field field) { float updateAccumulator = (Float)field.getData("DurationAccumulator", 0.0f); updateAccumulator += delta; if (resetOnStack) { if (field.stacks > 1) { updateAccumulator = 0; } } if (resetOnEntity) { if (field.tile.entity != null) { updateAccumulator = 0; } else if (field.tile.environmentEntity != null && field.tile.environmentEntity.canTakeDamage) { updateAccumulator = 0; } } while (updateAccumulator >= fadeRate && field.stacks > 0) { updateAccumulator -= fadeRate; field.stacks--; if (field.stacks == 0) { field.onNaturalDeath(); } } field.setData("DurationAccumulator", updateAccumulator); } @Override public void parse(Element xml) { fadeRate = xml.getFloat("Rate", 5); resetOnStack = xml.getBoolean("ResetOnStacks", false); resetOnEntity = xml.getBoolean("ResetOnEntity", false); } }