From bae688c366bdbb6ae8dd7c4e1fcffee5265deb49 Mon Sep 17 00:00:00 2001 From: bdew Date: Mon, 23 Mar 2015 17:42:36 +0200 Subject: [PATCH] More sensor changes --- .../lib/sensors/GenericSensorParameter.scala | 7 +++- .../bdew/lib/sensors/GenericSensorType.scala | 7 +++- .../bdew/lib/sensors/RedstoneSensors.scala | 35 +++++++++++++++++++ src/net/bdew/lib/sensors/SensorSystem.scala | 8 ++++- .../sensors/widgets/WidgetSensorParam.scala | 2 +- ...nResult.scala => WidgetSensorResult.scala} | 18 +++------- .../sensors/widgets/WidgetSensorType.scala | 2 +- 7 files changed, 60 insertions(+), 19 deletions(-) create mode 100644 src/net/bdew/lib/sensors/RedstoneSensors.scala rename src/net/bdew/lib/sensors/widgets/{WidgetSensorBooleanResult.scala => WidgetSensorResult.scala} (50%) diff --git a/src/net/bdew/lib/sensors/GenericSensorParameter.scala b/src/net/bdew/lib/sensors/GenericSensorParameter.scala index 03d374b..061c58b 100644 --- a/src/net/bdew/lib/sensors/GenericSensorParameter.scala +++ b/src/net/bdew/lib/sensors/GenericSensorParameter.scala @@ -11,13 +11,18 @@ package net.bdew.lib.sensors import cpw.mods.fml.relauncher.{Side, SideOnly} import net.bdew.lib.Misc -import net.bdew.lib.gui.{Color, Texture} +import net.bdew.lib.gui._ abstract class GenericSensorParameter(system: SensorSystem[_, _]) { val uid: String def localizedName = Misc.toLocal(system.localizationPrefix + ".param." + uid) + @SideOnly(Side.CLIENT) + def drawParam(rect: Rect, target: DrawTarget): Unit = { + target.drawTexture(rect, texture, textureColor) + } + @SideOnly(Side.CLIENT) def texture: Texture diff --git a/src/net/bdew/lib/sensors/GenericSensorType.scala b/src/net/bdew/lib/sensors/GenericSensorType.scala index fea3a87..f582ed8 100644 --- a/src/net/bdew/lib/sensors/GenericSensorType.scala +++ b/src/net/bdew/lib/sensors/GenericSensorType.scala @@ -11,7 +11,7 @@ package net.bdew.lib.sensors import cpw.mods.fml.relauncher.{Side, SideOnly} import net.bdew.lib.Misc -import net.bdew.lib.gui.{Color, Texture} +import net.bdew.lib.gui.{Color, DrawTarget, Rect, Texture} import net.minecraft.item.ItemStack import net.minecraft.nbt.NBTTagCompound @@ -29,6 +29,11 @@ abstract class GenericSensorType[-T, +R](system: SensorSystem[T, R]) { def getResult(param: GenericSensorParameter, obj: T): R + @SideOnly(Side.CLIENT) + def drawSensor(rect: Rect, target: DrawTarget): Unit = { + target.drawTexture(rect, texture, textureColor) + } + @SideOnly(Side.CLIENT) def texture: Texture diff --git a/src/net/bdew/lib/sensors/RedstoneSensors.scala b/src/net/bdew/lib/sensors/RedstoneSensors.scala new file mode 100644 index 0000000..a7f003c --- /dev/null +++ b/src/net/bdew/lib/sensors/RedstoneSensors.scala @@ -0,0 +1,35 @@ +/* + * Copyright (c) bdew, 2013 - 2015 + * https://github.com/bdew/bdlib + * + * This mod is distributed under the terms of the Minecraft Mod Public + * License 1.0, or MMPL. Please check the contents of the license located in + * http://bdew.net/minecraft-mod-public-license/ + */ + +package net.bdew.lib.sensors + +import cpw.mods.fml.relauncher.{Side, SideOnly} +import net.bdew.lib.Misc +import net.bdew.lib.gui.{DrawTarget, IconWrapper, Rect, Texture} +import net.minecraft.init.Blocks + +abstract class RedstoneSensors[T] extends SensorSystem[T, Boolean](false) { + lazy val rsOn = new IconWrapper(Texture.BLOCKS, Blocks.redstone_torch.getIcon(0, 0)) + lazy val rsOff = new IconWrapper(Texture.BLOCKS, Blocks.unlit_redstone_torch.getIcon(0, 0)) + + @SideOnly(Side.CLIENT) + override def drawResult(result: Boolean, rect: Rect, target: DrawTarget): Unit = { + if (result) + target.drawTexture(rect, rsOn) + else + target.drawTexture(rect, rsOff) + } + + @SideOnly(Side.CLIENT) + override def getLocalizedResultText(result: Boolean): String = + if (result) + Misc.toLocal(localizationPrefix + ".on") + else + Misc.toLocal(localizationPrefix + ".off") +} diff --git a/src/net/bdew/lib/sensors/SensorSystem.scala b/src/net/bdew/lib/sensors/SensorSystem.scala index 804690c..e92de5e 100644 --- a/src/net/bdew/lib/sensors/SensorSystem.scala +++ b/src/net/bdew/lib/sensors/SensorSystem.scala @@ -10,7 +10,7 @@ package net.bdew.lib.sensors import cpw.mods.fml.relauncher.{Side, SideOnly} -import net.bdew.lib.gui.Texture +import net.bdew.lib.gui._ import net.bdew.lib.{BdLib, Misc} import net.minecraft.item.ItemStack import net.minecraft.nbt.NBTTagCompound @@ -31,6 +31,12 @@ abstract class SensorSystem[T, R](defaultResult: R) { def localizationPrefix: String + @SideOnly(Side.CLIENT) + def drawResult(result: R, rect: Rect, target: DrawTarget): Unit + + @SideOnly(Side.CLIENT) + def getLocalizedResultText(result: R): String + abstract class SensorType extends GenericSensorType(this) abstract class SimpleSensor extends SimpleGenericSensor(this) diff --git a/src/net/bdew/lib/sensors/widgets/WidgetSensorParam.scala b/src/net/bdew/lib/sensors/widgets/WidgetSensorParam.scala index 315b624..122ddb4 100644 --- a/src/net/bdew/lib/sensors/widgets/WidgetSensorParam.scala +++ b/src/net/bdew/lib/sensors/widgets/WidgetSensorParam.scala @@ -18,5 +18,5 @@ import scala.collection.mutable class WidgetSensorParam(val p: Point, param: => GenericSensorParameter) extends Widget { override val rect = new Rect(p, 16, 16) override def handleTooltip(p: Point, tip: mutable.MutableList[String]) = tip += param.localizedName - override def draw(mouse: Point) = parent.drawTexture(rect, param.texture, param.textureColor) + override def draw(mouse: Point) = param.drawParam(rect, parent) } diff --git a/src/net/bdew/lib/sensors/widgets/WidgetSensorBooleanResult.scala b/src/net/bdew/lib/sensors/widgets/WidgetSensorResult.scala similarity index 50% rename from src/net/bdew/lib/sensors/widgets/WidgetSensorBooleanResult.scala rename to src/net/bdew/lib/sensors/widgets/WidgetSensorResult.scala index 6a1aa64..59e44b2 100644 --- a/src/net/bdew/lib/sensors/widgets/WidgetSensorBooleanResult.scala +++ b/src/net/bdew/lib/sensors/widgets/WidgetSensorResult.scala @@ -9,28 +9,18 @@ package net.bdew.lib.sensors.widgets -import net.bdew.lib.Misc import net.bdew.lib.gui._ import net.bdew.lib.gui.widgets.Widget -import net.minecraft.init.Blocks +import net.bdew.lib.sensors.SensorSystem import scala.collection.mutable -class WidgetSensorBooleanResult(val p: Point, state: => Boolean, stringPrefix: String) extends Widget { - val rsOn = new IconWrapper(Texture.BLOCKS, Blocks.redstone_torch.getIcon(0, 0)) - val rsOff = new IconWrapper(Texture.BLOCKS, Blocks.unlit_redstone_torch.getIcon(0, 0)) - +class WidgetSensorResult[T](val p: Point, state: => T, system: SensorSystem[_, T]) extends Widget { override val rect = new Rect(p, 16, 16) override def handleTooltip(p: Point, tip: mutable.MutableList[String]) = - if (state) - tip += Misc.toLocal(stringPrefix + ".on") - else - tip += Misc.toLocal(stringPrefix + ".off") + tip += system.getLocalizedResultText(state) override def draw(mouse: Point) = - if (state) - parent.drawTexture(rect, rsOn) - else - parent.drawTexture(rect, rsOff) + system.drawResult(state, rect, parent) } diff --git a/src/net/bdew/lib/sensors/widgets/WidgetSensorType.scala b/src/net/bdew/lib/sensors/widgets/WidgetSensorType.scala index dfb9abb..6c5d85b 100644 --- a/src/net/bdew/lib/sensors/widgets/WidgetSensorType.scala +++ b/src/net/bdew/lib/sensors/widgets/WidgetSensorType.scala @@ -18,7 +18,7 @@ import scala.collection.mutable class WidgetSensorType[T, R](val p: Point, sensor: => GenericSensorType[T, R]) extends Widget { override val rect = new Rect(p, 16, 16) override def handleTooltip(p: Point, tip: mutable.MutableList[String]) = tip += sensor.localizedName - override def draw(mouse: Point) = parent.drawTexture(rect, sensor.texture, sensor.textureColor) + override def draw(mouse: Point) = sensor.drawSensor(rect, parent) }