Fixery for refactory.

This commit is contained in:
Florian Nücke 2015-02-04 03:52:05 +01:00
parent f2e6cf1896
commit 5e313d4fe7
5 changed files with 14 additions and 37 deletions

View File

@ -17,8 +17,8 @@ import net.minecraftforge.fluids.IFluidHandler;
* follows:
* <ul>
* <li>Tool</li>
* <li><tt>containerCount</tt> hot-swappable components.</li>
* <li><tt>inventorySize</tt> internal inventory slots.</li>
* <li><tt>equipmentInventory.getSizeInventory</tt> hot-swappable components.</li>
* <li><tt>mainInventory.getSizeInventory</tt> internal inventory slots.</li>
* <li><tt>componentCount</tt> hard-wired components.</li>
* </ul>
* Note that there may be no hot-swappable (or even built-in) components or
@ -28,26 +28,11 @@ import net.minecraftforge.fluids.IFluidHandler;
* This interface is <em>not meant to be implemented</em>, just used.
*/
public interface Robot extends Agent, Environment, EnvironmentHost, Rotatable, Tiered, ISidedInventory, IFluidHandler {
/**
* The number of hot-swappable component slots in this robot.
* <p/>
* <em>Note</em>: this will always be three, regardless of the number of
* installed containers. For unused slots the inventory will simply be
* empty at that slot.
*/
int containerCount();
/**
* The number of built-in components in this robot.
*/
int componentCount();
/**
* The size of the internal inventory in this robot, excluding tool and
* component slots.
*/
int inventorySize();
/**
* Get the environment for the component in the specified slot.
* <p/>

View File

@ -139,8 +139,10 @@ class Robot extends traits.Computer with traits.PowerInformation with IFluidHand
override def setSelectedSlot(index: Int): Unit = {
selectedSlot = index max 0 min mainInventory.getSizeInventory - 1
if (world != null) {
ServerPacketSender.sendRobotSelectedSlotChange(this)
}
}
val tank = new internal.MultiTank {
override def tankCount = Robot.this.tankCount
@ -157,7 +159,7 @@ class Robot extends traits.Computer with traits.PowerInformation with IFluidHand
// Fixed number of containers (mostly due to GUI limitation, but also because
// I find three to be a large enough number for sufficient flexibility).
override def containerCount = 3
def containerCount = 3
override def componentCount = info.components.length

View File

@ -40,10 +40,16 @@ class RobotProxy(val robot: Robot) extends traits.Computer with traits.PowerInfo
override def tank = robot.tank
override def selectedSlot = robot.selectedSlot
override def setSelectedSlot(index: Int) = robot.setSelectedSlot(index)
override def selectedTank = robot.selectedTank
override def setSelectedTank(index: Int) = robot.setSelectedTank(index)
override def player() = robot.player()
// ----------------------------------------------------------------------- //
override def connectComponents() {}
@ -56,20 +62,12 @@ class RobotProxy(val robot: Robot) extends traits.Computer with traits.PowerInfo
@SideOnly(Side.CLIENT)
override def setRunning(value: Boolean) = robot.setRunning(value)
override def player() = robot.player()
override def containerCount = robot.containerCount
// ----------------------------------------------------------------------- //
override def componentCount = robot.componentCount
override def inventorySize = robot.inventorySize
override def getComponentInSlot(index: Int) = robot.getComponentInSlot(index)
override def selectedSlot = robot.selectedSlot
override def selectedTank = robot.selectedTank
override def synchronizeSlot(slot: Int) = robot.synchronizeSlot(slot)
// ----------------------------------------------------------------------- //

View File

@ -188,6 +188,7 @@ class Machine(val host: MachineHost) extends prefab.ManagedEnvironment with mach
override def start(): Boolean = state.synchronized(state.top match {
case Machine.State.Stopped =>
onHostChanged()
processAddedComponents()
verifyComponents()
if (!Settings.get.ignorePower && node.globalBuffer < cost) {

View File

@ -1,7 +1,6 @@
package li.cil.oc.util
import li.cil.oc.api.internal.MultiTank
import li.cil.oc.api.internal.Robot
import li.cil.oc.api.machine.Arguments
import net.minecraft.inventory.IInventory
import net.minecraftforge.common.util.ForgeDirection
@ -38,14 +37,6 @@ object ExtendedArguments {
else default
}
def checkSlot(robot: Robot, n: Int) = {
val slot = args.checkInteger(n) - 1
if (slot < 0 || slot >= robot.inventorySize) {
throw new IllegalArgumentException("invalid slot")
}
slot + 1 + robot.containerCount
}
def checkTank(multi: MultiTank, n: Int) = {
val tank = args.checkInteger(n) - 1
if (tank < 0 || tank >= multi.tankCount) {