Improve resilience for Quest Loading

This commit is contained in:
tehdiplomat
2018-08-03 21:19:14 -04:00
parent c05464585e
commit ab77d97e59
4 changed files with 54 additions and 35 deletions

View File

@@ -28,6 +28,7 @@ import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
@@ -230,7 +231,11 @@ public enum FControl implements KeyEventDispatcher {
final String questname = FModel.getQuestPreferences().getPref(QPref.CURRENT_QUEST);
final File data = new File(dirQuests.getPath(), questname);
if (data.exists()) {
FModel.getQuest().load(QuestDataIO.loadData(data));
try {
FModel.getQuest().load(QuestDataIO.loadData(data));
} catch(IOException ex) {
System.out.println(String.format("Error loading quest data (%s).. skipping for now..", questname));
}
}
// Handles resizing in null layouts of layers in JLayeredPane as well as saving window layout

View File

@@ -20,6 +20,7 @@ import forge.toolbox.FOptionPane;
import javax.swing.*;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.*;
import java.util.Map.Entry;
@@ -167,6 +168,7 @@ public enum CSubmenuQuestData implements ICDoc {
final VSubmenuQuestData view = VSubmenuQuestData.SINGLETON_INSTANCE;
final File dirQuests = new File(ForgeConstants.QUEST_SAVE_DIR);
final QuestController qc = FModel.getQuest();
ArrayList<String> restorableQuests = new ArrayList<>();
// Iterate over files and load quest data for each.
final FilenameFilter takeDatFiles = new FilenameFilter() {
@@ -178,7 +180,13 @@ public enum CSubmenuQuestData implements ICDoc {
final File[] arrFiles = dirQuests.listFiles(takeDatFiles);
arrQuests.clear();
for (final File f : arrFiles) {
arrQuests.put(f.getName(), QuestDataIO.loadData(f));
try {
System.out.println(String.format("About to load quest (%s)... ", f.getName()));
arrQuests.put(f.getName(), QuestDataIO.loadData(f));
} catch(IOException ex) {
System.out.println(String.format("Error loading quest data (%s).. skipping for now..", f.getName()));
restorableQuests.add(f.getName());
}
}
// Populate list with available quest data.