package me.dannytatom.xibalba.systems.statuses; import com.badlogic.ashley.core.Entity; import com.badlogic.ashley.core.Family; import me.dannytatom.xibalba.components.AttributesComponent; import me.dannytatom.xibalba.components.statuses.PoisonedComponent; import me.dannytatom.xibalba.systems.UsesEnergySystem; import me.dannytatom.xibalba.utils.ComponentMappers; import me.dannytatom.xibalba.world.WorldManager; public class PoisonedSystem extends UsesEnergySystem { public PoisonedSystem() { super(Family.all(PoisonedComponent.class).get()); } @Override protected void processEntity(Entity entity, float deltaTime) { PoisonedComponent poisoned = ComponentMappers.poisoned.get(entity); if (poisoned.counter == poisoned.life) { entity.remove(PoisonedComponent.class); } else { WorldManager.entityHelpers.takeDamage(entity, poisoned.damage); if (WorldManager.entityHelpers.canSee(WorldManager.player, entity)) { boolean isPlayer = ComponentMappers.player.has(entity); AttributesComponent attributes = ComponentMappers.attributes.get(entity); WorldManager.log.add( "effects.poisoned.tookDamage", (isPlayer ? "You" : attributes.name), poisoned.damage ); if (attributes.health <= 0) { WorldManager.log.add("effects.poisoned.died", (isPlayer ? "You" : attributes.name)); } } poisoned.counter += 1; } } }