v1.4.4
This commit is contained in:
commit
9c94d113d3
10260 changed files with 1237388 additions and 0 deletions
41
source/game/StarCodexDatabase.cpp
Normal file
41
source/game/StarCodexDatabase.cpp
Normal file
|
@ -0,0 +1,41 @@
|
|||
#include "StarCodexDatabase.hpp"
|
||||
#include "StarJsonExtra.hpp"
|
||||
#include "StarRoot.hpp"
|
||||
#include "StarAssets.hpp"
|
||||
|
||||
namespace Star {
|
||||
|
||||
CodexDatabase::CodexDatabase() {
|
||||
auto assets = Root::singleton().assets();
|
||||
auto files = assets->scanExtension("codex");
|
||||
auto codexConfig = assets->json("/codex.config");
|
||||
assets->queueJsons(files);
|
||||
for (auto const& file : files) {
|
||||
try {
|
||||
auto codexJson = assets->json(file);
|
||||
codexJson = codexJson.set("icon",
|
||||
AssetPath::relativeTo(AssetPath::directory(file), codexJson.getString("icon", codexConfig.getString("defaultIcon"))));
|
||||
|
||||
auto codex = make_shared<Codex>(codexJson, AssetPath::directory(file));
|
||||
|
||||
if (m_codexes.contains(codex->id()))
|
||||
throw CodexDatabaseException::format("Duplicate codex named '%s', config file '%s'", codex->id(), file);
|
||||
|
||||
m_codexes[codex->id()] = codex;
|
||||
} catch (std::exception const& e) {
|
||||
throw CodexDatabaseException(strf("Error reading codex config %s", file), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StringMap<CodexConstPtr> CodexDatabase::codexes() const {
|
||||
return m_codexes;
|
||||
}
|
||||
|
||||
CodexConstPtr CodexDatabase::codex(String const& codexId) const {
|
||||
if (auto codex = m_codexes.maybe(codexId))
|
||||
return codex.take();
|
||||
return {};
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue