Implement quests

This commit is contained in:
Melledy
2022-05-11 03:56:40 -07:00
parent 54cf45a72e
commit e9d7d5d5f2
27 changed files with 1183 additions and 6 deletions

View File

@@ -24,6 +24,9 @@ import emu.grasscutter.data.custom.AbilityModifier.AbilityModifierAction;
import emu.grasscutter.data.custom.AbilityModifier.AbilityModifierActionType;
import emu.grasscutter.data.custom.AbilityModifierEntry;
import emu.grasscutter.data.custom.OpenConfigEntry;
import emu.grasscutter.data.custom.QuestConfig;
import emu.grasscutter.data.custom.QuestConfigData;
import emu.grasscutter.data.custom.QuestConfigData.SubQuestConfigData;
import emu.grasscutter.data.custom.ScenePointEntry;
import emu.grasscutter.game.world.SpawnDataEntry;
import emu.grasscutter.game.world.SpawnDataEntry.SpawnGroupEntry;
@@ -57,8 +60,9 @@ public class ResourceLoader {
loadResources();
// Process into depots
GameDepot.load();
// Load spawn data
// Load spawn data and quests
loadSpawnData();
loadQuests();
// Load scene points - must be done AFTER resources are loaded
loadScenePoints();
// Custom - TODO move this somewhere else
@@ -396,6 +400,34 @@ public class ResourceLoader {
GameData.getOpenConfigEntries().put(entry.getName(), entry);
}
}
private static void loadQuests() {
File folder = new File(Grasscutter.getConfig().RESOURCE_FOLDER + "BinOutput/Quest/");
if (!folder.exists()) {
return;
}
for (File file : folder.listFiles()) {
QuestConfigData mainQuest = null;
try (FileReader fileReader = new FileReader(file)) {
mainQuest = Grasscutter.getGsonFactory().fromJson(fileReader, QuestConfigData.class);
} catch (Exception e) {
e.printStackTrace();
continue;
}
if (mainQuest.getSubQuests() != null) {
for (SubQuestConfigData subQuest : mainQuest.getSubQuests()) {
QuestConfig quest = new QuestConfig(mainQuest, subQuest);
GameData.getQuestConfigs().put(quest.getId(), quest);
}
}
}
Grasscutter.getLogger().info("Loaded " + GameData.getQuestConfigs().size() + " Quest Configs");
}
// BinOutput configs