Checkboxes!

This commit is contained in:
DBotThePony 2022-05-14 21:39:46 +07:00
parent aa6f28977b
commit 813a6f0ceb
Signed by: DBot
GPG Key ID: DCC23B5715498507
5 changed files with 112 additions and 2 deletions

View File

@ -1,7 +1,9 @@
package ru.dbotthepony.mc.otm.client.screen package ru.dbotthepony.mc.otm.client.screen
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
import ru.dbotthepony.mc.otm.client.screen.panels.CheckBoxLabelInputPanel
import ru.dbotthepony.mc.otm.client.screen.panels.FilterSlotPanel import ru.dbotthepony.mc.otm.client.screen.panels.FilterSlotPanel
import ru.dbotthepony.mc.otm.client.screen.panels.FramePanel import ru.dbotthepony.mc.otm.client.screen.panels.FramePanel
import ru.dbotthepony.mc.otm.client.screen.panels.SlotPanel import ru.dbotthepony.mc.otm.client.screen.panels.SlotPanel
@ -23,6 +25,8 @@ class StorageBusScreen(menu: StorageBusMenu, inventory: Inventory, title: Compon
} }
} }
CheckBoxLabelInputPanel(this, frame, menu.busFilterState, TranslatableComponent("otm.gui.filter.is_whitelist"), 59f, 78f, width = 170f)
return frame return frame
} }
} }

View File

@ -0,0 +1,104 @@
package ru.dbotthepony.mc.otm.client.screen.panels
import com.mojang.blaze3d.vertex.PoseStack
import net.minecraft.client.resources.sounds.SimpleSoundInstance
import net.minecraft.network.chat.Component
import net.minecraft.sounds.SoundEvents
import ru.dbotthepony.mc.otm.client.minecraft
import ru.dbotthepony.mc.otm.client.render.SkinElement
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
import ru.dbotthepony.mc.otm.client.screen.panels.CheckBoxPanel.Companion.REGULAR_DIMENSIONS
import ru.dbotthepony.mc.otm.menu.widget.BooleanPlayerInputWidget
open class CheckBoxPanel(
screen: MatteryScreen<*>,
parent: EditablePanel?,
x: Float = 0f,
y: Float = 0f,
width: Float = REGULAR_DIMENSIONS,
height: Float = REGULAR_DIMENSIONS
) : EditablePanel(
screen, parent, x, y, width, height
) {
open var checked = false
override fun innerRender(stack: PoseStack, mouse_x: Float, mouse_y: Float, flag: Float) {
if (checked) {
CHECKBOX_CHECKED.render(stack)
} else {
CHECKBOX_UNCHECKED.render(stack)
}
}
override fun mouseClickedInner(mouse_x: Double, mouse_y: Double, mouse_click_type: Int): Boolean {
checked = !checked
minecraft.soundManager.play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1.0f))
return true
}
companion object {
const val REGULAR_DIMENSIONS = 15f
val CHECKBOX_UNCHECKED = SkinElement(
image_x = 18f,
image_y = 65f,
rect_w = REGULAR_DIMENSIONS,
rect_h = REGULAR_DIMENSIONS,
)
val CHECKBOX_CHECKED = SkinElement(
image_x = 18f,
image_y = 80f,
rect_w = REGULAR_DIMENSIONS,
rect_h = REGULAR_DIMENSIONS,
)
}
}
open class CheckBoxInputPanel(
screen: MatteryScreen<*>,
parent: EditablePanel?,
val widget: BooleanPlayerInputWidget,
x: Float = 0f,
y: Float = 0f,
width: Float = REGULAR_DIMENSIONS + 120f,
height: Float = REGULAR_DIMENSIONS
) : CheckBoxPanel(screen, parent, x, y, width, height) {
override var checked: Boolean
get() = widget.value
set(value) {}
override fun mouseClickedInner(mouse_x: Double, mouse_y: Double, mouse_click_type: Int): Boolean {
super.mouseClickedInner(mouse_x, mouse_y, mouse_click_type)
widget.userInput(!checked)
return true
}
}
open class CheckBoxLabelPanel(
screen: MatteryScreen<*>,
parent: EditablePanel?,
text: Component,
x: Float = 0f,
y: Float = 0f,
width: Float = REGULAR_DIMENSIONS + 120f,
height: Float = REGULAR_DIMENSIONS
) : EditablePanel(screen, parent, x, y, width, height) {
val checkbox = CheckBoxPanel(screen, this, 0f, 0f, REGULAR_DIMENSIONS, REGULAR_DIMENSIONS)
val label = Label(screen, this, REGULAR_DIMENSIONS + 4f, 4f, text = text)
}
open class CheckBoxLabelInputPanel(
screen: MatteryScreen<*>,
parent: EditablePanel?,
widget: BooleanPlayerInputWidget,
text: Component,
x: Float = 0f,
y: Float = 0f,
width: Float = REGULAR_DIMENSIONS + 120f,
height: Float = REGULAR_DIMENSIONS
) : EditablePanel(screen, parent, x, y, width, height) {
val widget get() = checkbox.widget
val checkbox = CheckBoxInputPanel(screen, this, widget, 0f, 0f, REGULAR_DIMENSIONS, REGULAR_DIMENSIONS)
val label = Label(screen, this, REGULAR_DIMENSIONS + 4f, 4f, text = text)
}

View File

@ -31,6 +31,8 @@
"otm.gui.matter.format_and_complexity": "%s / Complexity: %s", "otm.gui.matter.format_and_complexity": "%s / Complexity: %s",
"otm.gui.matter.name": "MtU", "otm.gui.matter.name": "MtU",
"otm.gui.filter.is_whitelist": "Is Whitelist",
"otm.gui.android_research": "Research Tree", "otm.gui.android_research": "Research Tree",
"otm.gui.pattern.percentage_level": "Fill level: %s%%", "otm.gui.pattern.percentage_level": "Fill level: %s%%",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB