#ifndef TOOLS_DATAPACKER_CONTAINER_H_ #define TOOLS_DATAPACKER_CONTAINER_H_ #include #include #include #include #include "proto/data.pb.h" namespace com::fourisland::lingo2_archipelago { class Container { public: uint64_t FindOrAddMap(std::string map_name); uint64_t FindOrAddRoom(std::optional map_name, std::string room_name, std::optional map_fallback); uint64_t FindOrAddPainting(std::optional map_name, std::optional room_name, std::string painting_name, std::optional map_fallback, std::optional room_fallback); uint64_t FindOrAddPort(std::optional map_name, std::optional room_name, std::string port_name, std::optional map_fallback, std::optional room_fallback); uint64_t FindOrAddPanel(std::optional map_name, std::optional room_name, std::string panel_name, std::optional map_fallback, std::optional room_fallback); uint64_t FindOrAddLetter(std::string key, bool level2); uint64_t FindLetterByName(std::string letter_name); uint64_t FindOrAddMastery(std::optional map_name, std::optional room_name, std::string mastery_name, std::optional map_fallback, std::optional room_fallback); uint64_t FindOrAddKeyholder(std::optional map_name, std::optional room_name, std::string keyholder_name, std::optional map_fallback, std::optional room_fallback); uint64_t FindOrAddDoor(std::optional map_name, std::string door_name, std::optional map_fallback); void AddConnection(const Connection& connection); AllObjects& all_objects() { return all_objects_; } private: AllObjects all_objects_; std::map map_id_by_name_; std::map> room_id_by_map_room_names_; std::map>> painting_id_by_map_room_painting_names_; std::map>> port_id_by_map_room_port_names_; std::map>> panel_id_by_map_room_panel_names_; std::map letter_id_by_name_; std::map>> mastery_id_by_map_room_mastery_names_; std::map>> keyholder_id_by_map_room_keyholder_names_; std::map> door_id_by_map_door_names_; }; } // namespace com::fourisland::lingo2_archipelago #endif /* TOOLS_DATAPACKER_CONTAINER_H_ */