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) { 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

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?> { 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)

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.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)

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) { 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)

View File

@ -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)

View File

@ -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,

View File

@ -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)