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

View File

@ -27,16 +27,17 @@ class Proxy {
api.Driver.add(driver.block.CommandBlock) api.Driver.add(driver.block.CommandBlock)
api.Driver.add(driver.block.NoteBlock) 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.FileSystem)
api.Driver.add(driver.item.UpgradeGenerator)
api.Driver.add(driver.item.SolarGenerator)
api.Driver.add(driver.item.GraphicsCard) api.Driver.add(driver.item.GraphicsCard)
api.Driver.add(driver.item.UpgradeNavigation)
api.Driver.add(driver.item.Memory) api.Driver.add(driver.item.Memory)
api.Driver.add(driver.item.NetworkCard) api.Driver.add(driver.item.NetworkCard)
api.Driver.add(driver.item.UpgradeSign)
api.Driver.add(driver.item.RedstoneCard) 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) api.Driver.add(driver.item.WirelessNetworkCard)
Recipes.init() 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 package li.cil.oc.common.tileentity
import cpw.mods.fml.common.Optional import cpw.mods.fml.common.Optional
import cpw.mods.fml.common.Optional.Interface import net.minecraft.item.ItemStack
import stargatetech2.api.bus.IBusDevice import stargatetech2.api.bus.IBusDevice
@Optional(new Interface(iface = "stargatetech2.api.bus.IBusDevice", modid = "StargateTech2")) @Optional.Interface(iface = "stargatetech2.api.bus.IBusDevice", modid = "StargateTech2")
trait AbstractBusAware extends IBusDevice { trait AbstractBusAware extends TileEntity with Inventory with IBusDevice {
def getInterfaces(side: Int) = if (hasAbstractBusCard) Array(null) else null def getInterfaces(side: Int) = if (hasAbstractBusCard) Array(null) else null
def getXCoord = x
def getYCoord = y
def getZCoord = z
protected def hasAbstractBusCard = false 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") @LuaCallback("send")
def send(context: Context, args: Arguments): Array[AnyRef] = { def send(context: Context, args: Arguments): Array[AnyRef] = {
val target = args.checkInteger(0) & 0xFFFF val target = args.checkInteger(0) & 0xFFFF
val data = ??? val data = args.checkTable(1)
val packet = new BusPacketLIP(address, target.toShort) val packet = new BusPacketLIP(address.toShort, target.toShort)
// TODO for ((key, value) <- data) {
packet.set(key.toString, value.toString)
}
// TODO generate metadata
sendQueue += packet sendQueue += packet
result(true) result(true)
} }
@ -76,6 +79,7 @@ class AbstractBus(val owner: tileentity.Computer) extends ManagedComponent with
busInterface.readFromNBT(nbt, "bus") busInterface.readFromNBT(nbt, "bus")
isEnabled = nbt.getBoolean("enabled") isEnabled = nbt.getBoolean("enabled")
address = nbt.getInteger("address") & 0xFFFF address = nbt.getInteger("address") & 0xFFFF
// TODO load queue
} }
override def save(nbt: NBTTagCompound) { override def save(nbt: NBTTagCompound) {
@ -83,5 +87,6 @@ class AbstractBus(val owner: tileentity.Computer) extends ManagedComponent with
busInterface.writeToNBT(nbt, "bus") busInterface.writeToNBT(nbt, "bus")
nbt.setBoolean("enabled", isEnabled) nbt.setBoolean("enabled", isEnabled)
nbt.setInteger("address", address) 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.item.ItemStack
import net.minecraft.tileentity.{TileEntity => MCTileEntity} 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 worksWith(stack: ItemStack) = isOneOf(stack, Items.upgradeSolarGenerator)
override def createEnvironment(stack: ItemStack, container: MCTileEntity) = new component.UpgradeSolarGenerator(container) 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); super(sender, target, true);
} }