mirror of
https://github.com/MightyPirates/OpenComputers.git
synced 2025-09-18 19:56: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.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.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.Disk=Sehr einfaches Speichermedium, das verwendet werden kann, um Disketten und Festplatten bauen.
|
||||
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.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.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.Disk=Primitive medium that can be used to build persistent storage devices.
|
||||
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)) {
|
||||
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)) {
|
||||
@ -21,6 +21,8 @@ class Case(playerInventory: InventoryPlayer, computer: tileentity.Case) extends
|
||||
addSlotToContainer(142, 16 + 2 * slotSize, api.driver.Slot.Disk)
|
||||
}
|
||||
|
||||
addSlotToContainer(120, 16, api.driver.Slot.Processor, computer.tier)
|
||||
|
||||
// Show the player's inventory.
|
||||
addPlayerInventorySlots(8, 84)
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
package li.cil.oc.common.inventory
|
||||
|
||||
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, driver}
|
||||
import li.cil.oc.server.driver.Registry
|
||||
import li.cil.oc.server.driver.item.Item
|
||||
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() {
|
||||
if (updatingComponents.length > 0) {
|
||||
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 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)
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
package li.cil.oc.common.tileentity
|
||||
|
||||
import li.cil.oc.Settings
|
||||
import li.cil.oc.api.driver
|
||||
import li.cil.oc.api.driver.Slot
|
||||
import li.cil.oc.server.driver.Registry
|
||||
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) {
|
||||
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) {
|
||||
tier = nbt.getByte(Settings.namespace + "tier") max 0 min 2
|
||||
super.readFromNBT(nbt)
|
||||
recomputeMaxComponents()
|
||||
}
|
||||
|
||||
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 getSizeInventory = tier match {
|
||||
case 0 => 4
|
||||
case 1 => 6
|
||||
case 2 => 8
|
||||
case 0 => 5
|
||||
case 1 => 7
|
||||
case 2 => 9
|
||||
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 (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 (4, Some(driver)) => driver.slot(stack) == Slot.Processor && driver.tier(stack) <= maxComponentTierForSlot(slot)
|
||||
case _ => false // Invalid slot.
|
||||
}
|
||||
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 (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 (6, Some(driver)) => driver.slot(stack) == Slot.Processor && driver.tier(stack) <= maxComponentTierForSlot(slot)
|
||||
case _ => false // Invalid slot.
|
||||
}
|
||||
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 (5 | 6, Some(driver)) => driver.slot(stack) == Slot.HardDiskDrive && driver.tier(stack) <= maxComponentTierForSlot(slot)
|
||||
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
|
||||
@ -76,6 +104,7 @@ class Case(var tier: Int, isRemote: Boolean) extends Computer(isRemote) {
|
||||
case (2 | 3) => 1
|
||||
case 4 => 1
|
||||
case 5 => 0
|
||||
case 6 => 1
|
||||
case _ => -1 // Invalid slot.
|
||||
}
|
||||
case 2 => slot match {
|
||||
@ -85,6 +114,7 @@ class Case(var tier: Int, isRemote: Boolean) extends Computer(isRemote) {
|
||||
case 5 => 2
|
||||
case 6 => 1
|
||||
case 7 => 0
|
||||
case 8 => 2
|
||||
case _ => -1 // Invalid slot.
|
||||
}
|
||||
case _ => -1
|
||||
|
Loading…
x
Reference in New Issue
Block a user