package Roguelike.GameEvent.OnExpire; import Roguelike.Ability.ActiveAbility.ActiveAbility; import Roguelike.Entity.Entity; import Roguelike.Global; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.XmlReader; import exp4j.Helpers.EquationHelper; import java.util.HashMap; /** * Created by Philip on 15-Jan-16. */ public class AbilityOnExpireEvent extends AbstractOnExpireEvent { private String condition; private String[] reliesOn; private ActiveAbility ability; @Override public boolean handle( Entity entity ) { HashMap<String, Integer> variableMap = entity.getVariableMap(); for ( String name : reliesOn ) { if ( !variableMap.containsKey( name.toLowerCase() ) ) { variableMap.put( name.toLowerCase(), 0 ); } } if ( condition != null ) { int conditionVal = EquationHelper.evaluate( condition, variableMap ); if ( conditionVal == 0 ) { return false; } } ActiveAbility aa = ability.copy(); aa.setCaster( entity ); aa.setVariableMap( Global.Statistic.emptyMap ); aa.source = entity.tile[0][0]; aa.lockTarget( entity.tile[0][0] ); boolean finished = aa.update(); if ( !finished ) { entity.tile[0][0].level.addActiveAbility( aa ); } return true; } @Override public void parse( XmlReader.Element xml ) { condition = xml.getAttribute( "Condition", null ); if ( condition != null ) { condition = condition.toLowerCase(); } reliesOn = xml.getAttribute( "ReliesOn", "" ).split( "," ); ability = ActiveAbility.load( xml ); } @Override public Array<String> toString( HashMap<String, Integer> variableMap ) { Array<String> lines = new Array<String>( ); lines.add("EXPLODE"); return lines; } }