load ui to inject remoCon contents to implement its own submenus

This commit is contained in:
minjaesong
2021-10-19 10:54:39 +09:00
parent 917fc04ad8
commit 8c692aa45e
38 changed files with 87 additions and 64 deletions

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "Нов Свят",
"CONTEXT_WORLD_NEW": "Нов Свят",
"MENU_LABEL_DELETE_WORLD": "Изтриване на Света",
"CONTEXT_WORLD_COUNT": "Светове: ",
"GAME_INVENTORY_INGREDIENTS": "Съставки",

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "Nový Svět",
"CONTEXT_WORLD_NEW": "Nový Svět",
"MENU_LABEL_DELETE_WORLD": "Smazat Svět",
"CONTEXT_WORLD_COUNT": "Světy: ",
"CONTEXT_ITEM_MAP": "Mapa",

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "Ny Verden",
"CONTEXT_WORLD_NEW": "Ny Verden",
"MENU_LABEL_DELETE_WORLD": "Slet Verden",
"CONTEXT_WORLD_COUNT": "Verdener: ",
"CONTEXT_ITEM_MAP": "Kort",

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "Neue Welt",
"CONTEXT_WORLD_NEW": "Neue Welt",
"MENU_LABEL_DELETE_WORLD": "Welt Löschen",
"CONTEXT_WORLD_COUNT": "Welten: ",
"GAME_INVENTORY_INGREDIENTS": "Zutaten",

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "Νέο Κόσμο",
"CONTEXT_WORLD_NEW": "Νέο Κόσμο",
"MENU_LABEL_DELETE_WORLD": "Διαγραφή Κόσμο",
"CONTEXT_WORLD_COUNT": "Κόσμοι: ",
"CONTEXT_ITEM_MAP": "Χαρτης",

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "New World",
"CONTEXT_WORLD_NEW": "New World",
"MENU_LABEL_DELETE_WORLD": "Delete World",
"CONTEXT_WORLD_COUNT": "Worlds: ",
"GAME_INVENTORY_INGREDIENTS": "Ingredients",

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "Nuevo Mundo",
"CONTEXT_WORLD_NEW": "Nuevo Mundo",
"MENU_LABEL_DELETE_WORLD": "Eliminar Mundo",
"CONTEXT_WORLD_COUNT": "Mundos: ",
"CONTEXT_ITEM_MAP": "Mapa",

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "Uusi Maailma",
"CONTEXT_WORLD_NEW": "Uusi Maailma",
"MENU_LABEL_DELETE_WORLD": "Poista Maailma",
"CONTEXT_WORLD_COUNT": "Maailmoja: ",
"MENU_MONITOR_CALI_TITLE": "Tarkista näytön",

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "Nouveau Monde",
"CONTEXT_WORLD_NEW": "Nouveau Monde",
"MENU_LABEL_DELETE_WORLD": "Supprimer Monde",
"CONTEXT_WORLD_COUNT": "Mondes: ",
"MENU_MONITOR_CALI_TITLE": "Vérification d'écran",

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "Új Világ",
"CONTEXT_WORLD_NEW": "Új Világ",
"MENU_LABEL_DELETE_WORLD": "Világ Törlése",
"CONTEXT_ITEM_MAP": "Térkép",
"MENU_LABEL_MENU": "Menü"

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "Nýr Heimur",
"CONTEXT_WORLD_NEW": "Nýr Heimur",
"MENU_LABEL_DELETE_WORLD": "Eyða Heimur",
"CONTEXT_WORLD_COUNT": "Heimar: ",

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "Nuovo Mondo",
"CONTEXT_WORLD_NEW": "Nuovo Mondo",
"MENU_LABEL_DELETE_WORLD": "Cancella Mondo",
"CONTEXT_WORLD_COUNT": "Mondi: ",
"CONTEXT_ITEM_MAP": "Mappa",

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "新しい世界",
"CONTEXT_WORLD_NEW": "新しい世界",
"MENU_LABEL_DELETE_WORLD": "世界を削除",
"CONTEXT_WORLD_COUNT": "世界: ",
"MENU_MONITOR_CALI_TITLE": "モニターチェック",

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "あたらしい せかい",
"CONTEXT_WORLD_NEW": "あたらしい せかい",
"MENU_LABEL_DELETE_WORLD": "せかいを さくじょ",
"CONTEXT_WORLD_COUNT": "せかい: ",

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "새 세계",
"CONTEXT_WORLD_NEW": "새 세계",
"MENU_LABEL_DELETE_WORLD": "새계 삭제",
"CONTEXT_WORLD_COUNT": "새계: ",
"MENU_MONITOR_CALI_TITLE": "모니터 확인",

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "Nieuwe Wereld",
"CONTEXT_WORLD_NEW": "Nieuwe Wereld",
"MENU_LABEL_DELETE_WORLD": "Verwijder Wereld",
"CONTEXT_WORLD_COUNT": "Werelden: ",
"CONTEXT_ITEM_MAP": "Kaart",

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "Ny Verden",
"CONTEXT_WORLD_NEW": "Ny Verden",
"MENU_LABEL_DELETE_WORLD": "Slett Verden",
"CONTEXT_WORLD_COUNT": "Verdener: ",
"CONTEXT_ITEM_MAP": "Kart",

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "Nowy Świat",
"CONTEXT_WORLD_NEW": "Nowy Świat",
"MENU_LABEL_DELETE_WORLD": "Usuń Świat",
"CONTEXT_WORLD_COUNT": "Światy: ",
"CONTEXT_ITEM_MAP": "Mapa",

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "Novo Mundo",
"CONTEXT_WORLD_NEW": "Novo Mundo",
"MENU_LABEL_DELETE_WORLD": "Excluir Mundo",
"CONTEXT_WORLD_COUNT": "Mundos: ",
"CONTEXT_ITEM_MAP": "Mapa",

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "Nova Mundo",
"CONTEXT_WORLD_NEW": "Nova Mundo",
"MENU_LABEL_DELETE_WORLD": "Apagar Mundo",
"CONTEXT_WORLD_COUNT": "Mundos: ",
"CONTEXT_ITEM_MAP": "Mapa",

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "Lume Nouă",
"CONTEXT_WORLD_NEW": "Lume Nouă",
"MENU_LABEL_DELETE_WORLD": "Șterge Lume",
"CONTEXT_WORLD_COUNT": "Lumi: ",
"CONTEXT_ITEM_MAP": "Hartă",

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "Новый Мир",
"CONTEXT_WORLD_NEW": "Новый Мир",
"MENU_LABEL_DELETE_WORLD": "Удалить Мир",
"CONTEXT_WORLD_COUNT": "Миры: ",
"GAME_INVENTORY_INGREDIENTS": "Ингредиенты",

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "Ny Värld",
"CONTEXT_WORLD_NEW": "Ny Värld",
"MENU_LABEL_DELETE_WORLD": "Radera Värld",
"CONTEXT_WORLD_COUNT": "Världar: ",
"CONTEXT_ITEM_MAP": "Karta",

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "โลกใหม่",
"CONTEXT_WORLD_NEW": "โลกใหม่",
"MENU_LABEL_DELETE_WORLD": "ลบโลก",
"CONTEXT_WORLD_COUNT": "โลก: ",
"CONTEXT_ITEM_MAP": "แผนที่",

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "Yeni Dünya",
"CONTEXT_WORLD_NEW": "Yeni Dünya",
"MENU_LABEL_DELETE_WORLD": "dünyayı Sil",
"CONTEXT_WORLD_COUNT": "Dünyalar: ",
"CONTEXT_ITEM_MAP": "Harita",

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "创新世界",
"CONTEXT_WORLD_NEW": "创新世界",
"MENU_LABEL_DELETE_WORLD": "删除世界",
"CONTEXT_WORLD_COUNT": "世界: ",
"CONTEXT_ITEM_MAP": "地图",

