Made assembler a component so it can be queried for its status and assembly can be started automatically.

Cleaned up textures folder a little.
This commit is contained in:
Florian Nücke 2014-08-11 16:54:07 +02:00
parent 800e9428ec
commit 16b52c8e90
19 changed files with 34 additions and 19 deletions

Binary file not shown.

View File

Before

Width:  |  Height:  |  Size: 179 B

After

Width:  |  Height:  |  Size: 179 B

View File

@ -34,9 +34,9 @@ object Textures extends ResourceManagerReloadListener {
val blockRobot = new ResourceLocation(Settings.resourceDomain, "textures/blocks/robot.png")
val blockScreenUpIndicator = new ResourceLocation(Settings.resourceDomain, "textures/blocks/screen/up_indicator.png")
val upgradeCrafting = new ResourceLocation(Settings.resourceDomain, "textures/items/upgrade_crafting_equipped.png")
val upgradeGenerator = new ResourceLocation(Settings.resourceDomain, "textures/items/upgrade_generator_equipped.png")
val upgradeInventory = new ResourceLocation(Settings.resourceDomain, "textures/items/upgrade_inventory_equipped.png")
val upgradeCrafting = new ResourceLocation(Settings.resourceDomain, "textures/model/UpgradeCrafting.png")
val upgradeGenerator = new ResourceLocation(Settings.resourceDomain, "textures/model/UpgradeGenerator.png")
val upgradeInventory = new ResourceLocation(Settings.resourceDomain, "textures/model/UpgradeInventory.png")
object Cable {
var iconCap: Icon = _

View File

@ -18,19 +18,19 @@ object Icons {
def onItemIconRegister(e: TextureStitchEvent.Pre) {
val iconRegister = e.map
if (iconRegister.textureType == 1) {
bySlotType += Slot.Card -> iconRegister.registerIcon(Settings.resourceDomain + ":icon_card")
bySlotType += Slot.Disk -> iconRegister.registerIcon(Settings.resourceDomain + ":icon_disk")
bySlotType += Slot.HardDiskDrive -> iconRegister.registerIcon(Settings.resourceDomain + ":icon_hdd")
bySlotType += Slot.Memory -> iconRegister.registerIcon(Settings.resourceDomain + ":icon_ram")
bySlotType += Slot.Processor -> iconRegister.registerIcon(Settings.resourceDomain + ":icon_cpu")
bySlotType += Slot.Tool -> iconRegister.registerIcon(Settings.resourceDomain + ":icon_tool")
bySlotType += Slot.Upgrade -> iconRegister.registerIcon(Settings.resourceDomain + ":icon_upgrade")
bySlotType += Slot.UpgradeContainer -> iconRegister.registerIcon(Settings.resourceDomain + ":icon_upgrade_dynamic")
bySlotType += Slot.Card -> iconRegister.registerIcon(Settings.resourceDomain + ":icons/card")
bySlotType += Slot.Disk -> iconRegister.registerIcon(Settings.resourceDomain + ":icons/floppy")
bySlotType += Slot.HardDiskDrive -> iconRegister.registerIcon(Settings.resourceDomain + ":icons/hdd")
bySlotType += Slot.Memory -> iconRegister.registerIcon(Settings.resourceDomain + ":icons/memory")
bySlotType += Slot.Processor -> iconRegister.registerIcon(Settings.resourceDomain + ":icons/cpu")
bySlotType += Slot.Tool -> iconRegister.registerIcon(Settings.resourceDomain + ":icons/tool")
bySlotType += Slot.Upgrade -> iconRegister.registerIcon(Settings.resourceDomain + ":icons/upgrade")
bySlotType += Slot.UpgradeContainer -> iconRegister.registerIcon(Settings.resourceDomain + ":icons/container")
byTier += Tier.None -> iconRegister.registerIcon(Settings.resourceDomain + ":icon_na")
byTier += Tier.One -> iconRegister.registerIcon(Settings.resourceDomain + ":icon_tier0")
byTier += Tier.Two -> iconRegister.registerIcon(Settings.resourceDomain + ":icon_tier1")
byTier += Tier.Three -> iconRegister.registerIcon(Settings.resourceDomain + ":icon_tier2")
byTier += Tier.None -> iconRegister.registerIcon(Settings.resourceDomain + ":icons/na")
byTier += Tier.One -> iconRegister.registerIcon(Settings.resourceDomain + ":icons/tier0")
byTier += Tier.Two -> iconRegister.registerIcon(Settings.resourceDomain + ":icons/tier1")
byTier += Tier.Three -> iconRegister.registerIcon(Settings.resourceDomain + ":icons/tier2")
}
}

View File

@ -3,7 +3,7 @@ package li.cil.oc.common.tileentity
import cpw.mods.fml.relauncher.{Side, SideOnly}
import li.cil.oc.api.Driver
import li.cil.oc.api.driver.{Slot, UpgradeContainer}
import li.cil.oc.api.network.{SidedEnvironment, Visibility}
import li.cil.oc.api.network._
import li.cil.oc.common.{InventorySlots, Tier}
import li.cil.oc.server.{PacketSender => ServerPacketSender}
import li.cil.oc.util.ExtendedNBT._
@ -14,7 +14,8 @@ import net.minecraft.nbt.NBTTagCompound
import net.minecraftforge.common.ForgeDirection
class RobotAssembler extends traits.Environment with traits.PowerAcceptor with traits.Inventory with traits.Rotatable with SidedEnvironment {
val node = api.Network.newNode(this, Visibility.None).
val node = api.Network.newNode(this, Visibility.Network).
withComponent("assembler").
withConnector(Settings.get.bufferConverter).
create()
@ -55,11 +56,11 @@ class RobotAssembler extends traits.Environment with traits.PowerAcceptor with t
if (caseTier >= 0) Settings.robotComplexityByTier(caseTier) else 0
}
def start(finishImmediately: Boolean) {
def start(finishImmediately: Boolean = false): Boolean = this.synchronized {
if (!isAssembling && robot.isEmpty && complexity <= maxComplexity) {
for (slot <- 0 until getSizeInventory) {
val stack = getStackInSlot(slot)
if (stack != null && !isItemValidForSlot(slot, stack)) return
if (stack != null && !isItemValidForSlot(slot, stack)) return false
}
val data = new ItemUtils.RobotData()
data.tier = ItemUtils.caseTier(items(0).get)
@ -87,11 +88,25 @@ class RobotAssembler extends traits.Environment with traits.PowerAcceptor with t
for (slot <- 0 until getSizeInventory) items(slot) = None
onInventoryChanged()
true
}
else false
}
// ----------------------------------------------------------------------- //
@Callback(doc = """function(): string, number[, number] -- The current state of the assember, `busy' or `idle', followed by the progress or complexity and maximum complexity, respectively.""")
def status(context: Context, args: Arguments): Array[Object] = {
if (isAssembling) result("busy", progress)
else result("idle", complexity, maxComplexity)
}
@Callback(doc = """function():boolean -- Start assembling, if possible. Returns whether assembly was started or not.""")
def start(context: Context, args: Arguments): Array[Object] = result(start())
// ----------------------------------------------------------------------- //
override def canUpdate = isServer
override def updateEntity() {