diff --git a/src/main/kotlin/ru/dbotthepony/kommons/networking/FieldSynchronizer.kt b/src/main/kotlin/ru/dbotthepony/kommons/networking/FieldSynchronizer.kt index 524a400..b044247 100644 --- a/src/main/kotlin/ru/dbotthepony/kommons/networking/FieldSynchronizer.kt +++ b/src/main/kotlin/ru/dbotthepony/kommons/networking/FieldSynchronizer.kt @@ -16,6 +16,7 @@ import ru.dbotthepony.kommons.event.ISubscriptable import ru.dbotthepony.kommons.io.BigDecimalValueCodec import ru.dbotthepony.kommons.io.BinaryStringCodec import ru.dbotthepony.kommons.io.ByteValueCodec +import ru.dbotthepony.kommons.io.DecimalValueCodec import ru.dbotthepony.kommons.io.EnumValueCodec import ru.dbotthepony.kommons.io.IStreamCodec import ru.dbotthepony.kommons.io.ShortValueCodec @@ -28,6 +29,7 @@ import ru.dbotthepony.kommons.io.writeSignedVarInt import ru.dbotthepony.kommons.io.writeSignedVarLong import ru.dbotthepony.kommons.io.writeVarInt import ru.dbotthepony.kommons.io.writeVarLong +import ru.dbotthepony.kommons.math.Decimal import ru.dbotthepony.kommons.util.BooleanConsumer import ru.dbotthepony.kommons.util.FloatConsumer import ru.dbotthepony.kommons.util.FloatSupplier @@ -108,6 +110,7 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa fun computedUuid(getter: () -> UUID) = ComputedField(getter, UUIDValueCodec) fun computedInt(getter: IntSupplier) = ComputedIntField(getter) fun computedFixedInt(getter: IntSupplier) = ComputedFixedIntField(getter) + fun computedDecimal(getter: () -> Decimal) = ComputedField(getter, DecimalValueCodec) fun computedBigDecimal(getter: () -> BigDecimal) = ComputedField(getter, BigDecimalValueCodec) fun computedString(getter: () -> String) = ComputedField(getter, BinaryStringCodec) @@ -121,6 +124,7 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa fun computedUuid(getter: KProperty0) = ComputedField(getter, UUIDValueCodec) fun computedInt(getter: KProperty0) = ComputedIntField(getter::get) fun computedFixedInt(getter: KProperty0) = ComputedFixedIntField(getter::get) + fun computedDecimal(getter: KProperty0) = ComputedField(getter, DecimalValueCodec) fun computedBigDecimal(getter: KProperty0) = ComputedField(getter, BigDecimalValueCodec) fun computedString(getter: KProperty0) = ComputedField(getter, BinaryStringCodec) @@ -134,6 +138,7 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa fun computedUuid(getter: Supplier) = ComputedField(getter::get, UUIDValueCodec) fun computedInt(getter: Supplier) = ComputedIntField(getter::get) fun computedFixedInt(getter: Supplier) = ComputedFixedIntField(getter::get) + fun computedDecimal(getter: Supplier) = ComputedField(getter::get, DecimalValueCodec) fun computedBigDecimal(getter: Supplier) = ComputedField(getter::get, BigDecimalValueCodec) fun computedString(getter: Supplier) = ComputedField(getter::get, BinaryStringCodec) @@ -245,6 +250,15 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa return FixedIntField(value, getter, setter) } + @JvmOverloads + fun decimal( + value: Decimal = Decimal.ZERO, + getter: FieldGetter? = null, + setter: FieldSetter? = null, + ): Field { + return Field(value, DecimalValueCodec, getter, setter) + } + @JvmOverloads fun bigDecimal( value: BigDecimal = BigDecimal.ZERO,