mirror of
https://github.com/GTNewHorizons/bdlib.git
synced 2026-11-13 16:54:11 +00:00
More work on sensors
This commit is contained in:
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))
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user