#ifndef GAME_STATE_CHARACTERMANAGER_H #define GAME_STATE_CHARACTERMANAGER_H #include #include #include "character.hpp" namespace MWState { class CharacterManager { std::filesystem::path mPath; // Uses std::list, so that mCurrent stays valid when characters are deleted std::list mCharacters; Character* mCurrent; std::string mGame; private: CharacterManager(const CharacterManager&); ///< Not implemented CharacterManager& operator=(const CharacterManager&); ///< Not implemented std::list::iterator findCharacter(const MWState::Character* character); public: CharacterManager(std::filesystem::path saves, const std::vector& contentFiles); Character* getCurrentCharacter(); ///< @note May return null void deleteSlot(const MWState::Character* character, const MWState::Slot* slot); Character* createCharacter(const std::string& name); ///< Create new character within saved game management /// \param name Name for the character (does not need to be unique) void setCurrentCharacter(const Character* character); std::list::const_iterator begin() const; std::list::const_iterator end() const; }; } #endif