package Roguelike.GameEvent.OnTurn; import java.util.HashMap; import net.objecthunter.exp4j.Expression; import net.objecthunter.exp4j.ExpressionBuilder; import Roguelike.Global; import Roguelike.Entity.Entity; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.XmlReader.Element; import exp4j.Helpers.EquationHelper; public final class HealOverTimeEvent extends AbstractOnTurnEvent { String condition; String equation; @Override public boolean handle( Entity entity, float time ) { HashMap<String, Integer> variableMap = entity.getVariableMap(); if ( condition != null ) { int conditionVal = EquationHelper.evaluate( condition, variableMap ); if ( conditionVal == 0 ) { return false; } } int raw = EquationHelper.evaluate( equation, variableMap ); entity.applyHealing( raw ); return true; } @Override public void parse( Element xml ) { condition = xml.getAttribute( "Condition", null ); if ( condition != null ) { condition = condition.toLowerCase(); } equation = xml.getText().toLowerCase(); } @Override public Array<String> toString( HashMap<String, Integer> variableMap ) { Array<String> lines = new Array<String>(); int rounded = EquationHelper.evaluate( equation, variableMap ); lines.add( "Heals " + rounded + " health a turn" ); return lines; } }