super simple new character window

This commit is contained in:
minjaesong
2021-12-09 16:58:26 +09:00
parent 3c4e169743
commit 44d6d84bbd
8 changed files with 160 additions and 14 deletions

View File

@@ -7,6 +7,8 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.EMDASH
import net.torvald.terrarum.*
import net.torvald.terrarum.App.*
import net.torvald.terrarum.Terrarum.getPlayerSaveFiledesc
import net.torvald.terrarum.Terrarum.getWorldSaveFiledesc
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZED
import net.torvald.terrarum.blockproperties.BlockPropUtil

View File

@@ -6,6 +6,8 @@ import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.terrarum.App
import net.torvald.terrarum.INGAME
import net.torvald.terrarum.Terrarum.getPlayerSaveFiledesc
import net.torvald.terrarum.Terrarum.getWorldSaveFiledesc
import net.torvald.terrarum.TitleScreen
import net.torvald.terrarum.blendNormal
import net.torvald.terrarum.modulebasegame.TerrarumIngame
@@ -96,8 +98,8 @@ class UIInventoryEscMenu(val full: UIInventoryFull) : UICanvas() {
}
val saveTime_t = App.getTIME_T()
val playerSavefile = INGAME.getPlayerSaveFiledesc(INGAME.playerSavefileName)
val worldSavefile = INGAME.getWorldSaveFiledesc(INGAME.worldSavefileName)
val playerSavefile = getPlayerSaveFiledesc(INGAME.playerSavefileName)
val worldSavefile = getWorldSaveFiledesc(INGAME.worldSavefileName)
INGAME.makeSavegameBackupCopy(playerSavefile)

View File

@@ -0,0 +1,140 @@
package net.torvald.terrarum.modulebasegame.ui
import com.badlogic.gdx.graphics.Camera
import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.random.HQRNG
import net.torvald.terrarum.App
import net.torvald.terrarum.Second
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.console.Echo
import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.gameactors.PlayerBuilderTestSubject1
import net.torvald.terrarum.savegame.DiskSkimmer
import net.torvald.terrarum.savegame.VDUtil
import net.torvald.terrarum.savegame.VirtualDisk
import net.torvald.terrarum.serialise.Common
import net.torvald.terrarum.serialise.LoadSavegame
import net.torvald.terrarum.serialise.WritePlayer
import net.torvald.terrarum.serialise.WriteSavegame
import net.torvald.terrarum.toInt
import net.torvald.terrarum.ui.*
import net.torvald.terrarum.utils.RandomWordsName
/**
* Created by minjaesong on 2021-12-09.
*/
class UINewCharacter(val remoCon: UIRemoCon) : UICanvas() {
override var width = 480
override var height = 480
override var openCloseTime: Second = 0f
private val drawX = (Toolkit.drawWidth - width) / 2
private val drawY = (App.scr.height - height) / 2
private val row1 = 186 + 40
private val inputWidth = 340
private val nameInput = UIItemTextLineInput(this,
drawX + width - inputWidth, drawY + row1, inputWidth,
{ RandomWordsName(4) }, InputLenCap(VirtualDisk.NAME_LENGTH, InputLenCap.CharLenUnit.UTF8_BYTES))
private val goButtonWidth = 180
private val backButton = UIItemTextButton(this, "MENU_LABEL_BACK", drawX + (width/2 - goButtonWidth) / 2, drawY + height - 24, goButtonWidth, true, alignment = UIItemTextButton.Companion.Alignment.CENTRE, hasBorder = true)
private val goButton = UIItemTextButton(this, "MENU_LABEL_CONFIRM_BUTTON", drawX + width/2 + (width/2 - goButtonWidth) / 2, drawY + height - 24, goButtonWidth, true, alignment = UIItemTextButton.Companion.Alignment.CENTRE, hasBorder = true)
private var returnedFromChargen = false
private var uiLocked = false
init {
goButton.touchDownListener = { _, _, _, _ ->
uiLocked = true
val player = PlayerBuilderTestSubject1()
player.actorValue[AVKey.NAME] = nameInput.getTextOrPlaceholder()
val disk = VDUtil.createNewDisk(
1L shl 60,
player.actorValue.getAsString(AVKey.NAME) ?: "",
Common.CHARSET
)
val outFile = Terrarum.getPlayerSaveFiledesc(LoadSavegame.getPlayerSavefileName(player))
val time_t = App.getTIME_T()
val savingThread = Thread({
disk.saveMode = 2 // auto, no quick
disk.capacity = 0L
WritePlayer(player, disk, null, time_t)
VDUtil.dumpToRealMachine(disk, outFile)
uiLocked = false
returnedFromChargen = true
// comment below if chargen must send gamers back to the charcters list
UILoadGovernor.playerDisk = DiskSkimmer(outFile)
// comment above if chargen must send gamers back to the charcters list
}, "TerrarumBasegameNewCharcterSaveThread")
savingThread.start()
}
backButton.touchDownListener = { _, _, _, _ ->
remoCon.openUI(UILoadDemoSavefiles(remoCon, 0))
}
addUIitem(nameInput)
addUIitem(goButton)
addUIitem(backButton)
}
override fun updateUI(delta: Float) {
if (!uiLocked) {
uiItems.forEach { it.update(delta) }
}
if (returnedFromChargen) {
returnedFromChargen = false
remoCon.openUI(UILoadDemoSavefiles(remoCon, 1)) // 0 to go back (Terraria's behav), set variables up and 1 to choose world
}
}
override fun renderUI(batch: SpriteBatch, camera: Camera) {
batch.color = Color.WHITE
// ui title
// val titlestr = Lang["CONTEXT_WORLD_NEW"]
// App.fontUITitle.draw(batch, titlestr, drawX + (width - App.fontGame.getWidth(titlestr)).div(2).toFloat(), titleTextPosY.toFloat())
// name/seed input labels
App.fontGame.draw(batch, Lang["MENU_NAME"], drawX, drawY + row1)
uiItems.forEach { it.render(batch, camera) }
}
override fun doOpening(delta: Float) {
}
override fun doClosing(delta: Float) {
}
override fun endOpening(delta: Float) {
}
override fun endClosing(delta: Float) {
}
override fun dispose() {
}
}

View File

@@ -78,7 +78,7 @@ class UINewWorld(val remoCon: UIRemoCon) : UICanvas() {
tex.forEach { it.flip(false, true) }
goButton.touchDownListener = { _, _, _, _ ->
printdbg(this, "generate! Size=${sizeSelector.selection}, Name=${nameInput.getTextOrPlaceholder()}, Seed=${seedInput.getTextOrPlaceholder()}")
// printdbg(this, "generate! Size=${sizeSelector.selection}, Name=${nameInput.getTextOrPlaceholder()}, Seed=${seedInput.getTextOrPlaceholder()}")
val ingame = TerrarumIngame(App.batch)
val player = ReadActor.invoke(UILoadGovernor.playerDisk!!, ByteArray64Reader(UILoadGovernor.playerDisk!!.getFile(-1L)!!.bytes, Common.CHARSET)) as IngamePlayer

View File

@@ -38,7 +38,7 @@ object UITitleRemoConYaml {
// todo add MENU_IO_IMPORT
val injectedMenuSingleCharSel = """
- CONTEXT_CHARACTER_NEW
- CONTEXT_CHARACTER_NEW : net.torvald.terrarum.modulebasegame.ui.UINewCharacter
- MENU_LABEL_RETURN
"""