Get rid of tab positions, since they should be at top anyway
This commit is contained in:
parent
a50fcaceaa
commit
a142e4da98
@ -19,32 +19,26 @@ class DriveViewerScreen(menu: DriveViewerMenu, inventory: Inventory, title: Comp
|
|||||||
|
|
||||||
val views = ArrayList<EditablePanel>()
|
val views = ArrayList<EditablePanel>()
|
||||||
val settings = ArrayList<EditablePanel>()
|
val settings = ArrayList<EditablePanel>()
|
||||||
val viewButton = frame.addTab(FramePanel.Position.TOP)
|
|
||||||
val settingsButton = frame.addTab(FramePanel.Position.TOP)
|
|
||||||
|
|
||||||
viewButton.bindOnOpen {
|
frame.Tab(onOpen = {
|
||||||
for (panel in views) {
|
for (panel in views) {
|
||||||
panel.visible = true
|
panel.visible = true
|
||||||
}
|
}
|
||||||
}
|
}, onClose = {
|
||||||
|
|
||||||
viewButton.bindOnClose {
|
|
||||||
for (panel in views) {
|
for (panel in views) {
|
||||||
panel.visible = false
|
panel.visible = false
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
|
|
||||||
settingsButton.bindOnOpen {
|
frame.Tab(onOpen = {
|
||||||
for (panel in settings) {
|
for (panel in settings) {
|
||||||
panel.visible = true
|
panel.visible = true
|
||||||
}
|
}
|
||||||
}
|
}, onClose = {
|
||||||
|
|
||||||
settingsButton.bindOnClose {
|
|
||||||
for (panel in settings) {
|
for (panel in settings) {
|
||||||
panel.visible = false
|
panel.visible = false
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
|
|
||||||
views.add(PowerGaugePanel(this, frame, menu.powerWidget, 8f, 16f))
|
views.add(PowerGaugePanel(this, frame, menu.powerWidget, 8f, 16f))
|
||||||
views.add(BatterySlotPanel(this, frame, menu.batterySlot, 8f, 67f))
|
views.add(BatterySlotPanel(this, frame, menu.batterySlot, 8f, 67f))
|
||||||
|
@ -94,8 +94,8 @@ class EnergyCounterScreen(menu: EnergyCounterMenu, inventory: Inventory, title:
|
|||||||
|
|
||||||
val limitsPanels = frame.fetchChildren().filter { !infoPanels.contains(it) }
|
val limitsPanels = frame.fetchChildren().filter { !infoPanels.contains(it) }
|
||||||
|
|
||||||
val informationTab = frame.addTab(FramePanel.Position.TOP)
|
val informationTab = frame.Tab()
|
||||||
val limitsTab = frame.addTab(FramePanel.Position.TOP)
|
val limitsTab = frame.Tab()
|
||||||
|
|
||||||
informationTab.showHidePanels(infoPanels)
|
informationTab.showHidePanels(infoPanels)
|
||||||
limitsTab.showHidePanels(limitsPanels)
|
limitsTab.showHidePanels(limitsPanels)
|
||||||
|
@ -35,8 +35,8 @@ class MatterPanelScreen(
|
|||||||
|
|
||||||
scrollBar.dock = Dock.RIGHT
|
scrollBar.dock = Dock.RIGHT
|
||||||
|
|
||||||
frame.addTab(FramePanel.Position.TOP, open = { isPatternView = true })
|
frame.Tab(onOpen = { isPatternView = true })
|
||||||
frame.addTab(FramePanel.Position.TOP, open = { isPatternView = false })
|
frame.Tab(onOpen = { isPatternView = false })
|
||||||
|
|
||||||
val canvas = object : EditablePanel(this@MatterPanelScreen, frame, width = GRID_WIDTH * AbstractSlotPanel.SIZE) {
|
val canvas = object : EditablePanel(this@MatterPanelScreen, frame, width = GRID_WIDTH * AbstractSlotPanel.SIZE) {
|
||||||
init {
|
init {
|
||||||
|
@ -22,37 +22,14 @@ open class FramePanel(
|
|||||||
) : EditablePanel(screen, parent, x, y, width, height), NarratableEntry {
|
) : EditablePanel(screen, parent, x, y, width, height), NarratableEntry {
|
||||||
constructor(screen: MatteryScreen<*>, width: Float, height: Float, title: Component) : this(screen, null, 0f, 0f, width, height, title)
|
constructor(screen: MatteryScreen<*>, width: Float, height: Float, title: Component) : this(screen, null, 0f, 0f, width, height, title)
|
||||||
|
|
||||||
enum class Position(val width: Float, val height: Float, val active_width: Float, val active_height: Float) {
|
open inner class Tab(var onOpen: Runnable? = null, var onClose: Runnable? = null) :
|
||||||
TOP(28f, 28f, 28f, 32f),
|
EditablePanel(this@FramePanel.screen, this@FramePanel, 0f, 0f, 28f, 28f) {
|
||||||
// TODO: а оно вообще нужно?
|
|
||||||
LEFT(28f, 28f, 32f, 28f),
|
|
||||||
RIGHT(28f, 28f, 32f, 28f),
|
|
||||||
BOTTOM(28f, 28f, 28f, 32f);
|
|
||||||
}
|
|
||||||
|
|
||||||
open inner class FrameTabPanel(position: Position, on_open: Runnable? = null, on_close: Runnable? = null) :
|
var isActive = tabs.isEmpty()
|
||||||
EditablePanel(
|
|
||||||
this@FramePanel.screen,
|
|
||||||
this@FramePanel,
|
|
||||||
0f,
|
|
||||||
0f,
|
|
||||||
position.width,
|
|
||||||
position.height
|
|
||||||
) {
|
|
||||||
|
|
||||||
val frameTabPosition: Position = position
|
|
||||||
var isActive = false
|
|
||||||
var initial = false
|
var initial = false
|
||||||
|
|
||||||
var onOpen: Runnable? = on_open
|
init {
|
||||||
var onClose: Runnable? = on_close
|
tabs.add(this)
|
||||||
|
|
||||||
open fun bindOnOpen(value: Runnable?) {
|
|
||||||
onOpen = value
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun bindOnClose(value: Runnable?) {
|
|
||||||
onClose = value
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun showHidePanels(input: List<EditablePanel>) {
|
fun showHidePanels(input: List<EditablePanel>) {
|
||||||
@ -70,39 +47,37 @@ open class FramePanel(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun innerRender(stack: PoseStack, mouseX: Float, mouseY: Float, partialTick: Float) {
|
override fun innerRender(stack: PoseStack, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||||
if (frameTabPosition == Position.TOP) {
|
val width: Float
|
||||||
val width: Float
|
val height: Float
|
||||||
val height: Float
|
|
||||||
|
|
||||||
if (isActive) {
|
if (isActive) {
|
||||||
width = frameTabPosition.active_width
|
width = TAB_WIDTH_ACTIVE
|
||||||
height = frameTabPosition.active_height
|
height = TAB_HEIGHT_ACTIVE
|
||||||
RECTANGLE.middle.render(stack, 2f, 2f, width - 4, height - 2)
|
RECTANGLE.middle.render(stack, 2f, 2f, width - 4, height - 2)
|
||||||
} else {
|
} else {
|
||||||
width = frameTabPosition.width
|
width = TAB_WIDTH
|
||||||
height = frameTabPosition.height
|
height = TAB_HEIGHT
|
||||||
tabBackground.render(stack, 2f, 2f, width - 4, height - 2)
|
TAB_BACKGROUND.render(stack, 2f, 2f, width - 4, height - 2)
|
||||||
|
}
|
||||||
|
|
||||||
|
RECTANGLE.top.renderW(stack, 3f, 0f, width - 6)
|
||||||
|
RECTANGLE.left.renderH(stack, 0f, 3f, (height - if (isActive) if (initial) 2 else 4 else 3))
|
||||||
|
|
||||||
|
RECTANGLE.right.renderH(stack, width - RECTANGLE.right.w, 3f, (height - if (isActive) 4 else 3))
|
||||||
|
|
||||||
|
RECTANGLE.topLeft.render(stack, 0f, 0f)
|
||||||
|
RECTANGLE.topRight.render(stack, width - RECTANGLE.topRight.w, 0f)
|
||||||
|
|
||||||
|
if (isActive) {
|
||||||
|
if (!initial) {
|
||||||
|
TAB_LEFT_CONNECTION.render(stack, 0f, height - TAB_LEFT_CONNECTION.h - 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
RECTANGLE.top.renderW(stack, 3f, 0f, width - 6)
|
TAB_RIGHT_CONNECTION.render(
|
||||||
RECTANGLE.left.renderH(stack, 0f, 3f, (height - if (isActive) if (initial) 2 else 4 else 3))
|
stack,
|
||||||
|
width - TAB_RIGHT_CONNECTION.w,
|
||||||
RECTANGLE.right.renderH(stack, width - RECTANGLE.right.w, 3f, (height - if (isActive) 4 else 3))
|
height - TAB_LEFT_CONNECTION.h - 1
|
||||||
|
)
|
||||||
RECTANGLE.topLeft.render(stack, 0f, 0f)
|
|
||||||
RECTANGLE.topRight.render(stack, width - RECTANGLE.topRight.w, 0f)
|
|
||||||
|
|
||||||
if (isActive) {
|
|
||||||
if (!initial) {
|
|
||||||
tabLeftConnection.render(stack, 0f, height - tabLeftConnection.h - 1)
|
|
||||||
}
|
|
||||||
|
|
||||||
tabRightConnection.render(
|
|
||||||
stack,
|
|
||||||
width - tabRightConnection.w,
|
|
||||||
height - tabLeftConnection.h - 1
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -119,34 +94,7 @@ open class FramePanel(
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
for (tab in tabsTop) {
|
for (tab in tabs) {
|
||||||
if (tab !== this) {
|
|
||||||
if (tab.isActive) {
|
|
||||||
tab.onClose()
|
|
||||||
tab.isActive = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (tab in tabsLeft) {
|
|
||||||
if (tab !== this) {
|
|
||||||
if (tab.isActive) {
|
|
||||||
tab.onClose()
|
|
||||||
tab.isActive = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (tab in tabsRight) {
|
|
||||||
if (tab !== this) {
|
|
||||||
if (tab.isActive) {
|
|
||||||
tab.onClose()
|
|
||||||
tab.isActive = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (tab in tabsBottom) {
|
|
||||||
if (tab !== this) {
|
if (tab !== this) {
|
||||||
if (tab.isActive) {
|
if (tab.isActive) {
|
||||||
tab.onClose()
|
tab.onClose()
|
||||||
@ -163,35 +111,11 @@ open class FramePanel(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected val tabsTop = ArrayList<FrameTabPanel>()
|
protected val tabs = ArrayList<Tab>()
|
||||||
protected val tabsLeft = ArrayList<FrameTabPanel>()
|
|
||||||
protected val tabsRight = ArrayList<FrameTabPanel>()
|
|
||||||
protected val tabsBottom = ArrayList<FrameTabPanel>()
|
|
||||||
|
|
||||||
@JvmOverloads
|
|
||||||
fun addTab(position: Position, open: Runnable? = null, close: Runnable? = null): FrameTabPanel {
|
|
||||||
val tab = FrameTabPanel(position, open, close)
|
|
||||||
doAddTab(tab)
|
|
||||||
return tab
|
|
||||||
}
|
|
||||||
|
|
||||||
protected fun doAddTab(tab: FrameTabPanel) {
|
|
||||||
if (tabsTop.size == 0 && tabsLeft.size == 0 && tabsRight.size == 0 && tabsBottom.size == 0) {
|
|
||||||
tab.isActive = true
|
|
||||||
}
|
|
||||||
|
|
||||||
when (tab.frameTabPosition) {
|
|
||||||
Position.TOP -> tabsTop.add(tab)
|
|
||||||
Position.LEFT -> tabsLeft.add(tab)
|
|
||||||
Position.RIGHT -> tabsRight.add(tab)
|
|
||||||
Position.BOTTOM -> tabsBottom.add(tab)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun performLayout() {
|
override fun performLayout() {
|
||||||
for (i in tabsTop.indices) {
|
for ((i, tab) in tabs.withIndex()) {
|
||||||
val tab = tabsTop[i]
|
tab.setPos(i * TAB_WIDTH, -TAB_HEIGHT)
|
||||||
tab.setPos(i * Position.TOP.width, -Position.TOP.height)
|
|
||||||
tab.initial = i == 0
|
tab.initial = i == 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -289,8 +213,13 @@ open class FramePanel(
|
|||||||
padding = DockProperty(-3f, -3f, -3f, -3f)
|
padding = DockProperty(-3f, -3f, -3f, -3f)
|
||||||
)
|
)
|
||||||
|
|
||||||
val tabRightConnection = WidgetLocation.WIDGETS.element(x = 30f, y = 0f, w = 3f, h = 5f)
|
val TAB_RIGHT_CONNECTION = WidgetLocation.WIDGETS.element(x = 30f, y = 0f, w = 3f, h = 5f)
|
||||||
val tabLeftConnection = WidgetLocation.WIDGETS.element(x = 33f, y = 0f, w = 3f, h = 5f)
|
val TAB_LEFT_CONNECTION = WidgetLocation.WIDGETS.element(x = 33f, y = 0f, w = 3f, h = 5f)
|
||||||
val tabBackground = WidgetLocation.WIDGETS.element(x = 30f, y = 6f, w = 6f, h = 6f)
|
val TAB_BACKGROUND = WidgetLocation.WIDGETS.element(x = 30f, y = 6f, w = 6f, h = 6f)
|
||||||
|
|
||||||
|
const val TAB_HEIGHT = 28f
|
||||||
|
const val TAB_WIDTH = 28f
|
||||||
|
const val TAB_HEIGHT_ACTIVE = 32f
|
||||||
|
const val TAB_WIDTH_ACTIVE = 28f
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user