Fix computed boolean field being ambiguous

This commit is contained in:
DBotThePony 2023-03-18 14:11:39 +07:00
parent 9a841bf43b
commit 982554d2f0
Signed by: DBot
GPG Key ID: DCC23B5715498507
7 changed files with 11 additions and 10 deletions

View File

@ -7,7 +7,7 @@ import ru.dbotthepony.mc.otm.core.nbt.set
abstract class AndroidSwitchableFeature(type: AndroidFeatureType<*>, android: MatteryPlayerCapability) : AndroidFeature(type, android) {
var isActive by synchronizer.bool(setter = setter@{ value, access, setByRemote ->
if (value != access.read()) {
if (value != access.readBoolean()) {
access.write(value)
if (!setByRemote) {
@ -18,7 +18,7 @@ abstract class AndroidSwitchableFeature(type: AndroidFeatureType<*>, android: Ma
}
}
}
})
}).property
open val allowToSwitchByPlayer: Boolean get() = true
open val allowToSwitchByPlayerWhileSpectator: Boolean get() = true

View File

@ -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?> {
val id = playerInputs.size
var allowSpectators by mSynchronizer.bool(allowSpectators)
var allowSpectators by mSynchronizer.bool(allowSpectators).property
init {
playerInputs.add(this)

View File

@ -2,11 +2,12 @@ package ru.dbotthepony.mc.otm.menu.input
import ru.dbotthepony.mc.otm.core.GetterSetter
import ru.dbotthepony.mc.otm.menu.MatteryMenu
import java.util.function.BooleanSupplier
import kotlin.reflect.KMutableProperty0
class BooleanInputWithFeedback(menu: MatteryMenu) : AbstractPlayerInputWithFeedback<Boolean>() {
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) {
with(state)

View File

@ -10,7 +10,7 @@ import ru.dbotthepony.mc.otm.menu.MatteryMenu
*/
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 }
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) {
fun isAllowed(value: MatteryDeviceBlockEntity.ItemHandlerMode) = this@ItemHandlerPlayerInput.isAllowed(value)

View File

@ -6,7 +6,7 @@ import kotlin.reflect.KMutableProperty0
class StringInputWithFeedback(menu: MatteryMenu) : AbstractPlayerInputWithFeedback<String>() {
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) {
with(state)

View File

@ -7,7 +7,7 @@ class ProgressGaugeWidget(menu: MatteryMenu) : AbstractWidget(menu) {
var progress = {0f}
var stuck = {false}
var progressContainer by menu.mSynchronizer.short()
var stuckContainer by menu.mSynchronizer.bool()
var stuckContainer by menu.mSynchronizer.bool().property
constructor(
menu: MatteryMenu,

View File

@ -88,7 +88,7 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
}
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 long(getter: LongSupplier) = ComputedLongField(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 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 long(getter: KProperty0<Long>) = ComputedLongField(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 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 long(getter: Supplier<Long>) = ComputedLongField(getter::get)
fun fixedLong(getter: Supplier<Long>) = ComputedFixedLongField(getter::get)