#pragma once #include class MapInstance; class Room; struct RoomInitInfo; class MapMgr : public a8::Singleton { private: MapMgr() {}; friend class a8::Singleton; public: void Init(); void UnInit(); void AttachRoom(Room* room, RoomInitInfo& init_info); std::shared_ptr GetMapInstance(int map_id); int IncCurrRaycastIndex() { return ++curr_raycast_index_; }; private: std::shared_ptr RandMapInstance(int map_mode); private: int curr_raycast_index_ = 1000; std::vector> instance_list_; std::map> instance_hash_; std::map>> mode_hash_; };