mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
Fixes crash when a corrupted savefile is detected
This commit is contained in:
@@ -115,7 +115,12 @@ module SaveData
|
|||||||
self.each_slot do |file_slot|
|
self.each_slot do |file_slot|
|
||||||
full_path = self.get_full_path(file_slot)
|
full_path = self.get_full_path(file_slot)
|
||||||
next if !File.file?(full_path)
|
next if !File.file?(full_path)
|
||||||
temp_save_data = self.read_from_file(full_path)
|
begin
|
||||||
|
temp_save_data = self.read_from_file(full_path)
|
||||||
|
rescue
|
||||||
|
next
|
||||||
|
end
|
||||||
|
|
||||||
save_time = temp_save_data[:player].last_time_saved || Time.at(1)
|
save_time = temp_save_data[:player].last_time_saved || Time.at(1)
|
||||||
if save_time > newest_time
|
if save_time > newest_time
|
||||||
newest_time = save_time
|
newest_time = save_time
|
||||||
@@ -266,15 +271,24 @@ class PokemonLoadScreen
|
|||||||
# @param file_path [String] file to load save data from
|
# @param file_path [String] file to load save data from
|
||||||
# @return [Hash] save data
|
# @return [Hash] save data
|
||||||
def load_save_file(file_path)
|
def load_save_file(file_path)
|
||||||
save_data = SaveData.read_from_file(file_path)
|
begin
|
||||||
|
save_data = SaveData.read_from_file(file_path)
|
||||||
|
rescue
|
||||||
|
save_data =try_load_backup(file_path)
|
||||||
|
end
|
||||||
unless SaveData.valid?(save_data)
|
unless SaveData.valid?(save_data)
|
||||||
if File.file?(file_path + ".bak")
|
save_data =try_load_backup(file_path)
|
||||||
pbMessage(_INTL("The save file is corrupt. A backup will be loaded."))
|
end
|
||||||
save_data = load_save_file(file_path + ".bak")
|
return save_data
|
||||||
else
|
end
|
||||||
self.prompt_save_deletion(file_path)
|
|
||||||
return {}
|
def try_load_backup(file_path)
|
||||||
end
|
if File.file?(file_path + ".bak")
|
||||||
|
pbMessage(_INTL("The save file is corrupt. A backup will be loaded."))
|
||||||
|
save_data = load_save_file(file_path + ".bak")
|
||||||
|
else
|
||||||
|
self.prompt_save_deletion(file_path)
|
||||||
|
return {}
|
||||||
end
|
end
|
||||||
return save_data
|
return save_data
|
||||||
end
|
end
|
||||||
@@ -300,7 +314,7 @@ class PokemonLoadScreen
|
|||||||
end
|
end
|
||||||
|
|
||||||
def checkEnableSpritesDownload
|
def checkEnableSpritesDownload
|
||||||
if $PokemonSystem.download_sprites && $PokemonSystem.download_sprites != 0
|
if $PokemonSystem.download_sprites && $PokemonSystem.download_sprites != 0
|
||||||
customSprites = getCustomSpeciesList
|
customSprites = getCustomSpeciesList
|
||||||
if !customSprites
|
if !customSprites
|
||||||
promptEnableSpritesDownload
|
promptEnableSpritesDownload
|
||||||
@@ -323,7 +337,7 @@ class PokemonLoadScreen
|
|||||||
updateCreditsFile
|
updateCreditsFile
|
||||||
newer_version = find_newer_available_version
|
newer_version = find_newer_available_version
|
||||||
if newer_version
|
if newer_version
|
||||||
pbMessage(_INTL("Version {1} is now available! Please check the game's official page to download the newest version.",newer_version))
|
pbMessage(_INTL("Version {1} is now available! Please check the game's official page to download the newest version.", newer_version))
|
||||||
end
|
end
|
||||||
|
|
||||||
if ($game_temp.unimportedSprites && $game_temp.unimportedSprites.size > 0)
|
if ($game_temp.unimportedSprites && $game_temp.unimportedSprites.size > 0)
|
||||||
|
|||||||
Reference in New Issue
Block a user