#pragma once #include #include #include #include #include #include #include #include #include "Episode3/DataIndexes.hh" #include "ItemCreator.hh" #include "ItemNameIndex.hh" #include "LevelTable.hh" #include "PlayerSubordinates.hh" #include "SaveFileFormats.hh" #include "Text.hh" #include "Version.hh" class PlayerFilesManager { public: explicit PlayerFilesManager(std::shared_ptr io_context); ~PlayerFilesManager() = default; std::shared_ptr get_system(const std::string& filename); std::shared_ptr get_character(const std::string& filename); std::shared_ptr get_guild_card(const std::string& filename); std::shared_ptr get_bank(const std::string& filename); void set_system(const std::string& filename, std::shared_ptr file); void set_character(const std::string& filename, std::shared_ptr file); void set_guild_card(const std::string& filename, std::shared_ptr file); void set_bank(const std::string& filename, std::shared_ptr file); private: std::shared_ptr io_context; asio::steady_timer clear_expired_files_timer; std::unordered_map> loaded_system_files; std::unordered_map> loaded_character_files; std::unordered_map> loaded_guild_card_files; std::unordered_map> loaded_bank_files; void schedule_callback(); void clear_expired_files(); };