Added more task related classes
This commit is contained in:
parent
bd78faab1f
commit
57f8a12c6d
6 changed files with 143 additions and 12 deletions
14
src/common/assemblyline/ai/TaskIdle.java
Normal file
14
src/common/assemblyline/ai/TaskIdle.java
Normal file
|
@ -0,0 +1,14 @@
|
|||
package assemblyline.ai;
|
||||
|
||||
import net.minecraft.src.TileEntity;
|
||||
|
||||
public class TaskIdle extends Task
|
||||
{
|
||||
private TileEntity tileEntity;
|
||||
|
||||
@Override
|
||||
public void setTileEntity(TileEntity tileEntity)
|
||||
{
|
||||
this.tileEntity = tileEntity;
|
||||
}
|
||||
}
|
|
@ -10,6 +10,11 @@ public class TaskManager
|
|||
{
|
||||
private final List<Task> tasks = new ArrayList<Task>();
|
||||
|
||||
private int ticks = 0;
|
||||
|
||||
/**
|
||||
* Must be called every tick by a tileEntity.
|
||||
*/
|
||||
public void onUpdate()
|
||||
{
|
||||
/**
|
||||
|
@ -37,6 +42,8 @@ public class TaskManager
|
|||
FMLLog.severe("Failed to execute task in Assembly Line.");
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
this.ticks++;
|
||||
}
|
||||
|
||||
public void addTask(TileEntity tileEntity, Task task)
|
||||
|
|
49
src/common/assemblyline/machines/crafter/TaskArmCollect.java
Normal file
49
src/common/assemblyline/machines/crafter/TaskArmCollect.java
Normal file
|
@ -0,0 +1,49 @@
|
|||
package assemblyline.machines.crafter;
|
||||
|
||||
import net.minecraft.src.EntityItem;
|
||||
import net.minecraft.src.TileEntity;
|
||||
import assemblyline.ai.Task;
|
||||
|
||||
/**
|
||||
* Used by arms to collect items in a specific
|
||||
* region.
|
||||
*
|
||||
* @author Calclavia
|
||||
*/
|
||||
public class TaskArmCollect extends Task
|
||||
{
|
||||
private TileEntityCraftingArm tileEntity;
|
||||
|
||||
/**
|
||||
* The item to be collected.
|
||||
*/
|
||||
private EntityItem entityItem;
|
||||
|
||||
public TaskArmCollect(EntityItem entityItem)
|
||||
{
|
||||
this.entityItem = entityItem;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean doTask()
|
||||
{
|
||||
super.doTask();
|
||||
|
||||
if(entityItem == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Slowly stretch down the arm's model and grab the item
|
||||
*/
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTileEntity(TileEntity tileEntity)
|
||||
{
|
||||
this.tileEntity = (TileEntityCraftingArm) tileEntity;
|
||||
}
|
||||
}
|
66
src/common/assemblyline/machines/crafter/TaskArmSearch.java
Normal file
66
src/common/assemblyline/machines/crafter/TaskArmSearch.java
Normal file
|
@ -0,0 +1,66 @@
|
|||
package assemblyline.machines.crafter;
|
||||
|
||||
import net.minecraft.src.AxisAlignedBB;
|
||||
import net.minecraft.src.Entity;
|
||||
import net.minecraft.src.TileEntity;
|
||||
import net.minecraft.src.World;
|
||||
import assemblyline.ai.Task;
|
||||
|
||||
/**
|
||||
* Used by arms to search for entities in a region
|
||||
*
|
||||
* @author Calclavia
|
||||
*/
|
||||
public class TaskArmSearch extends Task
|
||||
{
|
||||
private TileEntityCraftingArm tileEntity;
|
||||
|
||||
/**
|
||||
* The item to be collected.
|
||||
*/
|
||||
private Class<? extends Entity> entityToInclude;
|
||||
|
||||
private float searchSpeed;
|
||||
|
||||
private World worldObj;
|
||||
|
||||
private double radius;
|
||||
|
||||
private Entity foundEntity;
|
||||
|
||||
public TaskArmSearch(Class<? extends Entity> entityToInclude, double radius, float searchSpeed)
|
||||
{
|
||||
this.entityToInclude = entityToInclude;
|
||||
this.radius = radius;
|
||||
this.searchSpeed = searchSpeed;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTaskStart()
|
||||
{
|
||||
this.foundEntity = (Entity) this.worldObj.getEntitiesWithinAABB(this.entityToInclude, AxisAlignedBB.getBoundingBox(this.tileEntity.xCoord - this.radius, this.tileEntity.yCoord - this.radius, this.tileEntity.zCoord - this.radius, this.tileEntity.xCoord + this.radius, this.tileEntity.yCoord + this.radius, this.tileEntity.zCoord + this.radius)).get(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean doTask()
|
||||
{
|
||||
super.doTask();
|
||||
|
||||
if (this.entityToInclude == null || this.foundEntity == null) { return false; }
|
||||
|
||||
/**
|
||||
* Move the robotic arm around and emulate
|
||||
* an item search. Then initiate a collect task.
|
||||
*/
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTileEntity(TileEntity tileEntity)
|
||||
{
|
||||
this.tileEntity = (TileEntityCraftingArm) tileEntity;
|
||||
this.worldObj = this.tileEntity.worldObj;
|
||||
}
|
||||
}
|
|
@ -11,6 +11,7 @@ import net.minecraft.src.TileEntity;
|
|||
import net.minecraftforge.common.ForgeDirection;
|
||||
import universalelectricity.prefab.TileEntityElectricityReceiver;
|
||||
import universalelectricity.prefab.network.IPacketReceiver;
|
||||
import assemblyline.ai.TaskManager;
|
||||
|
||||
import com.google.common.io.ByteArrayDataInput;
|
||||
|
||||
|
@ -21,10 +22,7 @@ public class TileEntityCraftingArm extends TileEntityElectricityReceiver impleme
|
|||
*/
|
||||
protected ItemStack[] containingItems = new ItemStack[this.getSizeInventory()];
|
||||
|
||||
public enum armTasks
|
||||
{
|
||||
NONE, COLLECT, MINE, PLACE, SORT, CRAFT
|
||||
}
|
||||
private TaskManager taskManager = new TaskManager();
|
||||
|
||||
/**
|
||||
* Entity robotic arm to be used with this
|
||||
|
@ -41,10 +39,6 @@ public class TileEntityCraftingArm extends TileEntityElectricityReceiver impleme
|
|||
* does this arm have a task to do
|
||||
*/
|
||||
public boolean hasTask = true;
|
||||
/**
|
||||
* what kind of task this arm should do
|
||||
*/
|
||||
public armTasks task = armTasks.NONE;
|
||||
|
||||
private int playerUsing = 0;
|
||||
|
||||
|
@ -52,6 +46,8 @@ public class TileEntityCraftingArm extends TileEntityElectricityReceiver impleme
|
|||
{
|
||||
super.updateEntity();
|
||||
|
||||
taskManager.onUpdate();
|
||||
|
||||
if (this.ticks % 5 == 0 && !this.isDisabled() && this.hasTask && EntityArm != null)
|
||||
{
|
||||
this.jouleReceived -= this.wattUsed;
|
||||
|
@ -110,7 +106,6 @@ public class TileEntityCraftingArm extends TileEntityElectricityReceiver impleme
|
|||
@Override
|
||||
public void handlePacketData(INetworkManager network, int packetType, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -106,6 +106,6 @@ public class GuiSorter extends GuiContainer
|
|||
{
|
||||
this.drawTexturedModalRect(containerWidth + 17 + i * 18, containerHeight + 17, 176, +(tileEntity.guiButtons[i] ? 12 : 0), 12, 12);
|
||||
}
|
||||
this.fontRenderer.drawString("Reject: " + (tileEntity.guiButtons[0] ? "Inv" : "Other"), containerWidth + 108, containerHeight + 22, 4210752);
|
||||
this.fontRenderer.drawString((tileEntity.guiButtons[0] ? "Inv" : "Other"), containerWidth + 108, containerHeight + 22, 4210752);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue