package Roguelike.Quests.Output; import Roguelike.Global; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.XmlReader; /** * Created by Philip on 23-Jan-16. */ public class QuestOutput { public boolean runFlag; public String key; public String data; public boolean defer; public Array<AbstractQuestOutputCondition> conditions = new Array<AbstractQuestOutputCondition>( ); public void evaluate() { for (AbstractQuestOutputCondition condition : conditions) { if (!condition.evaluate()) { return; } } if (defer) { Global.QuestManager.deferredFlags.put( key, data ); System.out.println("Setting defered flag: '" + key + "' to '" + data+"'"); } else if (runFlag) { Global.RunFlags.put( key, data ); System.out.println("Setting run flag: '" + key + "' to '" + data+"'"); } else { Global.WorldFlags.put( key, data ); System.out.println("Setting world flag: '" + key + "' to '" + data+"'"); } } public void parse( XmlReader.Element xml ) { key = xml.getName().toLowerCase(); data = xml.get( "Data", "true" ).toLowerCase(); runFlag = xml.getBooleanAttribute( "RunFlag", false ); defer = xml.getBooleanAttribute( "Defer", true ); XmlReader.Element conditionsElement = xml.getChildByName( "Conditions" ); if (conditionsElement != null) { for (int i = 0; i < conditionsElement.getChildCount(); i++ ) { XmlReader.Element conditionElement = conditionsElement.getChild( i ); AbstractQuestOutputCondition condition = AbstractQuestOutputCondition.load( conditionElement ); conditions.add( condition ); } } } }