mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-13 20:14:05 +09:00
super simple new character window
This commit is contained in:
140
src/net/torvald/terrarum/modulebasegame/ui/UINewCharacter.kt
Normal file
140
src/net/torvald/terrarum/modulebasegame/ui/UINewCharacter.kt
Normal 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() {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user