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.getKeycapPC
import net.torvald.spriteanimation.SpriteAnimation
import net.torvald.terrarum.spriteassembler.ADProperties
import net.torvald.terrarum.*
import net.torvald.terrarum.App.printdbg
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.LoadSavegame
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_Y
import net.torvald.terrarum.ui.Movement
@@ -554,16 +555,21 @@ class UIItemPlayerCells(
// try to generate a texture
if (skimmer.initialised && !hasTexture) {
skimmer.getFile(-1L)?.bytes?.let {
val animFile = skimmer.getFile(-2L)!!
val p = ReadPlayer(skimmer, ByteArray64Reader(it, Common.CHARSET))
p.sprite = SpriteAnimation(p)
p.animDesc = ADProperties(ByteArray64Reader(animFile.bytes, Common.CHARSET))
p.reassembleSpriteFromDisk(skimmer, p.sprite, null, null)
p.sprite!!.textureRegion.get(0,0).let {
thumb = it
thumb!!.flip(false, false)
try {
val animFile = skimmer.getFile(-2L)!!
val p = ReadPlayer(skimmer, ByteArray64Reader(it, Common.CHARSET))
p.sprite = SpriteAnimation(p)
p.animDesc = ADProperties(ByteArray64Reader(animFile.bytes, Common.CHARSET))
p.reassembleSpriteFromDisk(skimmer, p.sprite, null, null)
p.sprite!!.textureRegion.get(0,0).let {
thumb = it
thumb!!.flip(false, false)
}
this.sprite = p.sprite
}
catch (e: Throwable) {
throw SaveLoadError(skimmer.diskFile, e)
}
this.sprite = p.sprite
}
hasTexture = true

View File

@@ -15,6 +15,7 @@ import net.torvald.terrarum.savegame.ByteArray64InputStream
import net.torvald.terrarum.savegame.ByteArray64Reader
import net.torvald.terrarum.utils.*
import org.apache.commons.codec.digest.DigestUtils
import java.io.File
import java.io.InputStream
import java.io.Reader
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)