mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-12 19:44:05 +09:00
single screen ui for world portal
This commit is contained in:
@@ -19,5 +19,6 @@
|
|||||||
"GAME_CRAFTABLE_ITEMS": "Craftable Items",
|
"GAME_CRAFTABLE_ITEMS": "Craftable Items",
|
||||||
"CONTEXT_WORLD_SEARCH": "World Search",
|
"CONTEXT_WORLD_SEARCH": "World Search",
|
||||||
"CONTEXT_WORLD_LIST": "Worlds List",
|
"CONTEXT_WORLD_LIST": "Worlds List",
|
||||||
"MENU_LABEL_RENAME": "Rename"
|
"MENU_LABEL_RENAME": "Rename",
|
||||||
|
"GAME_ACTION_TELEPORT": "Teleport"
|
||||||
}
|
}
|
||||||
@@ -16,13 +16,13 @@ class FixtureWorldPortal : FixtureBase {
|
|||||||
BlockBox(BlockBox.NO_COLLISION, 5, 2),
|
BlockBox(BlockBox.NO_COLLISION, 5, 2),
|
||||||
nameFun = { Lang["ITEM_WORLD_PORTAL"] },
|
nameFun = { Lang["ITEM_WORLD_PORTAL"] },
|
||||||
mainUI = UIWorldPortal(),
|
mainUI = UIWorldPortal(),
|
||||||
inventory = FixtureInventory(200, CAPACITY_MODE_WEIGHT)
|
// inventory = FixtureInventory(200, CAPACITY_MODE_WEIGHT)
|
||||||
) {
|
) {
|
||||||
// TODO do something with (mainUI as UIWorldPortal).***
|
// TODO do something with (mainUI as UIWorldPortal).***
|
||||||
(mainUI as UIWorldPortal).let { ui ->
|
// (mainUI as UIWorldPortal).let { ui ->
|
||||||
ui.transitionalCargo.chestInventory = this.inventory!!
|
// ui.transitionalCargo.chestInventory = this.inventory!!
|
||||||
ui.transitionalCargo.chestNameFun = this.nameFun
|
// ui.transitionalCargo.chestNameFun = this.nameFun
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ class UIBuildingMakerBlockChooser(val parent: BuildingMaker): UICanvas() {
|
|||||||
activeCol = Color.WHITE
|
activeCol = Color.WHITE
|
||||||
)
|
)
|
||||||
|
|
||||||
paletteItem.clickOnceListener = { _, _, _ ->
|
paletteItem.clickOnceListener = { _, _ ->
|
||||||
parent.setPencilColour(prop.id)
|
parent.setPencilColour(prop.id)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -100,11 +100,9 @@ class UIBuildingMakerPenMenu(val parent: BuildingMaker): UICanvas() {
|
|||||||
toolButtons.forEachIndexed { index, button ->
|
toolButtons.forEachIndexed { index, button ->
|
||||||
uiItems.add(button)
|
uiItems.add(button)
|
||||||
|
|
||||||
button.clickOnceListener = { _, _, b ->
|
button.clickOnceListener = { _, _ ->
|
||||||
if (b == App.getConfigInt("config_mouseprimary")) {
|
toolButtonsJob[index].invoke()
|
||||||
toolButtonsJob[index].invoke()
|
closeGracefully()
|
||||||
closeGracefully()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ class UIGraphicsControlPanel(remoCon: UIRemoCon?) : UICanvas() {
|
|||||||
}
|
}
|
||||||
else if (args.startsWith("toggle")) {
|
else if (args.startsWith("toggle")) {
|
||||||
UIItemToggleButton(this, x, y, spinnerWidth, App.getConfigBoolean(optionName)) to { it: UIItem, optionStr: String ->
|
UIItemToggleButton(this, x, y, spinnerWidth, App.getConfigBoolean(optionName)) to { it: UIItem, optionStr: String ->
|
||||||
(it as UIItemToggleButton).clickOnceListener = { _, _, _ ->
|
(it as UIItemToggleButton).clickOnceListener = { _, _ ->
|
||||||
it.toggle()
|
it.toggle()
|
||||||
App.setConfig(optionStr, it.getStatus())
|
App.setConfig(optionStr, it.getStatus())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,11 +91,11 @@ class UIItemListNavBarVertical(
|
|||||||
gridButtonListener(this, gridModeButtons[1])
|
gridButtonListener(this, gridModeButtons[1])
|
||||||
}
|
}
|
||||||
|
|
||||||
scrollUpButton.clickOnceListener = { _, _, _ ->
|
scrollUpButton.clickOnceListener = { _, _ ->
|
||||||
scrollUpButton.highlighted = false
|
scrollUpButton.highlighted = false
|
||||||
scrollUpListener(this, scrollUpButton)
|
scrollUpListener(this, scrollUpButton)
|
||||||
}
|
}
|
||||||
scrollDownButton.clickOnceListener = { _, _, _ ->
|
scrollDownButton.clickOnceListener = { _, _ ->
|
||||||
scrollDownButton.highlighted = false
|
scrollDownButton.highlighted = false
|
||||||
scrollDownListener(this, scrollDownButton)
|
scrollDownListener(this, scrollDownButton)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ class UIKeyboardControlPanel(remoCon: UIRemoCon?) : UICanvas() {
|
|||||||
keycaps.values.forEach { addUIitem(it) }
|
keycaps.values.forEach { addUIitem(it) }
|
||||||
updateKeycaps()
|
updateKeycaps()
|
||||||
|
|
||||||
buttonReset.clickOnceListener = { x, y, button ->
|
buttonReset.clickOnceListener = { x, y ->
|
||||||
resetKeyConfig()
|
resetKeyConfig()
|
||||||
updateKeycaps()
|
updateKeycaps()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -478,7 +478,7 @@ class UIItemPlayerCells(
|
|||||||
override val width = SAVE_CELL_WIDTH
|
override val width = SAVE_CELL_WIDTH
|
||||||
override val height = SAVE_CELL_HEIGHT
|
override val height = SAVE_CELL_HEIGHT
|
||||||
|
|
||||||
override var clickOnceListener: ((Int, Int, Int) -> Unit)? = { _: Int, _: Int, _: Int ->
|
override var clickOnceListener: ((Int, Int) -> Unit)? = { _: Int, _: Int ->
|
||||||
UILoadGovernor.playerDisk = skimmer
|
UILoadGovernor.playerDisk = skimmer
|
||||||
parent.advanceMode()
|
parent.advanceMode()
|
||||||
}
|
}
|
||||||
@@ -739,7 +739,7 @@ class UIItemWorldCells(
|
|||||||
|
|
||||||
private var highlightCol: Color = Toolkit.Theme.COL_LIST_DEFAULT
|
private var highlightCol: Color = Toolkit.Theme.COL_LIST_DEFAULT
|
||||||
|
|
||||||
override var clickOnceListener: ((Int, Int, Int) -> Unit)? = { _: Int, _: Int, _: Int ->
|
override var clickOnceListener: ((Int, Int) -> Unit)? = { _: Int, _: Int ->
|
||||||
UILoadGovernor.worldDisk = skimmer
|
UILoadGovernor.worldDisk = skimmer
|
||||||
parent.advanceMode()
|
parent.advanceMode()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,25 +37,6 @@ class UIWorldPortal : UICanvas(
|
|||||||
|
|
||||||
val controlHelpHeight = App.fontGame.lineHeight
|
val controlHelpHeight = App.fontGame.lineHeight
|
||||||
|
|
||||||
private var panelTransitionLocked = false
|
|
||||||
|
|
||||||
fun lockTransition() {
|
|
||||||
panelTransitionLocked = true
|
|
||||||
}
|
|
||||||
fun unlockTransition() {
|
|
||||||
panelTransitionLocked = false
|
|
||||||
}
|
|
||||||
fun requestTransition(target: Int) = transitionPanel.requestTransition(target)
|
|
||||||
|
|
||||||
|
|
||||||
val catBar = UIItemWorldPortalTopBar(
|
|
||||||
this,
|
|
||||||
0,
|
|
||||||
42 - YPOS_CORRECTION + (App.scr.height - internalHeight) / 2,
|
|
||||||
) { i ->
|
|
||||||
if (!panelTransitionLocked) requestTransition(i ushr 1)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private val SP = "\u3000 "
|
private val SP = "\u3000 "
|
||||||
val portalListingControlHelp: String
|
val portalListingControlHelp: String
|
||||||
@@ -67,27 +48,22 @@ class UIWorldPortal : UICanvas(
|
|||||||
"$SP${App.gamepadLabelRT} ${Lang["GAME_INVENTORY"]}"
|
"$SP${App.gamepadLabelRT} ${Lang["GAME_INVENTORY"]}"
|
||||||
|
|
||||||
|
|
||||||
val transitionalSearch = UIWorldPortalSearch(this)
|
// val transitionalSearch = UIWorldPortalSearch(this)
|
||||||
val transitionalListing = UIWorldPortalListing(this)
|
val transitionalListing = UIWorldPortalListing(this)
|
||||||
val transitionalCargo = UIWorldPortalCargo(this)
|
// val transitionalCargo = UIWorldPortalCargo(this)
|
||||||
private val transitionPanel = UIItemHorizontalFadeSlide(
|
private val transitionPanel = UIItemHorizontalFadeSlide(
|
||||||
this,
|
this,
|
||||||
(width - internalWidth) / 2,
|
(width - internalWidth) / 2,
|
||||||
INVENTORY_CELLS_OFFSET_Y(),
|
INVENTORY_CELLS_OFFSET_Y(),
|
||||||
width,
|
width,
|
||||||
App.scr.height,
|
App.scr.height,
|
||||||
1f,
|
0f,
|
||||||
transitionalSearch, transitionalListing, transitionalCargo
|
transitionalListing
|
||||||
)
|
)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
addUIitem(catBar)
|
|
||||||
addUIitem(transitionPanel)
|
addUIitem(transitionPanel)
|
||||||
|
|
||||||
catBar.selectionChangeListener = { old, new ->
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal var xEnd = (width + internalWidth).div(2).toFloat()
|
internal var xEnd = (width + internalWidth).div(2).toFloat()
|
||||||
@@ -99,7 +75,6 @@ class UIWorldPortal : UICanvas(
|
|||||||
|
|
||||||
|
|
||||||
override fun updateUI(delta: Float) {
|
override fun updateUI(delta: Float) {
|
||||||
catBar.update(delta)
|
|
||||||
transitionPanel.update(delta)
|
transitionPanel.update(delta)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -107,7 +82,6 @@ class UIWorldPortal : UICanvas(
|
|||||||
drawBackground(batch, handler.opacity)
|
drawBackground(batch, handler.opacity)
|
||||||
|
|
||||||
// UI items
|
// UI items
|
||||||
catBar.render(batch, camera)
|
|
||||||
transitionPanel.render(batch, camera)
|
transitionPanel.render(batch, camera)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -122,7 +96,6 @@ class UIWorldPortal : UICanvas(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun dispose() {
|
override fun dispose() {
|
||||||
catBar.dispose()
|
|
||||||
transitionPanel.dispose()
|
transitionPanel.dispose()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,16 @@
|
|||||||
package net.torvald.terrarum.modulebasegame.ui
|
package net.torvald.terrarum.modulebasegame.ui
|
||||||
|
|
||||||
import com.badlogic.gdx.graphics.Camera
|
import com.badlogic.gdx.graphics.Camera
|
||||||
|
import com.badlogic.gdx.graphics.Color
|
||||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
||||||
import net.torvald.terrarum.App
|
import net.torvald.terrarum.*
|
||||||
import net.torvald.terrarum.INGAME
|
import net.torvald.terrarum.gameactors.AVKey
|
||||||
import net.torvald.terrarum.gameitems.GameItem
|
import net.torvald.terrarum.gameitems.GameItem
|
||||||
|
import net.torvald.terrarum.langpack.Lang
|
||||||
import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory
|
import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory
|
||||||
import net.torvald.terrarum.ui.Toolkit
|
import net.torvald.terrarum.ui.Toolkit
|
||||||
import net.torvald.terrarum.ui.UICanvas
|
import net.torvald.terrarum.ui.UICanvas
|
||||||
|
import net.torvald.unicode.getKeycapPC
|
||||||
|
|
||||||
class UIWorldPortalCargo(val full: UIWorldPortal) : UICanvas(), HasInventory {
|
class UIWorldPortalCargo(val full: UIWorldPortal) : UICanvas(), HasInventory {
|
||||||
|
|
||||||
@@ -33,12 +36,217 @@ class UIWorldPortalCargo(val full: UIWorldPortal) : UICanvas(), HasInventory {
|
|||||||
override fun getFixtureInventory(): FixtureInventory = chestInventory
|
override fun getFixtureInventory(): FixtureInventory = chestInventory
|
||||||
override fun getPlayerInventory(): FixtureInventory = INGAME.actorNowPlaying!!.inventory
|
override fun getPlayerInventory(): FixtureInventory = INGAME.actorNowPlaying!!.inventory
|
||||||
|
|
||||||
override fun updateUI(delta: Float) {
|
private val catBar: UIItemInventoryCatBar
|
||||||
|
private val itemListChest: UIItemInventoryItemGrid
|
||||||
|
private val itemListPlayer: UIItemInventoryItemGrid
|
||||||
|
|
||||||
|
private var encumbrancePerc = 0f
|
||||||
|
private var isEncumbered = false
|
||||||
|
|
||||||
|
private var halfSlotOffset = (UIItemInventoryElemSimple.height + UIItemInventoryItemGrid.listGap * 2) / 2
|
||||||
|
|
||||||
|
init {
|
||||||
|
catBar = UIItemInventoryCatBar(
|
||||||
|
this,
|
||||||
|
(width - UIInventoryFull.catBarWidth) / 2,
|
||||||
|
42 - UIInventoryFull.YPOS_CORRECTION + (App.scr.height - UIInventoryFull.internalHeight) / 2,
|
||||||
|
UIInventoryFull.internalWidth,
|
||||||
|
UIInventoryFull.catBarWidth,
|
||||||
|
false
|
||||||
|
)
|
||||||
|
catBar.selectionChangeListener = { old, new -> itemListUpdate() }
|
||||||
|
itemListChest = UIItemInventoryItemGrid(
|
||||||
|
this,
|
||||||
|
catBar,
|
||||||
|
{ getFixtureInventory() },
|
||||||
|
Toolkit.hdrawWidth - UIInventoryFull.getWidthOfCells(6) - halfSlotOffset,
|
||||||
|
UIInventoryFull.INVENTORY_CELLS_OFFSET_Y(),
|
||||||
|
6, UIInventoryFull.CELLS_VRT,
|
||||||
|
drawScrollOnRightside = false,
|
||||||
|
drawWallet = false,
|
||||||
|
keyDownFun = { _, _, _, _, _ -> Unit },
|
||||||
|
touchDownFun = { gameItem, amount, button, _, _ ->
|
||||||
|
if (button == App.getConfigInt("config_mouseprimary")) {
|
||||||
|
if (gameItem != null) {
|
||||||
|
negotiator.reject(getFixtureInventory(), getPlayerInventory(), gameItem, amount)
|
||||||
|
}
|
||||||
|
itemListUpdate()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
// make grid mode buttons work together
|
||||||
|
itemListChest.navRemoCon.listButtonListener = { _,_ -> setCompact(false) }
|
||||||
|
itemListChest.navRemoCon.gridButtonListener = { _,_ -> setCompact(true) }
|
||||||
|
|
||||||
|
itemListPlayer = UIItemInventoryItemGrid(
|
||||||
|
this,
|
||||||
|
catBar,
|
||||||
|
{ INGAME.actorNowPlaying!!.inventory }, // literally a player's inventory
|
||||||
|
Toolkit.hdrawWidth + halfSlotOffset,
|
||||||
|
UIInventoryFull.INVENTORY_CELLS_OFFSET_Y(),
|
||||||
|
6, UIInventoryFull.CELLS_VRT,
|
||||||
|
drawScrollOnRightside = true,
|
||||||
|
drawWallet = false,
|
||||||
|
keyDownFun = { _, _, _, _, _ -> Unit },
|
||||||
|
touchDownFun = { gameItem, amount, button, _, _ ->
|
||||||
|
if (button == App.getConfigInt("config_mouseprimary")) {
|
||||||
|
if (gameItem != null) {
|
||||||
|
negotiator.accept(getPlayerInventory(), getFixtureInventory(), gameItem, amount)
|
||||||
|
}
|
||||||
|
itemListUpdate()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
itemListPlayer.navRemoCon.listButtonListener = { _,_ -> setCompact(false) }
|
||||||
|
itemListPlayer.navRemoCon.gridButtonListener = { _,_ -> setCompact(true) }
|
||||||
|
|
||||||
|
handler.allowESCtoClose = true
|
||||||
|
|
||||||
|
addUIitem(itemListChest)
|
||||||
|
addUIitem(itemListPlayer)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun renderUI(batch: SpriteBatch, camera: Camera) {
|
private var openingClickLatched = false
|
||||||
|
|
||||||
|
override fun show() {
|
||||||
|
itemListPlayer.getInventory = { INGAME.actorNowPlaying!!.inventory }
|
||||||
|
|
||||||
|
itemListUpdate()
|
||||||
|
|
||||||
|
openingClickLatched = Terrarum.mouseDown
|
||||||
|
|
||||||
|
UIItemInventoryItemGrid.tooltipShowing.clear()
|
||||||
|
INGAME.setTooltipMessage(null)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun itemListUpdate() {
|
||||||
|
itemListChest.rebuild(catBar.catIconsMeaning[catBar.selectedIcon])
|
||||||
|
itemListPlayer.rebuild(catBar.catIconsMeaning[catBar.selectedIcon])
|
||||||
|
|
||||||
|
encumbrancePerc = getPlayerInventory().capacity.toFloat() / getPlayerInventory().maxCapacity
|
||||||
|
isEncumbered = getPlayerInventory().isEncumbered
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setCompact(yes: Boolean) {
|
||||||
|
itemListChest.isCompactMode = yes
|
||||||
|
itemListChest.navRemoCon.gridModeButtons[0].highlighted = !yes
|
||||||
|
itemListChest.navRemoCon.gridModeButtons[1].highlighted = yes
|
||||||
|
itemListChest.itemPage = 0
|
||||||
|
itemListChest.rebuild(catBar.catIconsMeaning[catBar.selectedIcon])
|
||||||
|
|
||||||
|
itemListPlayer.isCompactMode = yes
|
||||||
|
itemListPlayer.navRemoCon.gridModeButtons[0].highlighted = !yes
|
||||||
|
itemListPlayer.navRemoCon.gridModeButtons[1].highlighted = yes
|
||||||
|
itemListPlayer.itemPage = 0
|
||||||
|
itemListPlayer.rebuild(catBar.catIconsMeaning[catBar.selectedIcon])
|
||||||
|
|
||||||
|
itemListUpdate()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun touchDown(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean {
|
||||||
|
if (!openingClickLatched) {
|
||||||
|
return super.touchDown(screenX, screenY, pointer, button)
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun updateUI(delta: Float) {
|
||||||
|
catBar.update(delta)
|
||||||
|
itemListChest.update(delta)
|
||||||
|
itemListPlayer.update(delta)
|
||||||
|
|
||||||
|
if (openingClickLatched && !Terrarum.mouseDown) openingClickLatched = false
|
||||||
|
}
|
||||||
|
|
||||||
|
private val thisOffsetX = Toolkit.hdrawWidth - UIInventoryFull.getWidthOfCells(6) - halfSlotOffset
|
||||||
|
private val thisOffsetX2 = thisOffsetX + (UIItemInventoryItemGrid.listGap + UIItemInventoryElemWide.height) * 7
|
||||||
|
private val thisOffsetY = UIInventoryFull.INVENTORY_CELLS_OFFSET_Y()
|
||||||
|
private val cellsWidth = (UIItemInventoryItemGrid.listGap + UIItemInventoryElemWide.height) * 6 - UIItemInventoryItemGrid.listGap
|
||||||
|
|
||||||
|
private val controlHelp: String
|
||||||
|
get() = if (App.environment == RunningEnvironment.PC)
|
||||||
|
"${getKeycapPC(App.getConfigInt("control_key_inventory"))} ${Lang["GAME_ACTION_CLOSE"]}"
|
||||||
|
else
|
||||||
|
"${App.gamepadLabelStart} ${Lang["GAME_ACTION_CLOSE"]} "
|
||||||
|
|
||||||
|
override fun renderUI(batch: SpriteBatch, camera: Camera) {
|
||||||
|
// background fill
|
||||||
|
UIInventoryFull.drawBackground(batch, handler.opacity)
|
||||||
|
|
||||||
|
// UI items
|
||||||
|
batch.color = Color.WHITE
|
||||||
|
|
||||||
|
catBar.render(batch, camera)
|
||||||
|
itemListChest.render(batch, camera)
|
||||||
|
itemListPlayer.render(batch, camera)
|
||||||
|
|
||||||
|
|
||||||
|
blendNormalStraightAlpha(batch)
|
||||||
|
|
||||||
|
// encumbrance meter
|
||||||
|
val encumbranceText = Lang["GAME_INVENTORY_ENCUMBRANCE"]
|
||||||
|
val chestName = chestNameFun()
|
||||||
|
val playerName = INGAME.actorNowPlaying!!.actorValue.getAsString(AVKey.NAME).orEmpty().let { it.ifBlank { Lang["GAME_INVENTORY"] } }
|
||||||
|
val encumbBarXPos = itemListPlayer.posX + itemListPlayer.width - UIInventoryCells.weightBarWidth + 36
|
||||||
|
val encumbBarTextXPos = encumbBarXPos - 6 - App.fontGame.getWidth(encumbranceText)
|
||||||
|
val yEnd = -UIInventoryFull.YPOS_CORRECTION + (App.scr.height + UIInventoryFull.internalHeight).div(2).toFloat() // directly copied from UIInventoryFull.yEnd
|
||||||
|
val encumbBarYPos = yEnd - 20 + 3 // dunno why but extra 3 px is needed
|
||||||
|
val encumbCol = UIItemInventoryCellCommonRes.getHealthMeterColour(1f - encumbrancePerc, 0f, 1f)
|
||||||
|
val encumbBack = encumbCol mul UIItemInventoryCellCommonRes.meterBackDarkening
|
||||||
|
|
||||||
|
// encumbrance bar background
|
||||||
|
batch.color = encumbBack
|
||||||
|
Toolkit.fillArea(
|
||||||
|
batch,
|
||||||
|
encumbBarXPos,
|
||||||
|
encumbBarYPos,
|
||||||
|
UIInventoryCells.weightBarWidth,
|
||||||
|
UIInventoryFull.controlHelpHeight - 6f
|
||||||
|
)
|
||||||
|
// encumbrance bar
|
||||||
|
batch.color = encumbCol
|
||||||
|
Toolkit.fillArea(
|
||||||
|
batch,
|
||||||
|
encumbBarXPos, encumbBarYPos,
|
||||||
|
if (getPlayerInventory().capacityMode == FixtureInventory.CAPACITY_MODE_NO_ENCUMBER)
|
||||||
|
1f
|
||||||
|
else // make sure 1px is always be seen
|
||||||
|
minOf(UIInventoryCells.weightBarWidth, maxOf(1f, UIInventoryCells.weightBarWidth * encumbrancePerc)),
|
||||||
|
UIInventoryFull.controlHelpHeight - 6f
|
||||||
|
)
|
||||||
|
|
||||||
|
// chest name text
|
||||||
|
batch.color = Color.WHITE
|
||||||
|
App.fontGame.draw(batch, chestName, thisOffsetX + (cellsWidth - App.fontGame.getWidth(chestName)) / 2, thisOffsetY - 30)
|
||||||
|
App.fontGame.draw(batch, playerName, thisOffsetX2 + (cellsWidth - App.fontGame.getWidth(playerName)) / 2, thisOffsetY - 30)
|
||||||
|
|
||||||
|
// control hint
|
||||||
|
App.fontGame.draw(batch, controlHelp, thisOffsetX - 34f, encumbBarYPos - 3)
|
||||||
|
|
||||||
|
// encumb text
|
||||||
|
batch.color = Color.WHITE
|
||||||
|
App.fontGame.draw(batch, encumbranceText, encumbBarTextXPos, encumbBarYPos - 3f)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun doOpening(delta: Float) {
|
||||||
|
INGAME.pause()
|
||||||
|
INGAME.setTooltipMessage(null)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun doClosing(delta: Float) {
|
||||||
|
INGAME.resume()
|
||||||
|
INGAME.setTooltipMessage(null)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun endOpening(delta: Float) {
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun endClosing(delta: Float) {
|
||||||
|
UIItemInventoryItemGrid.tooltipShowing.clear()
|
||||||
|
INGAME.setTooltipMessage(null) // required!
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
override fun dispose() {
|
override fun dispose() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ class UIWorldPortalListing(val full: UIWorldPortal) : UICanvas() {
|
|||||||
private val textAreaW = thumbw - 32
|
private val textAreaW = thumbw - 32
|
||||||
private val thumbh = 252
|
private val thumbh = 252
|
||||||
private val hx = Toolkit.drawWidth.div(2)
|
private val hx = Toolkit.drawWidth.div(2)
|
||||||
private val y = INVENTORY_CELLS_OFFSET_Y() + 1
|
private val y = INVENTORY_CELLS_OFFSET_Y() + 1 - 34
|
||||||
|
|
||||||
private val listCount = getCellCountVertically(UIItemWorldCellsSimple.height, gridGap)
|
private val listCount = getCellCountVertically(UIItemWorldCellsSimple.height, gridGap)
|
||||||
private val listHeight = UIItemWorldCellsSimple.height + (listCount - 1) * (UIItemWorldCellsSimple.height + gridGap)
|
private val listHeight = UIItemWorldCellsSimple.height + (listCount - 1) * (UIItemWorldCellsSimple.height + gridGap)
|
||||||
@@ -57,18 +57,10 @@ class UIWorldPortalListing(val full: UIWorldPortal) : UICanvas() {
|
|||||||
private val memoryGaugeWidth = textAreaW
|
private val memoryGaugeWidth = textAreaW
|
||||||
private val deleteButtonWidth = (thumbw - gridGap) / 2
|
private val deleteButtonWidth = (thumbw - gridGap) / 2
|
||||||
private val buttonsY = y + listHeight + gridGap
|
private val buttonsY = y + listHeight + gridGap
|
||||||
private val buttonDeleteWorld = UIItemTextButton(this,
|
|
||||||
"MENU_LABEL_DELETE",
|
private val buttonSearch = UIItemTextButton(this,
|
||||||
hx - gridGap/2 - deleteButtonWidth,
|
"CONTEXT_WORLD_SEARCH",
|
||||||
buttonsY,
|
hx - gridGap/2 - 2*deleteButtonWidth - gridGap,
|
||||||
deleteButtonWidth,
|
|
||||||
readFromLang = true,
|
|
||||||
hasBorder = true,
|
|
||||||
alignment = UIItemTextButton.Companion.Alignment.CENTRE
|
|
||||||
)
|
|
||||||
private val buttonRenameWorld = UIItemTextButton(this,
|
|
||||||
"MENU_LABEL_RENAME",
|
|
||||||
buttonDeleteWorld.posX - gridGap - deleteButtonWidth,
|
|
||||||
buttonsY,
|
buttonsY,
|
||||||
deleteButtonWidth,
|
deleteButtonWidth,
|
||||||
readFromLang = true,
|
readFromLang = true,
|
||||||
@@ -76,7 +68,16 @@ class UIWorldPortalListing(val full: UIWorldPortal) : UICanvas() {
|
|||||||
alignment = UIItemTextButton.Companion.Alignment.CENTRE
|
alignment = UIItemTextButton.Companion.Alignment.CENTRE
|
||||||
)
|
)
|
||||||
private val buttonTeleport = UIItemTextButton(this,
|
private val buttonTeleport = UIItemTextButton(this,
|
||||||
"CONTEXT_GAME_TELEPORT",
|
"GAME_ACTION_TELEPORT",
|
||||||
|
hx - gridGap/2 - deleteButtonWidth,
|
||||||
|
buttonsY,
|
||||||
|
deleteButtonWidth,
|
||||||
|
readFromLang = true,
|
||||||
|
hasBorder = true,
|
||||||
|
alignment = UIItemTextButton.Companion.Alignment.CENTRE
|
||||||
|
)
|
||||||
|
private val buttonRename = UIItemTextButton(this,
|
||||||
|
"MENU_LABEL_RENAME",
|
||||||
hx + gridGap/2,
|
hx + gridGap/2,
|
||||||
buttonsY,
|
buttonsY,
|
||||||
deleteButtonWidth,
|
deleteButtonWidth,
|
||||||
@@ -84,21 +85,15 @@ class UIWorldPortalListing(val full: UIWorldPortal) : UICanvas() {
|
|||||||
hasBorder = true,
|
hasBorder = true,
|
||||||
alignment = UIItemTextButton.Companion.Alignment.CENTRE
|
alignment = UIItemTextButton.Companion.Alignment.CENTRE
|
||||||
)
|
)
|
||||||
private val buttonCancel = UIItemTextButton(this,
|
private val buttonDelete = UIItemTextButton(this,
|
||||||
"MENU_LABEL_CANCEL",
|
"MENU_LABEL_DELETE",
|
||||||
hx + gridGap/2 + deleteButtonWidth + gridGap,
|
hx + gridGap/2 + deleteButtonWidth + gridGap,
|
||||||
buttonsY,
|
buttonsY,
|
||||||
deleteButtonWidth,
|
deleteButtonWidth,
|
||||||
readFromLang = true,
|
readFromLang = true,
|
||||||
hasBorder = true,
|
hasBorder = true,
|
||||||
alignment = UIItemTextButton.Companion.Alignment.CENTRE
|
alignment = UIItemTextButton.Companion.Alignment.CENTRE
|
||||||
).also {
|
)
|
||||||
it.clickOnceListener = { _, _, _ ->
|
|
||||||
selected = null
|
|
||||||
selectedIndex = null
|
|
||||||
updateUIbyButtonSelection()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private val navRemoCon = UIItemListNavBarVertical(full, hx + 6 + UIItemWorldCellsSimple.width, y + 7, listHeight + 2, false)
|
private val navRemoCon = UIItemListNavBarVertical(full, hx + 6 + UIItemWorldCellsSimple.width, y + 7, listHeight + 2, false)
|
||||||
|
|
||||||
@@ -117,6 +112,12 @@ class UIWorldPortalListing(val full: UIWorldPortal) : UICanvas() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun highlightListEditButtons(state: Boolean) {
|
||||||
|
buttonRename.isActive = state
|
||||||
|
buttonDelete.isActive = state
|
||||||
|
buttonTeleport.isActive = state
|
||||||
|
}
|
||||||
|
|
||||||
init {
|
init {
|
||||||
CommonResourcePool.addToLoadingList("terrarum-basegame-worldportalicons") {
|
CommonResourcePool.addToLoadingList("terrarum-basegame-worldportalicons") {
|
||||||
TextureRegionPack(ModMgr.getGdxFile("basegame", "gui/worldportal_catbar.tga"), 30, 20)
|
TextureRegionPack(ModMgr.getGdxFile("basegame", "gui/worldportal_catbar.tga"), 30, 20)
|
||||||
@@ -126,10 +127,10 @@ class UIWorldPortalListing(val full: UIWorldPortal) : UICanvas() {
|
|||||||
navRemoCon.scrollUpListener = { _,_ -> scrollItemPage(-1) }
|
navRemoCon.scrollUpListener = { _,_ -> scrollItemPage(-1) }
|
||||||
navRemoCon.scrollDownListener = { _,_ -> scrollItemPage(1) }
|
navRemoCon.scrollDownListener = { _,_ -> scrollItemPage(1) }
|
||||||
|
|
||||||
addUIitem(buttonRenameWorld)
|
addUIitem(buttonDelete)
|
||||||
addUIitem(buttonDeleteWorld)
|
addUIitem(buttonRename)
|
||||||
addUIitem(buttonTeleport)
|
addUIitem(buttonTeleport)
|
||||||
addUIitem(buttonCancel)
|
addUIitem(buttonSearch)
|
||||||
addUIitem(navRemoCon)
|
addUIitem(navRemoCon)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -212,9 +213,10 @@ class UIWorldPortalListing(val full: UIWorldPortal) : UICanvas() {
|
|||||||
worldList.getOrNull(it),
|
worldList.getOrNull(it),
|
||||||
worldList.getOrNull(it)?.diskSkimmer?.getDiskName(Common.CHARSET)
|
worldList.getOrNull(it)?.diskSkimmer?.getDiskName(Common.CHARSET)
|
||||||
).also { button ->
|
).also { button ->
|
||||||
button.clickOnceListener = { _, _, _ ->
|
button.clickOnceListener = { _, _ ->
|
||||||
selected = button
|
selected = button
|
||||||
selectedIndex = it
|
selectedIndex = it
|
||||||
|
highlightListEditButtons(it in worldList.indices)
|
||||||
updateUIbyButtonSelection()
|
updateUIbyButtonSelection()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -232,6 +234,7 @@ class UIWorldPortalListing(val full: UIWorldPortal) : UICanvas() {
|
|||||||
worldCells.forEach { it.show() }
|
worldCells.forEach { it.show() }
|
||||||
selected = null
|
selected = null
|
||||||
|
|
||||||
|
highlightListEditButtons(false)
|
||||||
updateUIbyButtonSelection()
|
updateUIbyButtonSelection()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -354,7 +357,7 @@ class UIWorldPortalListing(val full: UIWorldPortal) : UICanvas() {
|
|||||||
|
|
||||||
// control hints
|
// control hints
|
||||||
batch.color = Color.WHITE
|
batch.color = Color.WHITE
|
||||||
App.fontGame.draw(batch, full.portalListingControlHelp, hx - thumbw - gridGap/2 + 2, (full.yEnd + 8).toInt())
|
App.fontGame.draw(batch, full.portalListingControlHelp, hx - thumbw - gridGap/2 + 2, (full.yEnd - 20).toInt())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun hide() {
|
override fun hide() {
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ class DummyTogglePane : UICanvas() {
|
|||||||
private var timer = 0f
|
private var timer = 0f
|
||||||
|
|
||||||
init {
|
init {
|
||||||
button1.clickOnceListener = { _,_,_ ->
|
button1.clickOnceListener = { _,_ ->
|
||||||
button1.toggle()
|
button1.toggle()
|
||||||
}
|
}
|
||||||
uiItems.add(button1)
|
uiItems.add(button1)
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package net.torvald.terrarum.ui
|
|||||||
import com.badlogic.gdx.graphics.Camera
|
import com.badlogic.gdx.graphics.Camera
|
||||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
||||||
import com.badlogic.gdx.utils.Disposable
|
import com.badlogic.gdx.utils.Disposable
|
||||||
|
import net.torvald.terrarum.App
|
||||||
import net.torvald.terrarum.Terrarum
|
import net.torvald.terrarum.Terrarum
|
||||||
import net.torvald.terrarum.gamecontroller.TerrarumKeyboardEvent
|
import net.torvald.terrarum.gamecontroller.TerrarumKeyboardEvent
|
||||||
|
|
||||||
@@ -113,11 +114,11 @@ abstract class UIItem(var parentUI: UICanvas, val initialX: Int, val initialY: I
|
|||||||
open var touchUpListener: ((Int, Int, Int, Int) -> Unit)? = null
|
open var touchUpListener: ((Int, Int, Int, Int) -> Unit)? = null
|
||||||
/** Parameters: amountX, amountY */
|
/** Parameters: amountX, amountY */
|
||||||
open var scrolledListener: ((Float, Float) -> Unit)? = null
|
open var scrolledListener: ((Float, Float) -> Unit)? = null
|
||||||
/** Parameters: relative mouseX, relative mouseY, button
|
/** Parameters: relative mouseX, relative mouseY
|
||||||
*
|
* ClickOnce listeners are only fired when clicked with primary mouse button
|
||||||
* PROTIP: if clickOnceListener does not seem to work, make sure your parent UI is handling touchDown() and touchUp() events!
|
* PROTIP: if clickOnceListener does not seem to work, make sure your parent UI is handling touchDown() and touchUp() events!
|
||||||
*/
|
*/
|
||||||
open var clickOnceListener: ((Int, Int, Int) -> Unit)? = null
|
open var clickOnceListener: ((Int, Int) -> Unit)? = null
|
||||||
open var clickOnceListenerFired = false
|
open var clickOnceListenerFired = false
|
||||||
|
|
||||||
|
|
||||||
@@ -221,8 +222,8 @@ abstract class UIItem(var parentUI: UICanvas, val initialX: Int, val initialY: I
|
|||||||
actionDone = true
|
actionDone = true
|
||||||
}
|
}
|
||||||
|
|
||||||
if (clickOnceListener != null && !clickOnceListenerFired && mouseUp) {
|
if (clickOnceListener != null && !clickOnceListenerFired && mouseUp && button == App.getConfigInt("config_mouseprimary")) {
|
||||||
clickOnceListener!!.invoke(itemRelativeMouseX, itemRelativeMouseY, button)
|
clickOnceListener!!.invoke(itemRelativeMouseX, itemRelativeMouseY)
|
||||||
actionDone = true
|
actionDone = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ class UIItemIntSlider(
|
|||||||
override var scrolledListener: ((Float, Float) -> Unit)?
|
override var scrolledListener: ((Float, Float) -> Unit)?
|
||||||
get() = super.scrolledListener
|
get() = super.scrolledListener
|
||||||
set(_) {}
|
set(_) {}
|
||||||
override var clickOnceListener: ((Int, Int, Int) -> Unit)?
|
override var clickOnceListener: ((Int, Int) -> Unit)?
|
||||||
get() = super.clickOnceListener
|
get() = super.clickOnceListener
|
||||||
set(_) {}
|
set(_) {}
|
||||||
override var clickOnceListenerFired: Boolean
|
override var clickOnceListenerFired: Boolean
|
||||||
|
|||||||
Reference in New Issue
Block a user