118 lines
2 KiB
Java
118 lines
2 KiB
Java
package resonantinduction.electrical.armbot.command;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import resonantinduction.electrical.armbot.TaskBase;
|
|
import resonantinduction.old.api.coding.IRedirectTask;
|
|
import resonantinduction.old.api.coding.ITask;
|
|
import universalelectricity.api.vector.Vector2;
|
|
|
|
/** @author DarkGuardsman */
|
|
public class TaskGOTO extends TaskBase implements IRedirectTask
|
|
{
|
|
protected ITask task;
|
|
protected Vector2 taskPos;
|
|
protected boolean render = true;
|
|
protected List<Vector2> exits = new ArrayList<Vector2>();
|
|
|
|
public TaskGOTO()
|
|
{
|
|
super("GoTo", TaskType.DECISION);
|
|
}
|
|
|
|
public TaskGOTO(int x, int y)
|
|
{
|
|
this();
|
|
this.taskPos = new Vector2(x, y);
|
|
}
|
|
|
|
public TaskGOTO(boolean render)
|
|
{
|
|
this();
|
|
this.render = render;
|
|
}
|
|
|
|
@Override
|
|
public ITask getExitPoint()
|
|
{
|
|
return task;
|
|
}
|
|
|
|
@Override
|
|
public void refresh()
|
|
{
|
|
super.refresh();
|
|
if (task == null && taskPos != null)
|
|
{
|
|
this.task = this.program.getTaskAt(taskPos.intX(), taskPos.intY());
|
|
}
|
|
this.exits.clear();
|
|
if (this.task != null)
|
|
{
|
|
this.exits.add(new Vector2(this.task.getCol(), this.task.getRow()));
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void setExitPoint(int i, ITask task)
|
|
{
|
|
if (i == 0)
|
|
{
|
|
this.task = task;
|
|
}
|
|
}
|
|
|
|
public void setExitPoint(int i, Vector2 vector2)
|
|
{
|
|
if (i == 0)
|
|
{
|
|
this.taskPos = vector2;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public int getMaxExitPoints()
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
@Override
|
|
public boolean render()
|
|
{
|
|
return this.render;
|
|
}
|
|
|
|
@Override
|
|
public void load(NBTTagCompound nbt)
|
|
{
|
|
super.loadProgress(nbt);
|
|
this.taskPos = new Vector2(nbt.getDouble("entryX"), (nbt.getDouble("entryY")));
|
|
}
|
|
|
|
@Override
|
|
public void save(NBTTagCompound nbt)
|
|
{
|
|
super.saveProgress(nbt);
|
|
if (this.task != null)
|
|
{
|
|
nbt.setDouble("entryX", this.task.getCol());
|
|
nbt.setDouble("entryY", this.task.getRow());
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public TaskBase clone()
|
|
{
|
|
return new TaskGOTO();
|
|
}
|
|
|
|
@Override
|
|
public List<Vector2> getExits()
|
|
{
|
|
// TODO Auto-generated method stub
|
|
return exits;
|
|
}
|
|
|
|
}
|