savegame loading failure will display more helpful exception

This commit is contained in:
minjaesong
2022-02-21 21:19:48 +09:00
parent 6f4b53daad
commit c8dbb26922
2 changed files with 19 additions and 10 deletions

View File

@@ -13,7 +13,6 @@ import net.torvald.EMDASH
import net.torvald.getKeycapConsole import net.torvald.getKeycapConsole
import net.torvald.getKeycapPC import net.torvald.getKeycapPC
import net.torvald.spriteanimation.SpriteAnimation import net.torvald.spriteanimation.SpriteAnimation
import net.torvald.terrarum.spriteassembler.ADProperties
import net.torvald.terrarum.* import net.torvald.terrarum.*
import net.torvald.terrarum.App.printdbg import net.torvald.terrarum.App.printdbg
import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
@@ -25,6 +24,8 @@ import net.torvald.terrarum.savegame.EntryFile
import net.torvald.terrarum.serialise.Common import net.torvald.terrarum.serialise.Common
import net.torvald.terrarum.serialise.LoadSavegame import net.torvald.terrarum.serialise.LoadSavegame
import net.torvald.terrarum.serialise.ReadPlayer import net.torvald.terrarum.serialise.ReadPlayer
import net.torvald.terrarum.serialise.SaveLoadError
import net.torvald.terrarum.spriteassembler.ADProperties
import net.torvald.terrarum.spriteassembler.ADProperties.Companion.EXTRA_HEADROOM_X import net.torvald.terrarum.spriteassembler.ADProperties.Companion.EXTRA_HEADROOM_X
import net.torvald.terrarum.spriteassembler.ADProperties.Companion.EXTRA_HEADROOM_Y import net.torvald.terrarum.spriteassembler.ADProperties.Companion.EXTRA_HEADROOM_Y
import net.torvald.terrarum.ui.Movement import net.torvald.terrarum.ui.Movement
@@ -554,6 +555,7 @@ class UIItemPlayerCells(
// try to generate a texture // try to generate a texture
if (skimmer.initialised && !hasTexture) { if (skimmer.initialised && !hasTexture) {
skimmer.getFile(-1L)?.bytes?.let { skimmer.getFile(-1L)?.bytes?.let {
try {
val animFile = skimmer.getFile(-2L)!! val animFile = skimmer.getFile(-2L)!!
val p = ReadPlayer(skimmer, ByteArray64Reader(it, Common.CHARSET)) val p = ReadPlayer(skimmer, ByteArray64Reader(it, Common.CHARSET))
p.sprite = SpriteAnimation(p) p.sprite = SpriteAnimation(p)
@@ -565,6 +567,10 @@ class UIItemPlayerCells(
} }
this.sprite = p.sprite this.sprite = p.sprite
} }
catch (e: Throwable) {
throw SaveLoadError(skimmer.diskFile, e)
}
}
hasTexture = true hasTexture = true
} }

View File

@@ -15,6 +15,7 @@ import net.torvald.terrarum.savegame.ByteArray64InputStream
import net.torvald.terrarum.savegame.ByteArray64Reader import net.torvald.terrarum.savegame.ByteArray64Reader
import net.torvald.terrarum.utils.* import net.torvald.terrarum.utils.*
import org.apache.commons.codec.digest.DigestUtils import org.apache.commons.codec.digest.DigestUtils
import java.io.File
import java.io.InputStream import java.io.InputStream
import java.io.Reader import java.io.Reader
import java.io.StringReader import java.io.StringReader
@@ -327,3 +328,5 @@ object Common {
} }
} }
class SaveLoadError(file: File, cause: Throwable) : RuntimeException("An error occured while loading save file '${file.absolutePath}'", cause)