From 058fe57a615d1b8b015ee21f5473218e7f1915f5 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Sat, 8 Oct 2022 15:46:30 +0700 Subject: [PATCH] Implement more interfaces --- .../mc/otm/network/FieldSynchronizer.kt | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/network/FieldSynchronizer.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/network/FieldSynchronizer.kt index c42899287..dabb8f518 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/network/FieldSynchronizer.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/network/FieldSynchronizer.kt @@ -12,6 +12,7 @@ import java.io.InputStream import java.lang.ref.WeakReference import java.math.BigDecimal import java.util.* +import java.util.function.Consumer import java.util.function.Supplier import kotlin.ConcurrentModificationException import kotlin.collections.ArrayList @@ -35,7 +36,7 @@ fun interface FieldSetter { fun invoke(value: V, field: FieldAccess, setByRemote: Boolean) } -sealed interface IField : ReadOnlyProperty { +sealed interface IField : ReadOnlyProperty, Supplier, () -> V { fun observe(): Boolean fun markDirty() fun markDirty(endpoint: FieldSynchronizer.Endpoint) @@ -47,15 +48,27 @@ sealed interface IField : ReadOnlyProperty { override fun getValue(thisRef: Any, property: KProperty<*>): V { return value } + + override fun get(): V { + return value + } + + override fun invoke(): V { + return value + } } -sealed interface IMutableField : IField, ReadWriteProperty { +sealed interface IMutableField : IField, ReadWriteProperty, Consumer { override var value: V override fun setValue(thisRef: Any, property: KProperty<*>, value: V) { this.value = value } + override fun accept(t: V) { + value = t + } + override fun getValue(thisRef: Any, property: KProperty<*>): V { return super.getValue(thisRef, property) }