blob: 8201fa40891ee6709a7b83eddb4e127ba858dee2 [file] [log] [blame] [raw]
package li.cil.oc.common.component
import cpw.mods.fml.relauncher.Side
import cpw.mods.fml.relauncher.SideOnly
import li.cil.oc.Constants
import li.cil.oc.Settings
import li.cil.oc.api
import li.cil.oc.api.internal.Keyboard.UsabilityChecker
import li.cil.oc.api.network.Component
import li.cil.oc.api.network.Node
import li.cil.oc.api.network.Visibility
import li.cil.oc.common.Tier
import li.cil.oc.common.item
import li.cil.oc.common.item.Delegator
import li.cil.oc.common.tileentity
import li.cil.oc.util.ExtendedNBT._
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.nbt.NBTTagCompound
import net.minecraft.nbt.NBTTagString
import net.minecraftforge.common.util.Constants.NBT
import scala.collection.mutable
//class Terminal(val rack: tileentity.Rack, val number: Int) {
// val buffer = {
// val screenItem = api.Items.get(Constants.BlockName.ScreenTier1).createItemStack(1)
// val buffer = api.Driver.driverFor(screenItem, rack.getClass).createEnvironment(screenItem, rack).asInstanceOf[api.component.TextBuffer]
// val (maxWidth, maxHeight) = Settings.screenResolutionsByTier(Tier.Three)
// buffer.setMaximumResolution(maxWidth, maxHeight)
// buffer.setMaximumColorDepth(Settings.screenDepthsByTier(Tier.Three))
// buffer
// }
//
// val keyboard = {
// val keyboardItem = api.Items.get(Constants.BlockName.Keyboard).createItemStack(1)
// val keyboard = api.Driver.driverFor(keyboardItem, rack.getClass).createEnvironment(keyboardItem, rack).asInstanceOf[api.component.Keyboard]
// keyboard.setUsableOverride(new UsabilityChecker {
// override def isUsableByPlayer(keyboard: api.component.Keyboard, player: EntityPlayer) = {
// val stack = player.getHeldItem
// Delegator.subItem(stack) match {
// case Some(t: item.Terminal) if stack.hasTagCompound => keys.contains(stack.getTagCompound.getString(Settings.namespace + "key"))
// case _ => false
// }
// }
// })
// keyboard
// }
//
// if (buffer.node != null) {
// buffer.node.asInstanceOf[Component].setVisibility(Visibility.Neighbors)
// keyboard.node.asInstanceOf[Component].setVisibility(Visibility.Neighbors)
// }
//
// val keys = mutable.ListBuffer.empty[String]
//
// def connect(node: Node) {
// if (keys.size > 0) {
// node.connect(buffer.node)
// node.connect(keyboard.node)
// buffer.node.connect(keyboard.node)
// }
// }
//
// // ----------------------------------------------------------------------- //
//
// def load(nbt: NBTTagCompound) {
// buffer.load(nbt.getCompoundTag(Settings.namespace + "buffer"))
// keyboard.load(nbt.getCompoundTag(Settings.namespace + "keyboard"))
// // Compatibility for previous dev versions where there was only one term.
// if (nbt.hasKey(Settings.namespace + "key")) {
// keys += nbt.getString(Settings.namespace + "key")
// }
// nbt.getTagList(Settings.namespace + "keys", NBT.TAG_STRING).foreach((tag: NBTTagString) => keys += tag.func_150285_a_())
// }
//
// def save(nbt: NBTTagCompound) {
// nbt.setNewCompoundTag(Settings.namespace + "buffer", buffer.save)
// nbt.setNewCompoundTag(Settings.namespace + "keyboard", keyboard.save)
// nbt.setNewTagList(Settings.namespace + "keys", keys)
// }
//
// @SideOnly(Side.CLIENT)
// def readFromNBTForClient(nbt: NBTTagCompound) {
// buffer.load(nbt)
// nbt.getTagList("keys", NBT.TAG_STRING).foreach((tag: NBTTagString) => keys += tag.func_150285_a_())
// }
//
// def writeToNBTForClient(nbt: NBTTagCompound) {
// buffer.save(nbt)
// nbt.setNewTagList("keys", keys)
// }
//}