Fix computed boolean field being ambiguous
This commit is contained in:
parent
9a841bf43b
commit
982554d2f0
@ -7,7 +7,7 @@ import ru.dbotthepony.mc.otm.core.nbt.set
|
|||||||
|
|
||||||
abstract class AndroidSwitchableFeature(type: AndroidFeatureType<*>, android: MatteryPlayerCapability) : AndroidFeature(type, android) {
|
abstract class AndroidSwitchableFeature(type: AndroidFeatureType<*>, android: MatteryPlayerCapability) : AndroidFeature(type, android) {
|
||||||
var isActive by synchronizer.bool(setter = setter@{ value, access, setByRemote ->
|
var isActive by synchronizer.bool(setter = setter@{ value, access, setByRemote ->
|
||||||
if (value != access.read()) {
|
if (value != access.readBoolean()) {
|
||||||
access.write(value)
|
access.write(value)
|
||||||
|
|
||||||
if (!setByRemote) {
|
if (!setByRemote) {
|
||||||
@ -18,7 +18,7 @@ abstract class AndroidSwitchableFeature(type: AndroidFeatureType<*>, android: Ma
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
}).property
|
||||||
|
|
||||||
open val allowToSwitchByPlayer: Boolean get() = true
|
open val allowToSwitchByPlayer: Boolean get() = true
|
||||||
open val allowToSwitchByPlayerWhileSpectator: Boolean get() = true
|
open val allowToSwitchByPlayerWhileSpectator: Boolean get() = true
|
||||||
|
@ -113,7 +113,7 @@ abstract class MatteryMenu @JvmOverloads protected constructor(
|
|||||||
*/
|
*/
|
||||||
inner class PlayerInput<V>(val codec: IStreamCodec<V>, allowSpectators: Boolean = false, val handler: (V) -> Unit) : Predicate<Player?> {
|
inner class PlayerInput<V>(val codec: IStreamCodec<V>, allowSpectators: Boolean = false, val handler: (V) -> Unit) : Predicate<Player?> {
|
||||||
val id = playerInputs.size
|
val id = playerInputs.size
|
||||||
var allowSpectators by mSynchronizer.bool(allowSpectators)
|
var allowSpectators by mSynchronizer.bool(allowSpectators).property
|
||||||
|
|
||||||
init {
|
init {
|
||||||
playerInputs.add(this)
|
playerInputs.add(this)
|
||||||
|
@ -2,11 +2,12 @@ package ru.dbotthepony.mc.otm.menu.input
|
|||||||
|
|
||||||
import ru.dbotthepony.mc.otm.core.GetterSetter
|
import ru.dbotthepony.mc.otm.core.GetterSetter
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
||||||
|
import java.util.function.BooleanSupplier
|
||||||
import kotlin.reflect.KMutableProperty0
|
import kotlin.reflect.KMutableProperty0
|
||||||
|
|
||||||
class BooleanInputWithFeedback(menu: MatteryMenu) : AbstractPlayerInputWithFeedback<Boolean>() {
|
class BooleanInputWithFeedback(menu: MatteryMenu) : AbstractPlayerInputWithFeedback<Boolean>() {
|
||||||
override val input = menu.booleanInput { consumer?.invoke(it) }
|
override val input = menu.booleanInput { consumer?.invoke(it) }
|
||||||
override val value by menu.mSynchronizer.bool(getter = { supplier?.invoke() ?: false })
|
override val value by menu.mSynchronizer.computedBool(BooleanSupplier { supplier?.invoke() ?: false })
|
||||||
|
|
||||||
constructor(menu: MatteryMenu, state: KMutableProperty0<Boolean>) : this(menu) {
|
constructor(menu: MatteryMenu, state: KMutableProperty0<Boolean>) : this(menu) {
|
||||||
with(state)
|
with(state)
|
||||||
|
@ -10,7 +10,7 @@ import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
|||||||
*/
|
*/
|
||||||
class ItemHandlerPlayerInput(val menu: MatteryMenu, val allowPull: Boolean = false, val allowPush: Boolean = false) {
|
class ItemHandlerPlayerInput(val menu: MatteryMenu, val allowPull: Boolean = false, val allowPush: Boolean = false) {
|
||||||
private val allowedFlags = MatteryDeviceBlockEntity.ItemHandlerMode.values().map { menu.mSynchronizer.bool() to it }
|
private val allowedFlags = MatteryDeviceBlockEntity.ItemHandlerMode.values().map { menu.mSynchronizer.bool() to it }
|
||||||
fun isAllowed(value: MatteryDeviceBlockEntity.ItemHandlerMode) = allowedFlags[value.ordinal].first.value
|
fun isAllowed(value: MatteryDeviceBlockEntity.ItemHandlerMode) = allowedFlags[value.ordinal].first.boolean
|
||||||
|
|
||||||
inner class Piece(val side: RelativeSide) {
|
inner class Piece(val side: RelativeSide) {
|
||||||
fun isAllowed(value: MatteryDeviceBlockEntity.ItemHandlerMode) = this@ItemHandlerPlayerInput.isAllowed(value)
|
fun isAllowed(value: MatteryDeviceBlockEntity.ItemHandlerMode) = this@ItemHandlerPlayerInput.isAllowed(value)
|
||||||
|
@ -6,7 +6,7 @@ import kotlin.reflect.KMutableProperty0
|
|||||||
|
|
||||||
class StringInputWithFeedback(menu: MatteryMenu) : AbstractPlayerInputWithFeedback<String>() {
|
class StringInputWithFeedback(menu: MatteryMenu) : AbstractPlayerInputWithFeedback<String>() {
|
||||||
override val input = menu.stringInput { consumer?.invoke(it.replace('\u0000', ' ')) }
|
override val input = menu.stringInput { consumer?.invoke(it.replace('\u0000', ' ')) }
|
||||||
override val value by menu.mSynchronizer.string(getter = { supplier?.invoke() ?: "" })
|
override val value by menu.mSynchronizer.string { supplier?.invoke() ?: "" }
|
||||||
|
|
||||||
constructor(menu: MatteryMenu, state: KMutableProperty0<String>) : this(menu) {
|
constructor(menu: MatteryMenu, state: KMutableProperty0<String>) : this(menu) {
|
||||||
with(state)
|
with(state)
|
||||||
|
@ -7,7 +7,7 @@ class ProgressGaugeWidget(menu: MatteryMenu) : AbstractWidget(menu) {
|
|||||||
var progress = {0f}
|
var progress = {0f}
|
||||||
var stuck = {false}
|
var stuck = {false}
|
||||||
var progressContainer by menu.mSynchronizer.short()
|
var progressContainer by menu.mSynchronizer.short()
|
||||||
var stuckContainer by menu.mSynchronizer.bool()
|
var stuckContainer by menu.mSynchronizer.bool().property
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
menu: MatteryMenu,
|
menu: MatteryMenu,
|
||||||
|
@ -88,7 +88,7 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun byte(getter: () -> Byte) = ComputedField(getter, ByteValueCodec)
|
fun byte(getter: () -> Byte) = ComputedField(getter, ByteValueCodec)
|
||||||
fun bool(getter: BooleanSupplier) = ComputedBooleanField(getter)
|
fun computedBool(getter: BooleanSupplier) = ComputedBooleanField(getter)
|
||||||
fun short(getter: () -> Short) = ComputedField(getter, ShortValueCodec)
|
fun short(getter: () -> Short) = ComputedField(getter, ShortValueCodec)
|
||||||
fun long(getter: LongSupplier) = ComputedLongField(getter)
|
fun long(getter: LongSupplier) = ComputedLongField(getter)
|
||||||
fun fixedLong(getter: LongSupplier) = ComputedFixedLongField(getter)
|
fun fixedLong(getter: LongSupplier) = ComputedFixedLongField(getter)
|
||||||
@ -103,7 +103,7 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
|
|||||||
fun string(getter: () -> String) = ComputedField(getter, BinaryStringCodec)
|
fun string(getter: () -> String) = ComputedField(getter, BinaryStringCodec)
|
||||||
|
|
||||||
fun byte(getter: KProperty0<Byte>) = ComputedField(getter, ByteValueCodec)
|
fun byte(getter: KProperty0<Byte>) = ComputedField(getter, ByteValueCodec)
|
||||||
fun bool(getter: KProperty0<Boolean>) = ComputedBooleanField(getter::get)
|
fun computedBool(getter: KProperty0<Boolean>) = ComputedBooleanField(getter::get)
|
||||||
fun short(getter: KProperty0<Short>) = ComputedField(getter, ShortValueCodec)
|
fun short(getter: KProperty0<Short>) = ComputedField(getter, ShortValueCodec)
|
||||||
fun long(getter: KProperty0<Long>) = ComputedLongField(getter::get)
|
fun long(getter: KProperty0<Long>) = ComputedLongField(getter::get)
|
||||||
fun fixedLong(getter: KProperty0<Long>) = ComputedFixedLongField(getter::get)
|
fun fixedLong(getter: KProperty0<Long>) = ComputedFixedLongField(getter::get)
|
||||||
@ -118,7 +118,7 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
|
|||||||
fun string(getter: KProperty0<String>) = ComputedField(getter, BinaryStringCodec)
|
fun string(getter: KProperty0<String>) = ComputedField(getter, BinaryStringCodec)
|
||||||
|
|
||||||
fun byte(getter: Supplier<Byte>) = ComputedField(getter::get, ByteValueCodec)
|
fun byte(getter: Supplier<Byte>) = ComputedField(getter::get, ByteValueCodec)
|
||||||
fun bool(getter: Supplier<Boolean>) = ComputedBooleanField(getter::get)
|
fun computedBool(getter: Supplier<Boolean>) = ComputedBooleanField(getter::get)
|
||||||
fun short(getter: Supplier<Short>) = ComputedField(getter::get, ShortValueCodec)
|
fun short(getter: Supplier<Short>) = ComputedField(getter::get, ShortValueCodec)
|
||||||
fun long(getter: Supplier<Long>) = ComputedLongField(getter::get)
|
fun long(getter: Supplier<Long>) = ComputedLongField(getter::get)
|
||||||
fun fixedLong(getter: Supplier<Long>) = ComputedFixedLongField(getter::get)
|
fun fixedLong(getter: Supplier<Long>) = ComputedFixedLongField(getter::get)
|
||||||
|
Loading…
Reference in New Issue
Block a user