electrodynamics/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskIF.java

103 lines
1.9 KiB
Java
Raw Normal View History

2014-01-11 10:44:07 +01:00
package resonantinduction.electrical.armbot.task;
2014-01-08 15:18:24 +01:00
import java.util.ArrayList;
import java.util.List;
2014-02-13 05:42:56 +01:00
import resonantinduction.core.ArgumentData;
2014-01-10 09:00:46 +01:00
import resonantinduction.electrical.armbot.TaskBaseLogic;
2014-01-11 06:59:55 +01:00
import resonantinduction.electrical.encoder.coding.IProgrammableMachine;
import resonantinduction.electrical.encoder.coding.ITask;
2014-01-08 15:18:24 +01:00
import universalelectricity.api.vector.Vector2;
/** @author DarkGuardsman */
public class TaskIF extends TaskBaseLogic
{
protected ITask exitTruePoint = null;
protected ITask exitFalsePoint = null;
protected List<Vector2> exits = new ArrayList<Vector2>();
protected boolean isTrue = false;
public TaskIF()
{
super("IF");
this.args.add(new ArgumentData("check", "statement"));
this.args.add(new ArgumentData("compare", "statement"));
this.UV = new Vector2(0, 120);
}
public TaskIF(ITask trueExit, ITask falseExit)
{
this();
this.exitTruePoint = trueExit;
this.exitFalsePoint = falseExit;
}
@Override
public void refresh()
{
super.refresh();
if (this.getArg("check") != null && this.getArg("compare") != null)
{
this.isTrue = this.getArg("check").equals(this.getArg("compare"));
}
if (exitTruePoint == null)
{
exitTruePoint = this.program.getTaskAt(this.getCol() + 1, this.getRow());
}
if (exitFalsePoint == null)
{
exitFalsePoint = this.program.getTaskAt(this.getCol(), this.getRow() + 1);
;
}
}
@Override
public TaskIF clone()
{
return new TaskIF();
}
@Override
public ITask getExitPoint()
{
if (this.isTrue)
{
return this.exitTruePoint;
}
return this.exitFalsePoint;
}
@Override
public int getMaxExitPoints()
{
return 2;
}
@Override
public void setExitPoint(int i, ITask task)
{
if (i == 0)
{
this.exitFalsePoint = task;
}
else if (i == 1)
{
this.exitTruePoint = task;
}
}
@Override
public boolean canUseTask(IProgrammableMachine device)
{
return true;
}
@Override
public List<Vector2> getExits()
{
return this.exits;
}
}