View File

@@ -1,5 +1,5 @@
{
"MENU_LABEL_NEW_WORLD": "創新世界",
"CONTEXT_WORLD_NEW": "創新世界",
"MENU_LABEL_DELETE_WORLD": "刪除世界",
"CONTEXT_WORLD_COUNT": "世界: ",
"CONTEXT_ITEM_MAP": "地圖",

View File

@@ -5,7 +5,7 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.terrarum.modulebasegame.ui.UIRemoCon
import net.torvald.terrarum.ui.UICanvas
class ModOptionsHost : UICanvas() {
class ModOptionsHost(val remoCon: UIRemoCon) : UICanvas() {
override var openCloseTime: Second = 0f

View File

@@ -15,7 +15,7 @@ import net.torvald.terrarum.ui.UIItemToggleButton
/**
* Created by minjaesong on 2021-10-06.
*/
class GraphicsControlPanel : UICanvas() {
class GraphicsControlPanel(val remoCon: UIRemoCon) : UICanvas() {
override var width = 400
override var height = 400

View File

@@ -74,7 +74,7 @@ class UIInventoryEscMenu(val full: UIInventoryFull) : UICanvas() {
)
private val savingUI = UIItemSaving(this, (width - UIItemSaving.WIDTH) / 2, (height - UIItemSaving.HEIGHT) / 2)
private val keyConfigUI = UIKeyboardControlPanel()
private val keyConfigUI = UIKeyboardControlPanel(null)
private var oldScreen = 0
private var screen = 0

View File

@@ -16,7 +16,7 @@ import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
/**
* Created by minjaesong on 2021-09-15.
*/
class UIKeyboardControlPanel : UICanvas() {
class UIKeyboardControlPanel(remoCon: UIRemoCon?) : UICanvas() {
init {
CommonResourcePool.addToLoadingList("inventory_category") {

View File

@@ -41,7 +41,7 @@ val SAVE_CELL_HEIGHT = 120
*
* Created by minjaesong on 2021-09-09.
*/
class UILoadDemoSavefiles : UICanvas() {
class UILoadDemoSavefiles(val remoCon: UIRemoCon) : UICanvas() {
init {
CommonResourcePool.addToLoadingList("inventory_category") {
@@ -129,8 +129,6 @@ class UILoadDemoSavefiles : UICanvas() {
override fun show() {
try {
val remoCon = (App.getCurrentScreen() as TitleScreen).uiRemoCon
remoCon.handler.lockToggle()
showSpinner = true
@@ -181,11 +179,24 @@ class UILoadDemoSavefiles : UICanvas() {
}
private fun getCells() = if (mode == 0) playerCells else worldCells
private val menuTree = arrayOf(UITitleRemoConYaml.injectedMenuSingleCharSel, UITitleRemoConYaml.injectedMenuSingleWorldSel).map { Yaml(it).parse() }
private var loadFired = 0
private var oldMode = -1
private val remoConParentNode = remoCon.currentRemoConContents
private fun modeChangedHandler(mode: Int) {
remoCon.setNewRemoConContents(menuTree[mode], remoConParentNode)
}
override fun updateUI(delta: Float) {
if (mode < 2) {
if (oldMode != mode) {
modeChangedHandler(mode)
oldMode = mode
}
if (scrollTarget != listScroll) {
if (scrollAnimCounter < scrollAnimLen) {
scrollAnimCounter += delta
@@ -293,7 +304,7 @@ class UILoadDemoSavefiles : UICanvas() {
batch.draw(saveTex, (width - uiWidth - 10) / 2f, 0f)
// draw texts
val loadGameTitleStr = Lang["MENU_IO_LOAD_GAME"]
val loadGameTitleStr = Lang["MENU_IO_LOAD"]
// "Game Load"
App.fontGame.draw(batch, loadGameTitleStr, (width - App.fontGame.getWidth(loadGameTitleStr)).div(2).toFloat(), titleTextPosY.toFloat())
// Control help

View File

@@ -8,7 +8,7 @@ import net.torvald.terrarum.ui.UICanvas
/**
* Created by minjaesong on 2021-09-13.
*/
class UIProxyLoadLatestSave : UICanvas() {
class UIProxyLoadLatestSave(val remoCon: UIRemoCon) : UICanvas() {
override var width: Int = 0
override var height: Int = 0

View File

@@ -17,7 +17,7 @@ import net.torvald.terrarum.utils.RandomWordsName
/**
* Created by minjaesong on 2018-12-08.
*/
class UIProxyNewRandomGame : UICanvas() {
class UIProxyNewRandomGame(val remoCon: UIRemoCon) : UICanvas() {
override var width: Int = 0
override var height: Int = 0

View File

@@ -59,8 +59,8 @@ open class UIRemoCon(val parent: TitleScreen, treeRepresentation: QNDTreeNode<St
private fun loadClass(name: String): UICanvas {
val newClass = Class.forName(name)
val newClassConstructor = newClass.getConstructor(/* no args defined */)
val newClassInstance = newClassConstructor.newInstance(/* no args defined */)
val newClassConstructor = newClass.getConstructor(this.javaClass)
val newClassInstance = newClassConstructor.newInstance(this)
return newClassInstance as UICanvas
}
@@ -118,18 +118,7 @@ open class UIRemoCon(val parent: TitleScreen, treeRepresentation: QNDTreeNode<St
//currentRemoConContents.children.forEach { println("- ${it.data}") }
if (currentRemoConContents.children.size > selectedIndex ?: 0x7FFFFFFF) {
val newCurrentRemoConContents = currentRemoConContents.children[selectedIndex!!]
// only go deeper if that node has child to navigate
if (currentRemoConContents.children[selectedIndex].children.size != 0) {
remoConTray.consume()
remoConTray = generateNewRemoCon(newCurrentRemoConContents)
currentRemoConContents = newCurrentRemoConContents
}
currentlySelectedRemoConItem = newCurrentRemoConContents.data
setNewRemoConContents(currentRemoConContents.children[selectedIndex!!])
}
else {
throw RuntimeException("Index: $selectedIndex, Size: ${currentRemoConContents.children.size}")
@@ -165,6 +154,22 @@ open class UIRemoCon(val parent: TitleScreen, treeRepresentation: QNDTreeNode<St
}
}
fun setNewRemoConContents(newCurrentRemoConContents: QNDTreeNode<String>, forceSetParent: QNDTreeNode<String>? = null) {
if (forceSetParent != null) {
newCurrentRemoConContents.parent = forceSetParent
}
// only go deeper if that node has child to navigate
if (newCurrentRemoConContents.children.size != 0) {
remoConTray.consume()
remoConTray = generateNewRemoCon(newCurrentRemoConContents)
currentRemoConContents = newCurrentRemoConContents
}
currentlySelectedRemoConItem = newCurrentRemoConContents.data
}
override fun renderUI(batch: SpriteBatch, camera: Camera) {
remoConTray.render(batch, camera)
openUI?.render(batch, camera)

View File

@@ -10,7 +10,7 @@ import net.torvald.terrarum.ui.Toolkit
import net.torvald.terrarum.ui.UICanvas
import net.torvald.terrarum.ui.UIItemTextButtonList
class UITitleLanguage : UICanvas() {
class UITitleLanguage(val remoCon: UIRemoCon) : UICanvas() {
val menuLabels = arrayOf(
"MENU_LABEL_RETURN"

View File

@@ -11,8 +11,8 @@ object UITitleRemoConYaml {
*
* The class must be the UICanvas
*/
private val menuBase = """
- MENU_LABEL_NEW_GAME : net.torvald.terrarum.modulebasegame.ui.UIProxyNewRandomGame
val menuBase = """
- MENU_MODE_SINGLEPLAYER : net.torvald.terrarum.modulebasegame.ui.UILoadDemoSavefiles
- MENU_OPTIONS
- MENU_LABEL_GRAPHICS : net.torvald.terrarum.modulebasegame.ui.GraphicsControlPanel
- MENU_OPTIONS_CONTROLS : net.torvald.terrarum.modulebasegame.ui.UIKeyboardControlPanel
@@ -26,18 +26,25 @@ object UITitleRemoConYaml {
- MENU_LABEL_QUIT
"""
private val menuWithSavefile = """
val menuWithSavefile = """
- MENU_LABEL_CONTINUE : net.torvald.terrarum.modulebasegame.ui.UIProxyLoadLatestSave
- MENU_IO_LOAD : net.torvald.terrarum.modulebasegame.ui.UILoadDemoSavefiles
- MENU_LABEL_NEW_WORLD
- MENU_LABEL_RETURN"""
private val menuNewGame = """
"""
val menuNewGame = """
"""
val injectedMenuSingleCharSel = """
- CONTEXT_CHARACTER_NEW
- MENU_LABEL_RETURN
"""
val injectedMenuSingleWorldSel = """
- CONTEXT_WORLD_NEW
- MENU_LABEL_RETURN
"""
operator fun invoke(hasSave: Boolean) =
//Yaml((if (hasSave) menuWithSavefile else menuNewGame) + menuBase).parse()
Yaml((if (true) menuWithSavefile else menuNewGame) + menuBase).parse()
// Yaml((if (hasSave) menuWithSavefile else menuNewGame) + menuBase).parse()
Yaml(menuBase).parse()
}

View File

@@ -56,5 +56,5 @@ open class UITitleWallOfText(private val text: List<String>) : UICanvas() {
}
}
class UITitleCredits : UITitleWallOfText(CreditSingleton.credit)
class UITitleGPL3 : UITitleWallOfText(CreditSingleton.gpl3)
class UITitleCredits(val remoCon: UIRemoCon) : UITitleWallOfText(CreditSingleton.credit)
class UITitleGPL3(val remoCon: UIRemoCon) : UITitleWallOfText(CreditSingleton.gpl3)