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

Method addCodexes

source/game/StarItemDatabase.cpp:735–768  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

733}
734
735void ItemDatabase::addCodexes() {
736 auto assets = Root::singleton().assets();
737 auto codexConfig = assets->json("/codex.config");
738
739 auto codexDatabase = Root::singleton().codexDatabase();
740 for (auto const& codexPair : codexDatabase->codexes()) {
741 String codexItemName = strf("{}-codex", codexPair.second->id());
742 if (m_items.contains(codexItemName)) {
743 Logger::warn("Couldn't create codex item {} because an item with that name is already defined", codexItemName);
744 continue;
745 }
746
747 try {
748 ItemData codexItemData;
749
750 codexItemData.type = ItemType::Codex;
751 codexItemData.name = codexItemName;
752 codexItemData.friendlyName = codexPair.second->title();
753 codexItemData.directory = codexPair.second->directory();
754 codexItemData.filename = codexPair.second->filename();
755 auto customConfig = jsonMerge(codexConfig.get("defaultItemConfig"), codexPair.second->itemConfig()).toObject();
756 customConfig["itemName"] = codexItemName;
757 customConfig["codexId"] = codexPair.second->id();
758 customConfig["shortdescription"] = codexPair.second->title();
759 customConfig["description"] = codexPair.second->description();
760 customConfig["codexIcon"] = codexPair.second->icon();
761 codexItemData.customConfig = customConfig;
762
763 m_items[codexItemName] = codexItemData;
764 } catch (std::exception const& e) {
765 Logger::error("Could not create item for codex {}: {}", codexPair.second->id(), outputException(e, false));
766 }
767 }
768}
769
770}

Callers

nothing calls this directly

Calls 15

singletonClass · 0.85
strfFunction · 0.85
errorFunction · 0.85
assetsMethod · 0.80
jsonMethod · 0.80
codexDatabaseMethod · 0.80
toObjectMethod · 0.80
iconMethod · 0.80
jsonMergeFunction · 0.50
outputExceptionFunction · 0.50
codexesMethod · 0.45
idMethod · 0.45

Tested by

no test coverage detected