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

Function createPreviewQuest

source/game/StarQuests.cpp:748–783  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

746}
747
748QuestPtr createPreviewQuest(
749 String const& templateId, String const& position, String const& questGiverSpecies, Player* player) {
750 auto questTemplates = Root::singleton().questTemplateDatabase();
751 auto questTemplate = questTemplates->questTemplate(templateId);
752 if (!questTemplate)
753 return {};
754
755 Json portrait = player->portrait(PortraitMode::Full).transformed(mem_fn(&Drawable::toJson));
756
757 JsonObject paramJson = questTemplate->parameterExamples;
758 for (auto const& paramName : paramJson.keys()) {
759 paramJson[paramName] = paramJson[paramName].set("type", questTemplate->parameterTypes[paramName]);
760 paramJson[paramName] = paramJson[paramName].set("portrait", portrait);
761 }
762 StringMap<QuestParam> parameters = questParamsFromJson(paramJson);
763 QuestDescriptor questDesc = QuestDescriptor{"preview", templateId, parameters, Random::randu64()};
764
765 List<QuestDescriptor> quests;
766 if (!position.equalsIgnoreCase("next") && !position.equalsIgnoreCase("last") && !position.equalsIgnoreCase("first")) {
767 quests = {questDesc};
768 } else {
769 quests = {questDesc, questDesc, questDesc};
770 }
771 QuestArcDescriptor arc = QuestArcDescriptor{quests, {}};
772
773 size_t arcPos = 0;
774 if (position.equalsIgnoreCase("next")) {
775 arcPos = 1;
776 } else if (position.equalsIgnoreCase("last")) {
777 arcPos = 2;
778 }
779
780 auto quest = make_shared<Quest>(arc, arcPos, player);
781 quest->setParameter("questGiver", QuestParam{QuestEntity{{}, questGiverSpecies, {}}, {"Quest Giver"}, portrait, {}});
782 return quest;
783}
784
785}

Callers 1

previewQuestPaneMethod · 0.85

Calls 11

singletonClass · 0.85
questParamsFromJsonFunction · 0.85
randu64Function · 0.85
questTemplateDatabaseMethod · 0.80
questTemplateMethod · 0.80
setParameterMethod · 0.80
transformedMethod · 0.45
portraitMethod · 0.45
keysMethod · 0.45
setMethod · 0.45
equalsIgnoreCaseMethod · 0.45

Tested by

no test coverage detected