fix: creating new game works again

This commit is contained in:
minjaesong
2023-07-11 00:34:32 +09:00
parent 2b62b4f413
commit d96b7d1b84
4 changed files with 21 additions and 16 deletions

View File

@@ -64,7 +64,7 @@ open class IngameInstance(val batch: FlippingSpriteBatch, val isMultiplayer: Boo
lateinit var playerDisk: VirtualDisk; internal set lateinit var playerDisk: VirtualDisk; internal set
lateinit var worldSavefileName: String; internal set lateinit var worldSavefileName: String; internal set
lateinit var playerSavefileName: String; internal set lateinit var playerSavefileName: String; internal set
var savegameNickname: String = "SplinesReticulated"; internal set var worldName: String = "SplinesReticulated"; internal set // worldName is stored as a name of the disk
var screenZoom = 1.0f var screenZoom = 1.0f
val ZOOM_MAXIMUM = 4.0f val ZOOM_MAXIMUM = 4.0f

View File

@@ -28,7 +28,6 @@ import net.torvald.terrarum.gameparticles.ParticleBase
import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.gameworld.GameWorld
import net.torvald.terrarum.gameworld.WorldSimulator import net.torvald.terrarum.gameworld.WorldSimulator
import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.clut.Skybox
import net.torvald.terrarum.modulebasegame.gameactors.* import net.torvald.terrarum.modulebasegame.gameactors.*
import net.torvald.terrarum.modulebasegame.gameactors.physicssolver.CollisionSolver import net.torvald.terrarum.modulebasegame.gameactors.physicssolver.CollisionSolver
import net.torvald.terrarum.modulebasegame.gameitems.PickaxeCore import net.torvald.terrarum.modulebasegame.gameitems.PickaxeCore
@@ -57,7 +56,9 @@ import net.torvald.terrarum.worlddrawer.WorldCamera
import net.torvald.unicode.EMDASH import net.torvald.unicode.EMDASH
import net.torvald.util.CircularArray import net.torvald.util.CircularArray
import org.khelekore.prtree.PRTree import org.khelekore.prtree.PRTree
import java.io.File
import java.util.* import java.util.*
import java.util.logging.Level
import kotlin.math.roundToInt import kotlin.math.roundToInt
@@ -400,15 +401,11 @@ open class TerrarumIngame(batch: FlippingSpriteBatch) : IngameInstance(batch) {
worldDisk = VDUtil.createNewDisk( worldDisk = VDUtil.createNewDisk(
1L shl 60, 1L shl 60,
savegameNickname, worldName,
Common.CHARSET Common.CHARSET
) )
playerDisk = VDUtil.createNewDisk( playerDisk = VDUtil.readDiskArchive(App.savegamePlayers[actorGamer.uuid]!!.loadable().diskFile, Level.INFO)
1L shl 60,
actorGamer.actorValue.getAsString(AVKey.NAME) ?: "",
Common.CHARSET
)
// go to spawn position // go to spawn position
printdbg(this, "World Spawn position: (${world.spawnX}, ${world.spawnY})") printdbg(this, "World Spawn position: (${world.spawnX}, ${world.spawnY})")
@@ -435,6 +432,9 @@ open class TerrarumIngame(batch: FlippingSpriteBatch) : IngameInstance(batch) {
makeSavegameBackupCopy(getWorldSaveFiledesc(worldSavefileName)) // don't put it on the postInit() or render(); must be called using callback makeSavegameBackupCopy(getWorldSaveFiledesc(worldSavefileName)) // don't put it on the postInit() or render(); must be called using callback
uiAutosaveNotifier.setAsClose() uiAutosaveNotifier.setAsClose()
App.savegameWorlds[world.worldIndex] = SavegameCollection.collectFromBaseFilename(File(worldsDir), worldSavefileName)
App.savegameWorldsName[world.worldIndex] = worldName
} }
} }
} }
@@ -476,7 +476,7 @@ open class TerrarumIngame(batch: FlippingSpriteBatch) : IngameInstance(batch) {
historicalFigureIDBucket = ArrayList<Int>() historicalFigureIDBucket = ArrayList<Int>()
savegameNickname = worldParams.savegameName worldName = worldParams.savegameName
world.worldCreator = UUID.fromString(player.uuid.toString()) world.worldCreator = UUID.fromString(player.uuid.toString())
@@ -489,6 +489,8 @@ open class TerrarumIngame(batch: FlippingSpriteBatch) : IngameInstance(batch) {
forceAddActor(player) forceAddActor(player)
WeatherMixer.internalReset() WeatherMixer.internalReset()
UILoadGovernor.worldUUID = world.worldIndex
} }
KeyToggler.forceSet(Input.Keys.Q, false) KeyToggler.forceSet(Input.Keys.Q, false)

