Merge branch 'master' of github.com:MightyPirates/OpenComputers into one-three

Conflicts:
	build.properties
	src/main/scala/li/cil/oc/client/renderer/tileentity/ScreenRenderer.scala
	src/main/scala/li/cil/oc/common/tileentity/Screen.scala
This commit is contained in:
Florian Nücke 2014-05-22 22:42:02 +02:00
commit c9938d9d8d
6 changed files with 37 additions and 25 deletions

BIN
assets/blocks.psd Normal file

Binary file not shown.

BIN
assets/items.psd Normal file

Binary file not shown.

View File

@ -20,7 +20,7 @@ class ClassTransformer extends IClassTransformer {
override def transform(name: String, transformedName: String, basicClass: Array[Byte]): Array[Byte] = { override def transform(name: String, transformedName: String, basicClass: Array[Byte]): Array[Byte] = {
var transformedClass = basicClass var transformedClass = basicClass
try { try {
if (name == "li.cil.oc.common.tileentity.Computer" || name == "li.cil.oc.common.tileentity.Rack") { if (name == "li.cil.oc.common.tileentity.traits.Computer" || name == "li.cil.oc.common.tileentity.Rack") {
transformedClass = ensureStargateTechCompatibility(transformedClass) transformedClass = ensureStargateTechCompatibility(transformedClass)
} }
if (transformedClass != null if (transformedClass != null
@ -52,10 +52,11 @@ class ClassTransformer extends IClassTransformer {
classNode.methods.removeAll(incompleteMethods) classNode.methods.removeAll(incompleteMethods)
transformedClass = writeClass(classNode) transformedClass = writeClass(classNode)
} }
{
val classNode = newClassNode(transformedClass) val classNode = newClassNode(transformedClass)
if (classNode.interfaces.contains("li/cil/oc/api/network/SimpleComponent")) { if (classNode.interfaces.contains("li/cil/oc/api/network/SimpleComponent")) {
try { try {
transformedClass = injectEnvironmentImplementation(classNode, transformedClass) transformedClass = injectEnvironmentImplementation(classNode)
log.info(s"Successfully injected component logic into class $name.") log.info(s"Successfully injected component logic into class $name.")
} }
catch { catch {
@ -64,6 +65,7 @@ class ClassTransformer extends IClassTransformer {
} }
} }
} }
}
transformedClass transformedClass
} }
catch { catch {
@ -95,7 +97,7 @@ class ClassTransformer extends IClassTransformer {
else basicClass else basicClass
} }
def injectEnvironmentImplementation(classNode: ClassNode, basicClass: Array[Byte]): Array[Byte] = { def injectEnvironmentImplementation(classNode: ClassNode): Array[Byte] = {
log.fine(s"Injecting methods from Environment interface into ${classNode.name}.") log.fine(s"Injecting methods from Environment interface into ${classNode.name}.")
if (!isTileEntity(classNode)) { if (!isTileEntity(classNode)) {
throw new InjectionFailedException("Found SimpleComponent on something that isn't a tile entity, ignoring.") throw new InjectionFailedException("Found SimpleComponent on something that isn't a tile entity, ignoring.")

View File

@ -72,10 +72,18 @@ class TextBuffer(val owner: component.Container) extends ManagedComponent with a
// origin. // origin.
val w = getWidth val w = getWidth
val h = getHeight val h = getHeight
relativeLitArea = data.buffer.foldLeft(0) { relativeLitArea = (data.buffer, data.color).zipped.foldLeft(0) {
(acc, line) => acc + line.count(' ' !=) case (acc, (line, colors)) => acc + (line, colors).zipped.foldLeft(0) {
case (acc2, (char, color)) =>
val bg = PackedColor.unpackBackground(color, data.format)
val fg = PackedColor.unpackForeground(color, data.format)
acc2 + (if (char == ' ') if (bg == 0) 0 else 1
else if (char == 0x2588) if (fg == 0) 0 else 1
else if (fg == 0 && bg == 0) 0 else 1)
}
} / (w * h).toDouble } / (w * h).toDouble
} }
if (node != null) {
val hadPower = hasPower val hadPower = hasPower
val neededPower = relativeLitArea * fullyLitCost * Settings.get.tickFrequency val neededPower = relativeLitArea * fullyLitCost * Settings.get.tickFrequency
hasPower = node.tryChangeBuffer(-neededPower) hasPower = node.tryChangeBuffer(-neededPower)
@ -84,6 +92,7 @@ class TextBuffer(val owner: component.Container) extends ManagedComponent with a
} }
} }
} }
}
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
@ -263,7 +272,11 @@ class TextBuffer(val owner: component.Container) extends ManagedComponent with a
} }
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
override def renderText() = proxy.render() override def renderText() = {
if (relativeLitArea != 0) {
proxy.render()
}
}
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
override def renderWidth = MonospaceFontRenderer.fontWidth * data.width override def renderWidth = MonospaceFontRenderer.fontWidth * data.width

View File

@ -27,10 +27,9 @@ class Keyboard(isRemote: Boolean) extends traits.Environment with traits.Rotatab
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
override def canConnect(side: ForgeDirection) = side == facing.getOpposite override def canConnect(side: ForgeDirection) = hasNodeOnSide(side)
override def sidedNode(side: ForgeDirection) = override def sidedNode(side: ForgeDirection) = if (hasNodeOnSide(side)) node else null
if (hasNodeOnSide(side)) node else null
// Override automatic analyzer implementation for sided environments. // Override automatic analyzer implementation for sided environments.
override def onAnalyze(player: EntityPlayer, side: Int, hitX: Float, hitY: Float, hitZ: Float) = Array(node) override def onAnalyze(player: EntityPlayer, side: Int, hitX: Float, hitY: Float, hitZ: Float) = Array(node)

View File

@ -20,10 +20,8 @@ trait TextBuffer extends Environment {
override def updateEntity() { override def updateEntity() {
super.updateEntity() super.updateEntity()
if (isServer) {
buffer.update() buffer.update()
} }
}
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //