More work on sensors

This commit is contained in:
bdew committed 2015-03-25 16:34:46 +02:00
1 parent 516133ee0a
commit dc567bd1be
6 files changed
+21 -7

No files matched your search

@@ -31,4 +31,9 @@ case class DataSlotSensor[T, R](registry: SensorSystem[T, R], name: String, pare
.map(x => SensorPair(x, x.loadParameter(t.getCompoundTag(name))))
.getOrElse(SensorPair(default, default.defaultParameter))
}
def ensureValid(obj: T): Unit = {
if (!value.sensor.isValidParameter(value.param, obj))
update(value.copy(param = value.sensor.defaultParameter))
}
}
@@ -15,5 +15,4 @@ abstract class GenericSensorParameter(system: SensorSystem[_, _]) {
val uid: String
def localizedName = Misc.toLocal(system.localizationPrefix + ".param." + uid)
}
@@ -20,6 +20,9 @@ abstract class GenericSensorType[-T, +R](system: SensorSystem[T, R]) {
system.register(this)
def getTooltip(obj: T): List[String] = List(localizedName)
def getParamTooltip(obj: T, param: GenericSensorParameter): List[String] = List(param.localizedName)
def localizedName = Misc.toLocal(system.localizationPrefix + "." + uid)
def defaultParameter: GenericSensorParameter
@@ -28,7 +31,7 @@ abstract class GenericSensorType[-T, +R](system: SensorSystem[T, R]) {
def saveParameter(p: GenericSensorParameter, tag: NBTTagCompound)
def loadParameter(tag: NBTTagCompound): GenericSensorParameter
def isValidParameter(p: GenericSensorParameter): Boolean
def isValidParameter(p: GenericSensorParameter, obj: T): Boolean
def getResult(param: GenericSensorParameter, obj: T): R
@@ -24,7 +24,7 @@ abstract class SimpleGenericParameter(system: SensorSystem[_, _]) extends Generi
}
abstract class SimpleGenericSensor[-T, +R](system: SensorSystem[T, R]) extends GenericSensorType[T, R](system) {
def parameters: IndexedSeq[GenericSensorParameter]
def parameters: IndexedSeq[SimpleGenericParameter]
override lazy val defaultParameter = parameters.headOption.getOrElse(system.DisabledParameter)
@@ -40,7 +40,7 @@ abstract class SimpleGenericSensor[-T, +R](system: SensorSystem[T, R]) extends G
override def saveParameter(p: GenericSensorParameter, tag: NBTTagCompound) = tag.setString("param", p.uid)
override def loadParameter(tag: NBTTagCompound) = parameterMap.getOrElse(tag.getString("param"), system.DisabledParameter)
override def isValidParameter(p: GenericSensorParameter) = parameters.contains(p)
override def isValidParameter(p: GenericSensorParameter, obj: T) = parameters.contains(p)
@SideOnly(Side.CLIENT)
def texture: Texture
@@ -17,6 +17,10 @@ import scala.collection.mutable
class WidgetSensorParam[T](val p: Point, config: => SensorPair[T, _], obj: => Option[T]) extends Widget {
override val rect = new Rect(p, 16, 16)
override def handleTooltip(p: Point, tip: mutable.MutableList[String]) = tip += config.param.localizedName
override def draw(mouse: Point) = obj foreach (x => config.sensor.drawParameter(rect, parent, x, config.param))
override def handleTooltip(p: Point, tip: mutable.MutableList[String]) =
for (x <- obj; s <- config.sensor.getParamTooltip(x, config.param)) tip += s
override def draw(mouse: Point) =
obj foreach (x => config.sensor.drawParameter(rect, parent, x, config.param))
}
@@ -17,7 +17,10 @@ import scala.collection.mutable
class WidgetSensorType[T](val p: Point, sensor: => GenericSensorType[T, _], obj: => Option[T]) extends Widget {
override val rect = new Rect(p, 16, 16)
override def handleTooltip(p: Point, tip: mutable.MutableList[String]) = tip += sensor.localizedName
override def handleTooltip(p: Point, tip: mutable.MutableList[String]) =
for (x <- obj; s <- sensor.getTooltip(x)) tip += s
override def draw(mouse: Point) = obj foreach (x => sensor.drawSensor(rect, parent, x))
}