package org.tjuscs.bulletgame.task; import org.apache.commons.jexl2.Expression; public class IfElseTask extends Task { private Task ifTask; private Task elseTask; private Expression condition; public IfElseTask(String condition, Task ifTask, Task elseTask) { this.condition = scriptEngine.createExpression(condition); this.ifTask = ifTask; this.elseTask = elseTask; if (ifTask != null) ifTask.setParentContext(context); if (elseTask != null) elseTask.setParentContext(context); } @Override public void reset() { super.reset(); if(ifTask != null) ifTask.reset(); if(elseTask != null) elseTask.reset(); } @Override public boolean work() { if (condition == null || ifTask == null) return true; boolean complete = true; if ((Boolean) condition.evaluate(context)) complete = ifTask.act(); else if (elseTask != null) complete = elseTask.act(); if (complete) { if (ifTask != null) ifTask.reset(); if (elseTask != null) elseTask.reset(); } return complete; } }