Final improvements to quick stack controls

This commit is contained in:
DBotThePony 2025-03-21 18:35:25 +07:00
parent f16b003cdf
commit a6361f10f2
Signed by: DBot
GPG Key ID: DCC23B5715498507
2 changed files with 9 additions and 73 deletions

View File

@ -286,12 +286,7 @@ class ExopackInventoryScreen(menu: ExopackInventoryMenu) : MatteryScreen<Exopack
EffectListPanel(this, frame, menu.player, x - 56f, gridHeight = 6).tick()
val quickStack = QuickStackControlsPanel(this)
quickStack.dockNear = frame
quickStack.dockTop = 96f
quickStack.dock = Dock.LEFT
addPanel(quickStack)
QuickStackControlsPanel(this, frame, x = -19f, y = 96f + 18f)
return frame
}

View File

@ -18,18 +18,21 @@ import java.util.function.IntConsumer
class QuickStackControlsPanel<out S : Screen>(
screen: S,
parent: EditablePanel<*>? = null,
) : EditablePanel<S>(screen, parent, 0f, 0f, 18f, 18f) {
x: Float = 0f,
y: Float = 0f
) : EditablePanel<S>(screen, parent, x, y, 18f, 18f) {
private val grid = GridPanel(screen, this, columns = 1, rows = 1)
private val buttons = ArrayList<ButtonPanel<S>>()
init {
grid.dock = Dock.FILL
grid.layout = GridPanel.Layout.TOP_RIGHT
grid.columnMajorOrder = true
}
private inner class MainButton : ButtonPanel<S>(screen, grid, width = 18f, height = 18f) {
init {
dockMargin = DockProperty.left(1f)
dockMargin = DockProperty.bottom(1f)
childrenOrder = -100
tooltips.add(QuickMoveInput.Mode.RESTOCK_WITH_MOVE.textToStorage)
tooltips.add(TextComponent(""))
@ -70,72 +73,10 @@ class QuickStackControlsPanel<out S : Screen>(
return false
}
private fun moveToDockedParent() {
val dockNear = dockNear
if (dockNear != null && parent == null && dock != Dock.NONE && dock != Dock.FILL) {
x = dockNear.absoluteX
y = dockNear.absoluteY
when (dock) {
Dock.LEFT -> {
x -= width + dockMargin.right
y += dockMargin.top
}
Dock.RIGHT -> {
x += width + dockMargin.left
y += dockMargin.top
}
Dock.TOP -> {
y -= height + dockMargin.bottom
x += dockMargin.left
}
Dock.BOTTOM -> {
y += height + dockMargin.top
x += dockMargin.left
}
else -> throw RuntimeException("you w0t m8?")
}
}
}
override fun sizeToContents() {
val oldWidth = width
val oldHeight = height
super.sizeToContents()
if (parent == null && dockNear == null) {
when (dock) {
Dock.LEFT -> x -= width - oldWidth
Dock.TOP -> y -= height - oldHeight
else -> {} // do nothing
}
} else {
moveToDockedParent()
}
}
override fun onParented(parent: EditablePanel<*>) {
super.onParented(parent)
dockNear = null
}
var dockNear: EditablePanel<*>? = null
set(value) {
if (field != value) {
field = value
moveToDockedParent()
}
}
override fun tickInner() {
super.tickInner()
moveToDockedParent()
x -= width - oldWidth
}
init {
@ -146,7 +87,7 @@ class QuickStackControlsPanel<out S : Screen>(
onPress = IntConsumer { PacketDistributor.sendToServer(QuickStackPacket(mode, false)) })
button.childrenOrder = QuickMoveInput.Mode.entries.size + i
button.dockMargin = DockProperty.left(1f)
button.dockMargin = DockProperty.bottomRight(1f)
button.visible = false
button.tooltips.add(mode.textFromStorage)
buttons.add(button)
@ -159,7 +100,7 @@ class QuickStackControlsPanel<out S : Screen>(
onPress = IntConsumer { PacketDistributor.sendToServer(QuickStackPacket(mode, true)) })
button.childrenOrder = i
button.dockMargin = DockProperty.left(1f)
button.dockMargin = DockProperty.bottom(1f)
button.visible = false
button.tooltips.add(mode.textToStorage)
buttons.add(button)