View File

@@ -4,7 +4,6 @@ import com.badlogic.gdx.graphics.Pixmap
import net.torvald.terrarum.* import net.torvald.terrarum.*
import net.torvald.terrarum.App.printdbg import net.torvald.terrarum.App.printdbg
import net.torvald.terrarum.console.Echo import net.torvald.terrarum.console.Echo
import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.gameworld.BlockLayer import net.torvald.terrarum.gameworld.BlockLayer
import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.gameworld.GameWorld
import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
@@ -112,7 +111,7 @@ object WriteSavegame {
*/ */
object LoadSavegame { object LoadSavegame {
fun getSavegameNickname(worldDisk: SimpleFileSystem) = worldDisk.getDiskName(Common.CHARSET) fun getWorldName(worldDisk: SimpleFileSystem) = worldDisk.getDiskName(Common.CHARSET)
fun getWorldSavefileName(world: GameWorld) = "${world.worldIndex}" fun getWorldSavefileName(world: GameWorld) = "${world.worldIndex}"
fun getPlayerSavefileName(player: IngamePlayer) = "${player.uuid}" fun getPlayerSavefileName(player: IngamePlayer) = "${player.uuid}"
@@ -144,7 +143,7 @@ object LoadSavegame {
newIngame.world = world // must be set before the loadscreen, otherwise the loadscreen will try to read from the NullWorld which is already destroyed newIngame.world = world // must be set before the loadscreen, otherwise the loadscreen will try to read from the NullWorld which is already destroyed
newIngame.worldDisk = VDUtil.readDiskArchive(worldDisk.diskFile, Level.INFO) newIngame.worldDisk = VDUtil.readDiskArchive(worldDisk.diskFile, Level.INFO)
newIngame.playerDisk = VDUtil.readDiskArchive(playerDisk.diskFile, Level.INFO) newIngame.playerDisk = VDUtil.readDiskArchive(playerDisk.diskFile, Level.INFO)
newIngame.savegameNickname = getSavegameNickname(worldDisk) newIngame.worldName = getWorldName(worldDisk)
newIngame.worldSavefileName = getWorldSavefileName(world) newIngame.worldSavefileName = getWorldSavefileName(world)
newIngame.playerSavefileName = getPlayerSavefileName(player) newIngame.playerSavefileName = getPlayerSavefileName(player)

View File

@@ -3,10 +3,9 @@ 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.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.App.playersDir
import net.torvald.terrarum.App.printdbg import net.torvald.terrarum.App.printdbg
import net.torvald.terrarum.Second
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.gameactors.AVKey import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.gameactors.PlayerBuilderTestSubject1 import net.torvald.terrarum.modulebasegame.gameactors.PlayerBuilderTestSubject1
@@ -18,6 +17,7 @@ import net.torvald.terrarum.modulebasegame.serialise.LoadSavegame
import net.torvald.terrarum.modulebasegame.serialise.WritePlayer import net.torvald.terrarum.modulebasegame.serialise.WritePlayer
import net.torvald.terrarum.ui.* import net.torvald.terrarum.ui.*
import net.torvald.terrarum.utils.RandomWordsName import net.torvald.terrarum.utils.RandomWordsName
import java.io.File
/** /**
* Created by minjaesong on 2021-12-09. * Created by minjaesong on 2021-12-09.
@@ -75,10 +75,14 @@ class UINewCharacter(val remoCon: UIRemoCon) : UICanvas() {
WritePlayer(player, disk, null, time_t) WritePlayer(player, disk, null, time_t)
VDUtil.dumpToRealMachine(disk, outFile) VDUtil.dumpToRealMachine(disk, outFile)
App.savegamePlayers[player.uuid] = SavegameCollection.collectFromBaseFilename(File(playersDir), outFile.name)
App.savegamePlayersName[player.uuid] = player.actorValue.getAsString(AVKey.NAME)
UILoadGovernor.playerUUID = player.uuid
uiLocked = false uiLocked = false
returnedFromChargen = true returnedFromChargen = true
// comment below if chargen must send gamers back to the charcters list // comment below if chargen must send gamers back to the charcters list
// UILoadGovernor.playerDisk = DiskSkimmer(outFile) // UILoadGovernor.playerDisk = DiskSkimmer(outFile)
// comment above if chargen must send gamers back to the charcters list // comment above if chargen must send gamers back to the charcters list