mirror of
https://github.com/MightyPirates/OpenComputers.git
synced 2025-09-19 12:17:17 -04:00
added cpu slot to computer cases, computer cases now also require a cpu to define the number of components they support
This commit is contained in:
parent
87f5192724
commit
65d951d50c
@ -102,7 +102,7 @@ oc:tooltip.Case=Das Computergehäuse ist der essentielle Grundbaustein für eine
|
|||||||
oc:tooltip.Charger=Lädt Roboter mit Energie aus Kondensatoren auf. Die Ladegeschwindigkeit hängt vom eingehenden §fRedstonesignal§7 ab, wobei kein Signal "nicht laden" und ein Signal mit maximaler Stärke "schnellstmöglich laden" heißt.
|
oc:tooltip.Charger=Lädt Roboter mit Energie aus Kondensatoren auf. Die Ladegeschwindigkeit hängt vom eingehenden §fRedstonesignal§7 ab, wobei kein Signal "nicht laden" und ein Signal mit maximaler Stärke "schnellstmöglich laden" heißt.
|
||||||
oc:tooltip.CircuitBoard=Mühsam ernährt sich das Eichhörnchen. Wenn es groß wird, wird es mal eine gedruckte Leiterplatte.
|
oc:tooltip.CircuitBoard=Mühsam ernährt sich das Eichhörnchen. Wenn es groß wird, wird es mal eine gedruckte Leiterplatte.
|
||||||
oc:tooltip.ControlUnit=Klingt wichtig, ist es auch. Man baut daraus immerhin CPUs. Wie könnte es da nicht wichtig sein.
|
oc:tooltip.ControlUnit=Klingt wichtig, ist es auch. Man baut daraus immerhin CPUs. Wie könnte es da nicht wichtig sein.
|
||||||
oc:tooltip.CPU=Kernstück eines jeden Computers. Die Taktrate hat einen leichten Schatten, aber was kann man von einer Taschensonnenuhr schon erwarten?
|
oc:tooltip.CPU=Kernstück eines jeden Computers. Die Taktrate hat einen leichten Schatten, aber was kann man von einer Taschensonnenuhr schon erwarten?[nl] Unterstützte Komponenten: §f%s§7.
|
||||||
oc:tooltip.CuttingWire=Wird gebraucht, um Tonblöcke in Leiterplattenform zu bekommen. Vermutlich das ineffizienteste Werkzeug in der Geschichte der Menschheit, da es nach einer Verwendung kaputt geht.
|
oc:tooltip.CuttingWire=Wird gebraucht, um Tonblöcke in Leiterplattenform zu bekommen. Vermutlich das ineffizienteste Werkzeug in der Geschichte der Menschheit, da es nach einer Verwendung kaputt geht.
|
||||||
oc:tooltip.Disk=Sehr einfaches Speichermedium, das verwendet werden kann, um Disketten und Festplatten bauen.
|
oc:tooltip.Disk=Sehr einfaches Speichermedium, das verwendet werden kann, um Disketten und Festplatten bauen.
|
||||||
oc:tooltip.DiskDrive.CC=ComputerCraft-Disketten werden §aunterstützt§7.
|
oc:tooltip.DiskDrive.CC=ComputerCraft-Disketten werden §aunterstützt§7.
|
||||||
|
@ -102,7 +102,7 @@ oc:tooltip.Case=The Computer Case is the basic building block for computers and
|
|||||||
oc:tooltip.Charger=Transfers energy from capacitors into adjacent robots. The transfer rate depends on the incoming §fredstone signal§7, where no signal means don't charge robots, and maximum strength means charge at full speed.
|
oc:tooltip.Charger=Transfers energy from capacitors into adjacent robots. The transfer rate depends on the incoming §fredstone signal§7, where no signal means don't charge robots, and maximum strength means charge at full speed.
|
||||||
oc:tooltip.CircuitBoard=Now we're getting somewhere. Can be etched to obtain a printed circuit board.
|
oc:tooltip.CircuitBoard=Now we're getting somewhere. Can be etched to obtain a printed circuit board.
|
||||||
oc:tooltip.ControlUnit=This is the unit that... controls... stuff. You need it to build a CPU. So yeah, totally important.
|
oc:tooltip.ControlUnit=This is the unit that... controls... stuff. You need it to build a CPU. So yeah, totally important.
|
||||||
oc:tooltip.CPU=An essential component of all computers. The clock rate is a bit unreliable, but what do you expect when it runs on a pocket sundial?
|
oc:tooltip.CPU=An essential component of all computers. The clock rate is a bit unreliable, but what do you expect when it runs on a pocket sundial?[nl] Supported components: §f%s§7.
|
||||||
oc:tooltip.CuttingWire=Used to cut clay blocks into circuit board shape. Breaks after one use, which probably makes it the most inefficient tool ever.
|
oc:tooltip.CuttingWire=Used to cut clay blocks into circuit board shape. Breaks after one use, which probably makes it the most inefficient tool ever.
|
||||||
oc:tooltip.Disk=Primitive medium that can be used to build persistent storage devices.
|
oc:tooltip.Disk=Primitive medium that can be used to build persistent storage devices.
|
||||||
oc:tooltip.DiskDrive.CC=ComputerCraft floppies are §asupported§7.
|
oc:tooltip.DiskDrive.CC=ComputerCraft floppies are §asupported§7.
|
||||||
|
@ -10,7 +10,7 @@ class Case(playerInventory: InventoryPlayer, computer: tileentity.Case) extends
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (i <- 0 to (if (computer.tier == 0) 0 else 1)) {
|
for (i <- 0 to (if (computer.tier == 0) 0 else 1)) {
|
||||||
addSlotToContainer(120, 16 + i * slotSize, api.driver.Slot.Memory, computer.maxComponentTierForSlot(getInventory.size))
|
addSlotToContainer(120, 16 + (i + 1) * slotSize, api.driver.Slot.Memory, computer.maxComponentTierForSlot(getInventory.size))
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i <- 0 to (if (computer.tier == 0) 0 else 1)) {
|
for (i <- 0 to (if (computer.tier == 0) 0 else 1)) {
|
||||||
@ -21,6 +21,8 @@ class Case(playerInventory: InventoryPlayer, computer: tileentity.Case) extends
|
|||||||
addSlotToContainer(142, 16 + 2 * slotSize, api.driver.Slot.Disk)
|
addSlotToContainer(142, 16 + 2 * slotSize, api.driver.Slot.Disk)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addSlotToContainer(120, 16, api.driver.Slot.Processor, computer.tier)
|
||||||
|
|
||||||
// Show the player's inventory.
|
// Show the player's inventory.
|
||||||
addPlayerInventorySlots(8, 84)
|
addPlayerInventorySlots(8, 84)
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package li.cil.oc.common.inventory
|
package li.cil.oc.common.inventory
|
||||||
|
|
||||||
import li.cil.oc.api.driver.{Item => ItemDriver}
|
import li.cil.oc.api.driver.{Item => ItemDriver}
|
||||||
|
import li.cil.oc.api.network
|
||||||
import li.cil.oc.api.network.{Node, ManagedEnvironment}
|
import li.cil.oc.api.network.{Node, ManagedEnvironment}
|
||||||
import li.cil.oc.api.{network, driver}
|
|
||||||
import li.cil.oc.server.driver.Registry
|
import li.cil.oc.server.driver.Registry
|
||||||
import li.cil.oc.server.driver.item.Item
|
import li.cil.oc.server.driver.item.Item
|
||||||
import net.minecraft.item.ItemStack
|
import net.minecraft.item.ItemStack
|
||||||
@ -20,14 +20,6 @@ trait ComponentInventory extends Inventory with network.Environment {
|
|||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
def installedMemory = items.foldLeft(0)((sum, stack) => sum + (stack match {
|
|
||||||
case Some(item) => Registry.itemDriverFor(item) match {
|
|
||||||
case Some(driver: driver.Memory) => driver.amount(item)
|
|
||||||
case _ => 0
|
|
||||||
}
|
|
||||||
case _ => 0
|
|
||||||
}))
|
|
||||||
|
|
||||||
def updateComponents() {
|
def updateComponents() {
|
||||||
if (updatingComponents.length > 0) {
|
if (updatingComponents.length > 0) {
|
||||||
for (component <- updatingComponents) {
|
for (component <- updatingComponents) {
|
||||||
|
@ -15,7 +15,7 @@ class CPU(val parent: Delegator, val tier: Int) extends Delegate {
|
|||||||
override def rarity = Array(EnumRarity.common, EnumRarity.uncommon, EnumRarity.rare).apply(tier max 0 min 2)
|
override def rarity = Array(EnumRarity.common, EnumRarity.uncommon, EnumRarity.rare).apply(tier max 0 min 2)
|
||||||
|
|
||||||
override def tooltipLines(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
|
override def tooltipLines(stack: ItemStack, player: EntityPlayer, tooltip: util.List[String], advanced: Boolean) {
|
||||||
tooltip.addAll(Tooltip.get(baseName))
|
tooltip.addAll(Tooltip.get(baseName, Settings.componentCountByTier(tier)))
|
||||||
super.tooltipLines(stack, player, tooltip, advanced)
|
super.tooltipLines(stack, player, tooltip, advanced)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package li.cil.oc.common.tileentity
|
package li.cil.oc.common.tileentity
|
||||||
|
|
||||||
import li.cil.oc.Settings
|
import li.cil.oc.Settings
|
||||||
|
import li.cil.oc.api.driver
|
||||||
import li.cil.oc.api.driver.Slot
|
import li.cil.oc.api.driver.Slot
|
||||||
import li.cil.oc.server.driver.Registry
|
import li.cil.oc.server.driver.Registry
|
||||||
import net.minecraft.entity.player.EntityPlayer
|
import net.minecraft.entity.player.EntityPlayer
|
||||||
@ -10,13 +11,32 @@ import net.minecraft.nbt.NBTTagCompound
|
|||||||
class Case(var tier: Int, isRemote: Boolean) extends Computer(isRemote) {
|
class Case(var tier: Int, isRemote: Boolean) extends Computer(isRemote) {
|
||||||
def this() = this(0, false)
|
def this() = this(0, false)
|
||||||
|
|
||||||
def maxComponents = Settings.componentCountByTier(tier)
|
var maxComponents = 0
|
||||||
|
|
||||||
|
def recomputeMaxComponents() {
|
||||||
|
maxComponents = items.foldLeft(0)((sum, stack) => sum + (stack match {
|
||||||
|
case Some(item) => Registry.itemDriverFor(item) match {
|
||||||
|
case Some(driver: driver.Processor) => driver.supportedComponents(item)
|
||||||
|
case _ => 0
|
||||||
|
}
|
||||||
|
case _ => 0
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
|
||||||
|
def installedMemory = items.foldLeft(0)((sum, stack) => sum + (stack match {
|
||||||
|
case Some(item) => Registry.itemDriverFor(item) match {
|
||||||
|
case Some(driver: driver.Memory) => driver.amount(item)
|
||||||
|
case _ => 0
|
||||||
|
}
|
||||||
|
case _ => 0
|
||||||
|
}))
|
||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
override def readFromNBT(nbt: NBTTagCompound) {
|
override def readFromNBT(nbt: NBTTagCompound) {
|
||||||
tier = nbt.getByte(Settings.namespace + "tier") max 0 min 2
|
tier = nbt.getByte(Settings.namespace + "tier") max 0 min 2
|
||||||
super.readFromNBT(nbt)
|
super.readFromNBT(nbt)
|
||||||
|
recomputeMaxComponents()
|
||||||
}
|
}
|
||||||
|
|
||||||
override def writeToNBT(nbt: NBTTagCompound) {
|
override def writeToNBT(nbt: NBTTagCompound) {
|
||||||
@ -26,12 +46,17 @@ class Case(var tier: Int, isRemote: Boolean) extends Computer(isRemote) {
|
|||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
override def onInventoryChanged() {
|
||||||
|
super.onInventoryChanged()
|
||||||
|
recomputeMaxComponents()
|
||||||
|
}
|
||||||
|
|
||||||
def getInvName = Settings.namespace + "container.Case"
|
def getInvName = Settings.namespace + "container.Case"
|
||||||
|
|
||||||
def getSizeInventory = tier match {
|
def getSizeInventory = tier match {
|
||||||
case 0 => 4
|
case 0 => 5
|
||||||
case 1 => 6
|
case 1 => 7
|
||||||
case 2 => 8
|
case 2 => 9
|
||||||
case _ => 0
|
case _ => 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,6 +73,7 @@ class Case(var tier: Int, isRemote: Boolean) extends Computer(isRemote) {
|
|||||||
case (0 | 1, Some(driver)) => driver.slot(stack) == Slot.Card && driver.tier(stack) <= maxComponentTierForSlot(slot)
|
case (0 | 1, Some(driver)) => driver.slot(stack) == Slot.Card && driver.tier(stack) <= maxComponentTierForSlot(slot)
|
||||||
case (2, Some(driver)) => driver.slot(stack) == Slot.Memory && driver.tier(stack) <= maxComponentTierForSlot(slot)
|
case (2, Some(driver)) => driver.slot(stack) == Slot.Memory && driver.tier(stack) <= maxComponentTierForSlot(slot)
|
||||||
case (3, Some(driver)) => driver.slot(stack) == Slot.HardDiskDrive && driver.tier(stack) <= maxComponentTierForSlot(slot)
|
case (3, Some(driver)) => driver.slot(stack) == Slot.HardDiskDrive && driver.tier(stack) <= maxComponentTierForSlot(slot)
|
||||||
|
case (4, Some(driver)) => driver.slot(stack) == Slot.Processor && driver.tier(stack) <= maxComponentTierForSlot(slot)
|
||||||
case _ => false // Invalid slot.
|
case _ => false // Invalid slot.
|
||||||
}
|
}
|
||||||
case 1 => (slot, Registry.itemDriverFor(stack)) match {
|
case 1 => (slot, Registry.itemDriverFor(stack)) match {
|
||||||
@ -55,6 +81,7 @@ class Case(var tier: Int, isRemote: Boolean) extends Computer(isRemote) {
|
|||||||
case (0 | 1, Some(driver)) => driver.slot(stack) == Slot.Card && driver.tier(stack) <= maxComponentTierForSlot(slot)
|
case (0 | 1, Some(driver)) => driver.slot(stack) == Slot.Card && driver.tier(stack) <= maxComponentTierForSlot(slot)
|
||||||
case (2 | 3, Some(driver)) => driver.slot(stack) == Slot.Memory && driver.tier(stack) <= maxComponentTierForSlot(slot)
|
case (2 | 3, Some(driver)) => driver.slot(stack) == Slot.Memory && driver.tier(stack) <= maxComponentTierForSlot(slot)
|
||||||
case (4 | 5, Some(driver)) => driver.slot(stack) == Slot.HardDiskDrive && driver.tier(stack) <= maxComponentTierForSlot(slot)
|
case (4 | 5, Some(driver)) => driver.slot(stack) == Slot.HardDiskDrive && driver.tier(stack) <= maxComponentTierForSlot(slot)
|
||||||
|
case (6, Some(driver)) => driver.slot(stack) == Slot.Processor && driver.tier(stack) <= maxComponentTierForSlot(slot)
|
||||||
case _ => false // Invalid slot.
|
case _ => false // Invalid slot.
|
||||||
}
|
}
|
||||||
case 2 => (slot, Registry.itemDriverFor(stack)) match {
|
case 2 => (slot, Registry.itemDriverFor(stack)) match {
|
||||||
@ -63,6 +90,7 @@ class Case(var tier: Int, isRemote: Boolean) extends Computer(isRemote) {
|
|||||||
case (3 | 4, Some(driver)) => driver.slot(stack) == Slot.Memory && driver.tier(stack) <= maxComponentTierForSlot(slot)
|
case (3 | 4, Some(driver)) => driver.slot(stack) == Slot.Memory && driver.tier(stack) <= maxComponentTierForSlot(slot)
|
||||||
case (5 | 6, Some(driver)) => driver.slot(stack) == Slot.HardDiskDrive && driver.tier(stack) <= maxComponentTierForSlot(slot)
|
case (5 | 6, Some(driver)) => driver.slot(stack) == Slot.HardDiskDrive && driver.tier(stack) <= maxComponentTierForSlot(slot)
|
||||||
case (7, Some(driver)) => driver.slot(stack) == Slot.Disk
|
case (7, Some(driver)) => driver.slot(stack) == Slot.Disk
|
||||||
|
case (8, Some(driver)) => driver.slot(stack) == Slot.Processor && driver.tier(stack) <= maxComponentTierForSlot(slot)
|
||||||
case _ => false // Invalid slot.
|
case _ => false // Invalid slot.
|
||||||
}
|
}
|
||||||
case _ => false
|
case _ => false
|
||||||
@ -76,6 +104,7 @@ class Case(var tier: Int, isRemote: Boolean) extends Computer(isRemote) {
|
|||||||
case (2 | 3) => 1
|
case (2 | 3) => 1
|
||||||
case 4 => 1
|
case 4 => 1
|
||||||
case 5 => 0
|
case 5 => 0
|
||||||
|
case 6 => 1
|
||||||
case _ => -1 // Invalid slot.
|
case _ => -1 // Invalid slot.
|
||||||
}
|
}
|
||||||
case 2 => slot match {
|
case 2 => slot match {
|
||||||
@ -85,6 +114,7 @@ class Case(var tier: Int, isRemote: Boolean) extends Computer(isRemote) {
|
|||||||
case 5 => 2
|
case 5 => 2
|
||||||
case 6 => 1
|
case 6 => 1
|
||||||
case 7 => 0
|
case 7 => 0
|
||||||
|
case 8 => 2
|
||||||
case _ => -1 // Invalid slot.
|
case _ => -1 // Invalid slot.
|
||||||
}
|
}
|
||||||
case _ => -1
|
case _ => -1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user