Give player input classes better names

This commit is contained in:
DBotThePony 2023-01-29 14:23:17 +07:00
parent d49ec98d71
commit e505bce76d
Signed by: DBot
GPG Key ID: DCC23B5715498507
12 changed files with 47 additions and 39 deletions

View File

@ -3,12 +3,12 @@ package ru.dbotthepony.mc.otm.client.screen.panels.button
import net.minecraft.client.gui.screens.Screen
import ru.dbotthepony.mc.otm.client.minecraft
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
import ru.dbotthepony.mc.otm.menu.input.NetworkedBooleanInput
import ru.dbotthepony.mc.otm.menu.input.BooleanInputWithFeedback
open class CheckBoxInputPanel<out S : Screen> @JvmOverloads constructor(
screen: S,
parent: EditablePanel<*>?,
val widget: NetworkedBooleanInput,
val widget: BooleanInputWithFeedback,
x: Float = 0f,
y: Float = 0f,
width: Float = REGULAR_DIMENSIONS + 120f,

View File

@ -4,12 +4,12 @@ import net.minecraft.client.gui.screens.Screen
import net.minecraft.network.chat.Component
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
import ru.dbotthepony.mc.otm.client.screen.panels.Label
import ru.dbotthepony.mc.otm.menu.input.NetworkedBooleanInput
import ru.dbotthepony.mc.otm.menu.input.BooleanInputWithFeedback
open class CheckBoxLabelInputPanel<out S : Screen> @JvmOverloads constructor(
screen: S,
parent: EditablePanel<*>?,
widget: NetworkedBooleanInput,
widget: BooleanInputWithFeedback,
text: Component,
x: Float = 0f,
y: Float = 0f,

View File

@ -2,13 +2,13 @@ package ru.dbotthepony.mc.otm.client.screen.panels.input
import net.minecraft.client.gui.screens.Screen
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
import ru.dbotthepony.mc.otm.menu.input.AbstractNetworkedInput
import ru.dbotthepony.mc.otm.menu.input.AbstractPlayerInputWithFeedback
import ru.dbotthepony.mc.otm.milliTime
open class NetworkedStringInputPanel<out S : Screen>(
screen: S,
parent: EditablePanel<*>?,
val backend: AbstractNetworkedInput<String>,
val backend: AbstractPlayerInputWithFeedback<String>,
x: Float = 0f,
y: Float = 0f,
width: Float = 60f,

View File

@ -3,9 +3,8 @@ package ru.dbotthepony.mc.otm.menu.decorative
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.inventory.Slot
import ru.dbotthepony.mc.otm.block.entity.decorative.HoloSignBlockEntity
import ru.dbotthepony.mc.otm.client.screen.panels.input.TextInputPanel
import ru.dbotthepony.mc.otm.menu.MatteryMenu
import ru.dbotthepony.mc.otm.menu.input.NetworkedStringInput
import ru.dbotthepony.mc.otm.menu.input.StringInputWithFeedback
import ru.dbotthepony.mc.otm.registry.MMenus
class HoloSignMenu @JvmOverloads constructor(
@ -14,7 +13,7 @@ class HoloSignMenu @JvmOverloads constructor(
tile: HoloSignBlockEntity? = null
) : MatteryMenu(MMenus.HOLO_SIGN, containerId, inventory, tile) {
val text = if (tile != null)
NetworkedStringInput(this).withConsumer {
StringInputWithFeedback(this).withConsumer {
val lines = it.split(NEWLINES)
val result = ArrayList<String>(lines.size.coerceAtMost(HoloSignBlockEntity.DEFAULT_MAX_NEWLINES))
@ -29,7 +28,7 @@ class HoloSignMenu @JvmOverloads constructor(
tile.text = result.joinToString("\n")
}.withSupplier(tile::text)
else
NetworkedStringInput(this)
StringInputWithFeedback(this)
override val storageSlots: Collection<Slot>
get() = listOf()

View File

@ -9,7 +9,7 @@ import kotlin.reflect.KMutableProperty0
/**
* Getting and setting values should ONLY be done clientside
*/
abstract class AbstractNetworkedInput<V> : GetterSetter<V> {
abstract class AbstractPlayerInputWithFeedback<V> : GetterSetter<V> {
abstract val input: MatteryMenu.PlayerInput<V>
abstract val value: V
@ -24,29 +24,29 @@ abstract class AbstractNetworkedInput<V> : GetterSetter<V> {
var supplier: (() -> V)? = null
var consumer: ((V) -> Unit)? = null
fun withSupplier(func: () -> V): AbstractNetworkedInput<V> {
fun withSupplier(func: () -> V): AbstractPlayerInputWithFeedback<V> {
supplier = func
return this
}
fun withConsumer(func: (V) -> Unit): AbstractNetworkedInput<V> {
fun withConsumer(func: (V) -> Unit): AbstractPlayerInputWithFeedback<V> {
consumer = func
return this
}
fun with(state: KMutableProperty0<V>): AbstractNetworkedInput<V> {
fun with(state: KMutableProperty0<V>): AbstractPlayerInputWithFeedback<V> {
withConsumer { state.set(it) }
withSupplier { state.get() }
return this
}
fun with(state: GetterSetter<V>): AbstractNetworkedInput<V> {
fun with(state: GetterSetter<V>): AbstractPlayerInputWithFeedback<V> {
withConsumer(state::accept)
withSupplier(state::get)
return this
}
fun clear(): AbstractNetworkedInput<V> {
fun clear(): AbstractPlayerInputWithFeedback<V> {
supplier = null
consumer = null
return this

View File

@ -1,10 +1,10 @@
package ru.dbotthepony.mc.otm.menu.input
import net.minecraft.world.entity.player.Player
import ru.dbotthepony.mc.otm.core.GetterSetter
import ru.dbotthepony.mc.otm.menu.MatteryMenu
import kotlin.reflect.KMutableProperty0
class NetworkedBooleanInput(menu: MatteryMenu) : AbstractNetworkedInput<Boolean>() {
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 })
@ -12,6 +12,10 @@ class NetworkedBooleanInput(menu: MatteryMenu) : AbstractNetworkedInput<Boolean>
with(state)
}
constructor(menu: MatteryMenu, state: GetterSetter<Boolean>) : this(menu) {
with(state)
}
fun switchValue() {
input(!value)
}

View File

@ -1,13 +1,18 @@
package ru.dbotthepony.mc.otm.menu.input
import ru.dbotthepony.mc.otm.core.GetterSetter
import ru.dbotthepony.mc.otm.menu.MatteryMenu
import kotlin.reflect.KMutableProperty0
class NetworkedStringInput(menu: MatteryMenu) : AbstractNetworkedInput<String>() {
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() ?: "" })
constructor(menu: MatteryMenu, state: KMutableProperty0<String>) : this(menu) {
with(state)
}
constructor(menu: MatteryMenu, state: GetterSetter<String>) : this(menu) {
with(state)
}
}

View File

@ -8,7 +8,7 @@ import ru.dbotthepony.mc.otm.block.entity.matter.MatterBottlerBlockEntity
import ru.dbotthepony.mc.otm.capability.MatteryCapability
import ru.dbotthepony.mc.otm.capability.matter.canExtractMatter
import ru.dbotthepony.mc.otm.capability.matter.canReceiveMatter
import ru.dbotthepony.mc.otm.menu.input.NetworkedBooleanInput
import ru.dbotthepony.mc.otm.menu.input.BooleanInputWithFeedback
import ru.dbotthepony.mc.otm.menu.widget.LevelGaugeWidget
import ru.dbotthepony.mc.otm.menu.widget.ProgressGaugeWidget
import ru.dbotthepony.mc.otm.core.orNull
@ -23,7 +23,7 @@ class MatterBottlerMenu @JvmOverloads constructor(
) : MatteryPoweredMenu(
MMenus.MATTER_BOTTLER, p_38852_, inventory, tile
) {
val workFlow: NetworkedBooleanInput
val workFlow: BooleanInputWithFeedback
val progressWidget: ProgressGaugeWidget
val matterWidget: LevelGaugeWidget
@ -36,11 +36,11 @@ class MatterBottlerMenu @JvmOverloads constructor(
if (tile == null) {
progressWidget = ProgressGaugeWidget(this)
matterWidget = LevelGaugeWidget(this)
workFlow = NetworkedBooleanInput(this)
workFlow = BooleanInputWithFeedback(this)
} else {
progressWidget = ProgressGaugeWidget(this) { tile.getWorkProgress() }
matterWidget = LevelGaugeWidget(this, tile.matter)
workFlow = NetworkedBooleanInput(this, tile::isBottling)
workFlow = BooleanInputWithFeedback(this, tile::isBottling)
}
storageSlots = ImmutableList(6) { index ->

View File

@ -17,7 +17,7 @@ import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu
import ru.dbotthepony.mc.otm.menu.MatterySlot
import ru.dbotthepony.mc.otm.menu.data.INetworkedItemViewProvider
import ru.dbotthepony.mc.otm.menu.data.NetworkedItemView
import ru.dbotthepony.mc.otm.menu.input.NetworkedBooleanInput
import ru.dbotthepony.mc.otm.menu.input.BooleanInputWithFeedback
import ru.dbotthepony.mc.otm.registry.MMenus
import ru.dbotthepony.mc.otm.storage.ITEM_STORAGE
import ru.dbotthepony.mc.otm.storage.ItemStackWrapper
@ -70,9 +70,9 @@ class DriveViewerMenu @JvmOverloads constructor(
val driveFilterSlots = addFilterSlots(driveFilter)
val isWhitelist = NetworkedBooleanInput(this)
val matchTag = NetworkedBooleanInput(this)
val matchNBT = NetworkedBooleanInput(this)
val isWhitelist = BooleanInputWithFeedback(this)
val matchTag = BooleanInputWithFeedback(this)
val matchNBT = BooleanInputWithFeedback(this)
override fun broadcastChanges() {
super.broadcastChanges()

View File

@ -5,7 +5,7 @@ import net.minecraft.world.inventory.Slot
import ru.dbotthepony.mc.otm.block.entity.storage.StorageBusBlockEntity
import ru.dbotthepony.mc.otm.container.ItemFilterNetworkSlot
import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu
import ru.dbotthepony.mc.otm.menu.input.NetworkedBooleanInput
import ru.dbotthepony.mc.otm.menu.input.BooleanInputWithFeedback
import ru.dbotthepony.mc.otm.registry.MMenus
class StorageBusMenu @JvmOverloads constructor(
@ -16,15 +16,15 @@ class StorageBusMenu @JvmOverloads constructor(
MMenus.STORAGE_BUS, p_38852_, inventory, tile
) {
val busFilterSlots: List<ItemFilterNetworkSlot>
val busFilterState: NetworkedBooleanInput
val busFilterState: BooleanInputWithFeedback
init {
if (tile != null) {
busFilterSlots = addFilterSlots(tile.filter)
busFilterState = NetworkedBooleanInput(this, tile.filter::isWhitelist)
busFilterState = BooleanInputWithFeedback(this, tile.filter::isWhitelist)
} else {
busFilterSlots = addFilterSlots(StorageBusBlockEntity.MAX_FILTERS)
busFilterState = NetworkedBooleanInput(this)
busFilterState = BooleanInputWithFeedback(this)
}
addInventorySlots()

View File

@ -5,7 +5,7 @@ import net.minecraft.world.inventory.Slot
import ru.dbotthepony.mc.otm.block.entity.storage.StorageExporterBlockEntity
import ru.dbotthepony.mc.otm.container.ItemFilterNetworkSlot
import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu
import ru.dbotthepony.mc.otm.menu.input.NetworkedBooleanInput
import ru.dbotthepony.mc.otm.menu.input.BooleanInputWithFeedback
import ru.dbotthepony.mc.otm.registry.MMenus
class StorageExporterMenu @JvmOverloads constructor(
@ -16,15 +16,15 @@ class StorageExporterMenu @JvmOverloads constructor(
MMenus.STORAGE_EXPORTER, p_38852_, inventory, tile
) {
val busFilterSlots: List<ItemFilterNetworkSlot>
val busFilterState: NetworkedBooleanInput
val busFilterState: BooleanInputWithFeedback
init {
if (tile != null) {
busFilterSlots = addFilterSlots(tile.filter)
busFilterState = NetworkedBooleanInput(this, tile.filter::isWhitelist)
busFilterState = BooleanInputWithFeedback(this, tile.filter::isWhitelist)
} else {
busFilterSlots = addFilterSlots(StorageExporterBlockEntity.MAX_FILTERS)
busFilterState = NetworkedBooleanInput(this)
busFilterState = BooleanInputWithFeedback(this)
}
addInventorySlots()

View File

@ -5,7 +5,7 @@ import net.minecraft.world.inventory.Slot
import ru.dbotthepony.mc.otm.block.entity.storage.StorageImporterBlockEntity
import ru.dbotthepony.mc.otm.container.ItemFilterNetworkSlot
import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu
import ru.dbotthepony.mc.otm.menu.input.NetworkedBooleanInput
import ru.dbotthepony.mc.otm.menu.input.BooleanInputWithFeedback
import ru.dbotthepony.mc.otm.registry.MMenus
class StorageImporterMenu @JvmOverloads constructor(
@ -16,15 +16,15 @@ class StorageImporterMenu @JvmOverloads constructor(
MMenus.STORAGE_IMPORTER, p_38852_, inventory, tile
) {
val busFilterSlots: List<ItemFilterNetworkSlot>
val busFilterState: NetworkedBooleanInput
val busFilterState: BooleanInputWithFeedback
init {
if (tile != null) {
busFilterSlots = addFilterSlots(tile.filter)
busFilterState = NetworkedBooleanInput(this, tile.filter::isWhitelist)
busFilterState = BooleanInputWithFeedback(this, tile.filter::isWhitelist)
} else {
busFilterSlots = addFilterSlots(StorageImporterBlockEntity.MAX_FILTERS)
busFilterState = NetworkedBooleanInput(this)
busFilterState = BooleanInputWithFeedback(this)
}
addInventorySlots()