savegame renaming

This commit is contained in:
minjaesong
2023-07-13 15:45:35 +09:00
parent e512c6c7ad
commit 30aca57cbc
5 changed files with 59 additions and 22 deletions

View File

@@ -88,7 +88,8 @@ class SavegameCollection(files0: List<DiskSkimmer>) {
skimmer.rebuild() skimmer.rebuild()
skimmer.getFile(SAVEGAMEINFO)!!.let { file -> skimmer.getFile(SAVEGAMEINFO)!!.let { file ->
val json = JsonFetcher.readFromJsonString(ByteArray64Reader(file.bytes, Common.CHARSET)) val json = JsonFetcher.readFromJsonString(ByteArray64Reader(file.bytes, Common.CHARSET))
json.getChild("actorValue").getChild(AVKey.NAME).set(name)
json["actorValue"]["hashMap"]["name"]["value"].set(name) // getChild() does NOT work as [] does
val jsonBytes = json.prettyPrint(JsonWriter.OutputType.json, 0).encodeToByteArray().toByteArray64() val jsonBytes = json.prettyPrint(JsonWriter.OutputType.json, 0).encodeToByteArray().toByteArray64()
val newEntry = DiskEntry(SAVEGAMEINFO, ROOT, skimmer.requestFile(SAVEGAMEINFO)!!.creationDate, App.getTIME_T(), EntryFile(jsonBytes)) val newEntry = DiskEntry(SAVEGAMEINFO, ROOT, skimmer.requestFile(SAVEGAMEINFO)!!.creationDate, App.getTIME_T(), EntryFile(jsonBytes))

View File

@@ -503,7 +503,7 @@ class UIItemPlayerCells(
parent.advanceMode(this) parent.advanceMode(this)
} }
private var playerName: String = "$EMDASH" internal var playerName: String = "$EMDASH"
private var worldName: String = "$EMDASH" private var worldName: String = "$EMDASH"
private var lastPlayTime: String = "????-??-?? --:--:--" private var lastPlayTime: String = "????-??-?? --:--:--"
private var totalPlayTime: String = "--h--m--s" private var totalPlayTime: String = "--h--m--s"

View File

@@ -7,6 +7,7 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch
import com.badlogic.gdx.graphics.g2d.TextureRegion import com.badlogic.gdx.graphics.g2d.TextureRegion
import net.torvald.terrarum.App import net.torvald.terrarum.App
import net.torvald.terrarum.CommonResourcePool import net.torvald.terrarum.CommonResourcePool
import net.torvald.terrarum.gamecontroller.TerrarumKeyboardEvent
import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.serialise.LoadSavegame import net.torvald.terrarum.modulebasegame.serialise.LoadSavegame
import net.torvald.terrarum.savegame.VDFileID.PLAYER_SCREENSHOT import net.torvald.terrarum.savegame.VDFileID.PLAYER_SCREENSHOT
@@ -14,6 +15,7 @@ import net.torvald.terrarum.tryDispose
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.terrarum.ui.UIItemTextButton import net.torvald.terrarum.ui.UIItemTextButton
import net.torvald.terrarum.ui.UIItemTextLineInput
/** /**
* Created by minjaesong on 2023-07-05. * Created by minjaesong on 2023-07-05.
@@ -104,11 +106,35 @@ class UILoadManage(val full: UILoadSavegame) : UICanvas() {
} }
} }
private val renameInput = UIItemTextLineInput(this, buttonXleft, App.scr.halfh, 240 + buttonWidth)
private val renameCancelButton = UIItemTextButton(this,
{ Lang["MENU_LABEL_CANCEL"] }, buttonXleft, buttonRowY, buttonWidth, alignment = UIItemTextButton.Companion.Alignment.CENTRE, hasBorder = true).also {
it.clickOnceListener = { _,_ ->
mode = MODE_INIT
}
}
private val renameRenameButton = UIItemTextButton(this,
{ Lang["MENU_LABEL_RENAME"] }, buttonXright, buttonRowY, buttonWidth, alignment = UIItemTextButton.Companion.Alignment.CENTRE, hasBorder = true).also {
it.clickOnceListener = { _,_ ->
val newName = renameInput.getText().trim()
if (newName.isNotBlank()) {
full.playerButtonSelected!!.playerUUID.let { uuid ->
App.savegamePlayersName[uuid] = newName
App.savegamePlayers[uuid]!!.renamePlayer(newName)
full.playerButtonSelected!!.playerName = newName
}
}
mode = MODE_INIT
}
}
private var mode = 0 private var mode = 0
private var mainButtons0 = listOf(mainGoButton, mainBackButton, mainRenameButton, mainDeleteButton) private var mainButtons0 = listOf(mainGoButton, mainBackButton, mainRenameButton, mainDeleteButton)
private var mainButtons1 = listOf(mainNoGoButton, mainBackButton, mainRenameButton, mainDeleteButton) private var mainButtons1 = listOf(mainNoGoButton, mainBackButton, mainRenameButton, mainDeleteButton)
private var delButtons = listOf(confirmCancelButton, confirmDeleteButton) private var delButtons = listOf(confirmCancelButton, confirmDeleteButton)
private var renameButtons = listOf(renameRenameButton, renameCancelButton)
private val mainButtons: List<UIItemTextButton> private val mainButtons: List<UIItemTextButton>
get() = if (full.loadables.saveAvaliable()) mainButtons0 else mainButtons1 get() = if (full.loadables.saveAvaliable()) mainButtons0 else mainButtons1
@@ -156,6 +182,18 @@ class UILoadManage(val full: UILoadSavegame) : UICanvas() {
MODE_DELETE -> { MODE_DELETE -> {
delButtons.forEach { it.update(delta) } delButtons.forEach { it.update(delta) }
} }
MODE_RENAME -> {
renameButtons.forEach { it.update(delta) }
renameInput.update(delta)
}
}
}
override fun inputStrobed(e: TerrarumKeyboardEvent) {
when (mode) {
MODE_RENAME -> {
renameInput.inputStrobed(e)
}
} }
} }
@@ -193,6 +231,10 @@ class UILoadManage(val full: UILoadSavegame) : UICanvas() {
delButtons.forEach { it.render(batch, camera) } delButtons.forEach { it.render(batch, camera) }
} }
MODE_RENAME -> {
renameInput.render(batch, camera)
renameButtons.forEach { it.render(batch, camera) }
}
MODE_LOAD -> { MODE_LOAD -> {
loadFiredFrameCounter += 1 loadFiredFrameCounter += 1
StaticLoadScreenSubstitute(batch) StaticLoadScreenSubstitute(batch)
@@ -213,6 +255,10 @@ class UILoadManage(val full: UILoadSavegame) : UICanvas() {
MODE_DELETE -> { MODE_DELETE -> {
delButtons.forEach { it.touchDown(screenX, screenY, pointer, button) } delButtons.forEach { it.touchDown(screenX, screenY, pointer, button) }
} }
MODE_RENAME -> {
renameInput.touchDown(screenX, screenY, pointer, button)
renameButtons.forEach { it.touchDown(screenX, screenY, pointer, button) }
}
} }
return true return true
@@ -226,6 +272,10 @@ class UILoadManage(val full: UILoadSavegame) : UICanvas() {
MODE_DELETE -> { MODE_DELETE -> {
delButtons.forEach { it.touchUp(screenX, screenY, pointer, button) } delButtons.forEach { it.touchUp(screenX, screenY, pointer, button) }
} }
MODE_RENAME -> {
renameInput.touchUp(screenX, screenY, pointer, button)
renameButtons.forEach { it.touchUp(screenX, screenY, pointer, button) }
}
} }
return true return true

View File

@@ -7,6 +7,7 @@ import com.badlogic.gdx.graphics.g2d.TextureRegion
import com.badlogic.gdx.graphics.glutils.FrameBuffer import com.badlogic.gdx.graphics.glutils.FrameBuffer
import net.torvald.terrarum.* import net.torvald.terrarum.*
import net.torvald.terrarum.App.printdbg import net.torvald.terrarum.App.printdbg
import net.torvald.terrarum.gamecontroller.TerrarumKeyboardEvent
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.INVENTORY_CELLS_OFFSET_Y import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.INVENTORY_CELLS_OFFSET_Y
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.internalWidth import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.internalWidth
import net.torvald.terrarum.ui.* import net.torvald.terrarum.ui.*
@@ -127,6 +128,10 @@ class UILoadSavegame(val remoCon: UIRemoCon) : Advanceable() {
transitionPanel.render(batch, camera) transitionPanel.render(batch, camera)
} }
override fun inputStrobed(e: TerrarumKeyboardEvent) {
transitionPanel.inputStrobed(e)
}
override fun keyDown(keycode: Int): Boolean { override fun keyDown(keycode: Int): Boolean {
transitionPanel.keyDown(keycode) transitionPanel.keyDown(keycode)
return true return true

View File

@@ -2,6 +2,7 @@ package net.torvald.terrarum.ui
import net.torvald.terrarum.App.printdbg import net.torvald.terrarum.App.printdbg
import net.torvald.terrarum.INGAME import net.torvald.terrarum.INGAME
import net.torvald.terrarum.gamecontroller.TerrarumKeyboardEvent
import net.torvald.terrarum.modulebasegame.ui.NullUI import net.torvald.terrarum.modulebasegame.ui.NullUI
import net.torvald.terrarum.tryDispose import net.torvald.terrarum.tryDispose
import kotlin.math.absoluteValue import kotlin.math.absoluteValue
@@ -87,24 +88,4 @@ class UIItemHorizontalFadeSlide(
uisOnRight.forEach { it.tryDispose() } uisOnRight.forEach { it.tryDispose() }
} }
override fun keyDown(keycode: Int): Boolean {
return super.keyDown(keycode)
}
override fun keyUp(keycode: Int): Boolean {
return super.keyUp(keycode)
}
override fun touchDown(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean {
printdbg(this, "touchDown UIs: ${uis.joinToString { it.javaClass.simpleName }}")
return super.touchDown(screenX, screenY, pointer, button)
}
override fun touchUp(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean {
return super.touchUp(screenX, screenY, pointer, button)
}
override fun scrolled(amountX: Float, amountY: Float): Boolean {
return super.scrolled(amountX, amountY)
}
} }