#pragma once #include "StarUuid.hpp" #include "StarJson.hpp" namespace Star { STAR_CLASS(Codex); STAR_STRUCT(CodexEntry); STAR_CLASS(UniverseClient); class PlayerCodexes { public: typedef pair CodexEntry; PlayerCodexes(Json const& json = {}); Json toJson() const; List codexes() const; bool codexKnown(String const& codexId) const; CodexConstPtr learnCodex(String const& codexId, bool markRead = false); bool codexRead(String const& codexId) const; bool markCodexRead(String const& codexId); bool markCodexUnread(String const& codexId); void learnInitialCodexes(String const& playerSpecies); CodexConstPtr firstNewCodex() const; private: StringMap m_codexes; }; typedef shared_ptr PlayerCodexesPtr; }