Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/game/StarCodex.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/game/StarCodex.cpp')
-rw-r--r--source/game/StarCodex.cpp71
1 files changed, 71 insertions, 0 deletions
diff --git a/source/game/StarCodex.cpp b/source/game/StarCodex.cpp
new file mode 100644
index 0000000..c184724
--- /dev/null
+++ b/source/game/StarCodex.cpp
@@ -0,0 +1,71 @@
+#include "StarCodex.hpp"
+#include "StarJsonExtra.hpp"
+
+namespace Star {
+
+Codex::Codex(Json const& config, String const& directory) {
+ m_directory = directory;
+ m_id = config.getString("id");
+ m_species = config.getString("species", "other");
+ m_title = config.getString("title");
+ m_description = config.getString("description", "");
+ m_icon = config.getString("icon");
+ m_pages = jsonToStringList(config.get("contentPages"));
+ m_itemConfig = config.get("itemConfig", Json());
+}
+
+Json Codex::toJson() const {
+ auto result = JsonObject{
+ {"id", m_id},
+ {"species", m_species},
+ {"title", m_title},
+ {"description", m_description},
+ {"icon", m_icon},
+ {"contentPages", jsonFromStringList(m_pages)},
+ {"itemConfig", m_itemConfig}};
+ return result;
+}
+
+String Codex::id() const {
+ return m_id;
+}
+
+String Codex::species() const {
+ return m_species;
+}
+
+String Codex::title() const {
+ return m_title;
+}
+
+String Codex::description() const {
+ return m_description;
+}
+
+String Codex::icon() const {
+ return m_icon;
+}
+
+String Codex::page(size_t pageNum) const {
+ if (pageNum < m_pages.size())
+ return m_pages[pageNum];
+ return "";
+}
+
+List<String> Codex::pages() const {
+ return m_pages;
+}
+
+size_t Codex::pageCount() const {
+ return m_pages.size();
+}
+
+Json Codex::itemConfig() const {
+ return m_itemConfig;
+}
+
+String Codex::directory() const {
+ return m_directory;
+}
+
+}