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 worldSavefileName: 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
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.WorldSimulator
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.physicssolver.CollisionSolver
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.util.CircularArray
import org.khelekore.prtree.PRTree
import java.io.File
import java.util.*
import java.util.logging.Level
import kotlin.math.roundToInt
@@ -400,15 +401,11 @@ open class TerrarumIngame(batch: FlippingSpriteBatch) : IngameInstance(batch) {
worldDisk = VDUtil.createNewDisk(
1L shl 60,
savegameNickname,
worldName,
Common.CHARSET
)
playerDisk = VDUtil.createNewDisk(
1L shl 60,
actorGamer.actorValue.getAsString(AVKey.NAME) ?: "",
Common.CHARSET
)
playerDisk = VDUtil.readDiskArchive(App.savegamePlayers[actorGamer.uuid]!!.loadable().diskFile, Level.INFO)
// go to spawn position
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
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>()
savegameNickname = worldParams.savegameName
worldName = worldParams.savegameName
world.worldCreator = UUID.fromString(player.uuid.toString())
@@ -489,6 +489,8 @@ open class TerrarumIngame(batch: FlippingSpriteBatch) : IngameInstance(batch) {
forceAddActor(player)
WeatherMixer.internalReset()
UILoadGovernor.worldUUID = world.worldIndex
}
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.App.printdbg
import net.torvald.terrarum.console.Echo
import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.gameworld.BlockLayer
import net.torvald.terrarum.gameworld.GameWorld
import net.torvald.terrarum.langpack.Lang
@@ -112,7 +111,7 @@ object WriteSavegame {
*/
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 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.worldDisk = VDUtil.readDiskArchive(worldDisk.diskFile, Level.INFO)
newIngame.playerDisk = VDUtil.readDiskArchive(playerDisk.diskFile, Level.INFO)
newIngame.savegameNickname = getSavegameNickname(worldDisk)
newIngame.worldName = getWorldName(worldDisk)
newIngame.worldSavefileName = getWorldSavefileName(world)
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.Color
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.Second
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.langpack.Lang
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.ui.*
import net.torvald.terrarum.utils.RandomWordsName
import java.io.File
/**
* Created by minjaesong on 2021-12-09.
@@ -75,10 +75,14 @@ class UINewCharacter(val remoCon: UIRemoCon) : UICanvas() {
WritePlayer(player, disk, null, time_t)
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
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