MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / readQuests

Function readQuests

source/game/StarQuestManager.cpp:25–46  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

23}
24
25StringMap<QuestPtr> readQuests(Json const& json) {
26 auto versioningDatabase = Root::singleton().versioningDatabase();
27 auto questTemplateDatabase = Root::singleton().questTemplateDatabase();
28
29 auto validateArc = [questTemplateDatabase](QuestArcDescriptor const& arc) {
30 for (auto quest : arc.quests) {
31 if (!questTemplateDatabase->questTemplate(quest.templateId))
32 return false;
33 }
34 return true;
35 };
36
37 StringMap<QuestPtr> result;
38 for (auto const& questPair : json.iterateObject()) {
39 // don't load the quest unless all quests in the arc exist
40 Json diskStore = versioningDatabase->loadVersionedJson(VersionedJson::fromJson(questPair.second), "Quest");
41 auto questArc = QuestArcDescriptor::diskLoad(diskStore.get("arc"));
42 if (validateArc(questArc))
43 result[questPair.first] = make_shared<Quest>(questPair.second);
44 }
45 return result;
46}
47
48function<bool (QuestPtr const&)> questFilter(QuestState state) {
49 return [state](QuestPtr const& quest) {

Callers 1

diskLoadMethod · 0.85

Calls 7

singletonClass · 0.85
versioningDatabaseMethod · 0.80
questTemplateDatabaseMethod · 0.80
questTemplateMethod · 0.80
iterateObjectMethod · 0.80
loadVersionedJsonMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected