more abstract bus bootstrapping, added item

This commit is contained in:
Florian Nücke 2014-01-03 16:47:16 +01:00
parent f194b4a438
commit f0e055ba77
8 changed files with 115 additions and 43 deletions

View File

@ -6,57 +6,58 @@ import net.minecraft.item.ItemStack
import net.minecraftforge.oredict.OreDictionary
object Items {
var multi: item.Delegator = null
var multi: item.Delegator = _
// ----------------------------------------------------------------------- //
// Tools
var analyzer: item.Analyzer = null
var analyzer: item.Analyzer = _
// ----------------------------------------------------------------------- //
// Memory
var ram1, ram2, ram3: item.Memory = null
var ram1, ram2, ram3: item.Memory = _
// ----------------------------------------------------------------------- //
// Storage
var floppyDisk: item.FloppyDisk = null
var hdd1, hdd2, hdd3: item.HardDiskDrive = null
var floppyDisk: item.FloppyDisk = _
var hdd1, hdd2, hdd3: item.HardDiskDrive = _
// ----------------------------------------------------------------------- //
// Cards
var gpu1, gpu2, gpu3: item.GraphicsCard = null
var lan: item.NetworkCard = null
var rs: item.RedstoneCard = null
var wlan: item.WirelessNetworkCard = null
var abstractBus: item.AbstractBusCard = _
var gpu1, gpu2, gpu3: item.GraphicsCard = _
var lan: item.NetworkCard = _
var rs: item.RedstoneCard = _
var wlan: item.WirelessNetworkCard = _
// ----------------------------------------------------------------------- //
// Upgrades
var upgradeCrafting: item.UpgradeCrafting = null
var upgradeGenerator: item.UpgradeGenerator = null
var upgradeNavigation: item.UpgradeNavigation = null
var upgradeSign: item.UpgradeSign = null
var upgradeSolarGenerator: item.UpgradeSolarGenerator = null
var upgradeCrafting: item.UpgradeCrafting = _
var upgradeGenerator: item.UpgradeGenerator = _
var upgradeNavigation: item.UpgradeNavigation = _
var upgradeSign: item.UpgradeSign = _
var upgradeSolarGenerator: item.UpgradeSolarGenerator = _
// ----------------------------------------------------------------------- //
// Crafting
var ironNugget: item.IronNugget = null
var cuttingWire: item.CuttingWire = null
var acid: item.Acid = null
var disk: item.Disk = null
var ironNugget: item.IronNugget = _
var cuttingWire: item.CuttingWire = _
var acid: item.Acid = _
var disk: item.Disk = _
var buttonGroup: item.ButtonGroup = null
var arrowKeys: item.ArrowKeys = null
var numPad: item.NumPad = null
var buttonGroup: item.ButtonGroup = _
var arrowKeys: item.ArrowKeys = _
var numPad: item.NumPad = _
var transistor: item.Transistor = null
var chip1, chip2, chip3: item.Microchip = null
var alu: item.ALU = null
var cpu: item.CPU = null
var cu: item.ControlUnit = null
var transistor: item.Transistor = _
var chip1, chip2, chip3: item.Microchip = _
var alu: item.ALU = _
var cpu: item.CPU = _
var cu: item.ControlUnit = _
var rawCircuitBoard: item.RawCircuitBoard = null
var circuitBoard: item.CircuitBoard = null
var pcb: item.PrintedCircuitBoard = null
var card: item.CardBase = null
var rawCircuitBoard: item.RawCircuitBoard = _
var circuitBoard: item.CircuitBoard = _
var pcb: item.PrintedCircuitBoard = _
var card: item.CardBase = _
def init() {
multi = new item.Delegator(Settings.get.itemId)
@ -111,6 +112,8 @@ object Items {
upgradeSign = new item.UpgradeSign(multi)
upgradeNavigation = new item.UpgradeNavigation(multi)
abstractBus = new item.AbstractBusCard(multi)
// ----------------------------------------------------------------------- //
registerExclusive("nuggetIron", ironNugget.createItemStack())

View File

@ -27,16 +27,17 @@ class Proxy {
api.Driver.add(driver.block.CommandBlock)
api.Driver.add(driver.block.NoteBlock)
api.Driver.add(driver.item.UpgradeCrafting)
api.Driver.add(driver.item.AbstractBusCard)
api.Driver.add(driver.item.FileSystem)
api.Driver.add(driver.item.UpgradeGenerator)
api.Driver.add(driver.item.SolarGenerator)
api.Driver.add(driver.item.GraphicsCard)
api.Driver.add(driver.item.UpgradeNavigation)
api.Driver.add(driver.item.Memory)
api.Driver.add(driver.item.NetworkCard)
api.Driver.add(driver.item.UpgradeSign)
api.Driver.add(driver.item.RedstoneCard)
api.Driver.add(driver.item.UpgradeCrafting)
api.Driver.add(driver.item.UpgradeGenerator)
api.Driver.add(driver.item.UpgradeNavigation)
api.Driver.add(driver.item.UpgradeSign)
api.Driver.add(driver.item.UpgradeSolarGenerator)
api.Driver.add(driver.item.WirelessNetworkCard)
Recipes.init()

View File

@ -0,0 +1,27 @@
package li.cil.oc.common.item
import cpw.mods.fml.common.Loader
import java.util
import li.cil.oc.Settings
import li.cil.oc.util.Tooltip
import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
class AbstractBusCard(val parent: Delegator) extends Delegate {
val unlocalizedName = "AbstractBusCard"
// TODO change when done
override val showInItemList = true // Loader.isModLoaded("StargateTech2")
override def tooltipLines(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
tooltip.addAll(Tooltip.get(unlocalizedName))
super.tooltipLines(stack, player, tooltip, advanced)
}
override def registerIcons(iconRegister: IconRegister) = {
super.registerIcons(iconRegister)
icon = iconRegister.registerIcon(Settings.resourceDomain + ":card_abstract_bus")
}
}

View File

@ -1,12 +1,28 @@
package li.cil.oc.common.tileentity
import cpw.mods.fml.common.Optional
import cpw.mods.fml.common.Optional.Interface
import net.minecraft.item.ItemStack
import stargatetech2.api.bus.IBusDevice
@Optional(new Interface(iface = "stargatetech2.api.bus.IBusDevice", modid = "StargateTech2"))
trait AbstractBusAware extends IBusDevice {
@Optional.Interface(iface = "stargatetech2.api.bus.IBusDevice", modid = "StargateTech2")
trait AbstractBusAware extends TileEntity with Inventory with IBusDevice {
def getInterfaces(side: Int) = if (hasAbstractBusCard) Array(null) else null
def getXCoord = x
def getYCoord = y
def getZCoord = z
protected def hasAbstractBusCard = false
override protected def onItemAdded(slot: Int, stack: ItemStack) {
super.onItemAdded(slot, stack)
// TODO if card wasn't present, send device added event
}
override protected def onItemRemoved(slot: Int, stack: ItemStack) {
super.onItemRemoved(slot, stack)
// TODO if no card is present anymore, send device removed event
}
}

View File

@ -62,9 +62,12 @@ class AbstractBus(val owner: tileentity.Computer) extends ManagedComponent with
@LuaCallback("send")
def send(context: Context, args: Arguments): Array[AnyRef] = {
val target = args.checkInteger(0) & 0xFFFF
val data = ???
val packet = new BusPacketLIP(address, target.toShort)
// TODO
val data = args.checkTable(1)
val packet = new BusPacketLIP(address.toShort, target.toShort)
for ((key, value) <- data) {
packet.set(key.toString, value.toString)
}
// TODO generate metadata
sendQueue += packet
result(true)
}
@ -76,6 +79,7 @@ class AbstractBus(val owner: tileentity.Computer) extends ManagedComponent with
busInterface.readFromNBT(nbt, "bus")
isEnabled = nbt.getBoolean("enabled")
address = nbt.getInteger("address") & 0xFFFF
// TODO load queue
}
override def save(nbt: NBTTagCompound) {
@ -83,5 +87,6 @@ class AbstractBus(val owner: tileentity.Computer) extends ManagedComponent with
busInterface.writeToNBT(nbt, "bus")
nbt.setBoolean("enabled", isEnabled)
nbt.setInteger("address", address)
// TODO save queue
}
}

View File

@ -0,0 +1,20 @@
package li.cil.oc.server.driver.item
import cpw.mods.fml.common.Loader
import li.cil.oc.Items
import li.cil.oc.api.driver.Slot
import li.cil.oc.common.tileentity
import li.cil.oc.server.component
import net.minecraft.item.ItemStack
import net.minecraft.tileentity.{TileEntity => MCTileEntity}
object AbstractBusCard extends Item {
def worksWith(stack: ItemStack) = isOneOf(stack, Items.abstractBus)
override def createEnvironment(stack: ItemStack, container: MCTileEntity) = container match {
case computer: tileentity.Computer if Loader.isModLoaded("StargateTech2") => new component.AbstractBus(computer)
case _ => null
}
def slot(stack: ItemStack) = Slot.Card
}

View File

@ -6,7 +6,7 @@ import li.cil.oc.server.component
import net.minecraft.item.ItemStack
import net.minecraft.tileentity.{TileEntity => MCTileEntity}
object SolarGenerator extends Item {
object UpgradeSolarGenerator extends Item {
override def worksWith(stack: ItemStack) = isOneOf(stack, Items.upgradeSolarGenerator)
override def createEnvironment(stack: ItemStack, container: MCTileEntity) = new component.UpgradeSolarGenerator(container)

View File

@ -47,7 +47,7 @@ public final class BusPacketLIP extends BusPacket {
}
}
protected BusPacketLIP(short sender, short target) {
public BusPacketLIP(short sender, short target) {
super(sender, target, true);
}