This commit is contained in:
aozhiwei 2020-07-18 21:30:27 +08:00
parent 20ff6afd30
commit 7b082b7748
4 changed files with 48 additions and 24 deletions

View File

@ -35,10 +35,11 @@ void MapInstance::Init()
MAP_GRID_WIDTH);
CreateThings();
a8::UdpLog::Instance()->Info
("current_uniid:%d loots:%d mini_room_spawn_points:%d normal_room_spawn_points:%d "
("map_id:%d current_uniid:%d loots:%d mini_room_spawn_points:%d normal_room_spawn_points:%d "
"building_num:%d obstalce_num:%d obstacle0_num:%d "
"obstacle1_num:%d obstacle2_num:%d",
{
map_id,
current_uniid_,
loots_.size(),
mini_room_spawn_points_.size(),
@ -62,6 +63,21 @@ void MapInstance::UnInit()
A8_SAFE_DELETE(grid_service_);
}
void MapInstance::AttachRoom(Room* room, RoomInitInfo& init_info)
{
init_info.map_tpl_name = map_tpl_name_;
init_info.map_meta = map_meta_;
init_info.grid_service = grid_service_;
init_info.map_service = map_service_;
init_info.mini_room_spawn_points = &mini_room_spawn_points_;
init_info.normal_room_spawn_points = &normal_room_spawn_points_;
init_info.level0room_born_point_meta = level0room_born_point_;
init_info.level1room_born_point_meta = level1room_born_point_;
init_info.loots = &loots_;
init_info.buildings = &buildings_;
init_info.level0room_spec_things = &level0room_spec_things_;
}
void MapInstance::CreateThings()
{
map_tpl_name_ = map_meta_->RandTemplate();

View File

@ -21,6 +21,8 @@ class MapInstance
void Init();
void UnInit();
void AttachRoom(Room* room, RoomInitInfo& init_info);
private:
void CreateThings();
void CreateMapObject(MetaData::MapTplThing& thing_tpl);

View File

@ -1,36 +1,39 @@
#include "precompile.h"
#include "mapservice.h"
#include "gridservice.h"
#include "building.h"
#include "obstacle.h"
#include "loot.h"
#include "mapmgr.h"
#include "metamgr.h"
#include "room.h"
#include "entityfactory.h"
#include "mapinstance.h"
void MapMgr::Init()
{
{
MapInstance* map_instance = new MapInstance();
map_instance->map_id = 2001;
map_instance->Init();
instance_hash_[map_instance->map_id] = map_instance;
}
}
void MapMgr::UnInit()
{
for (auto& pair : instance_hash_) {
pair.second->UnInit();
delete pair.second;
}
instance_hash_.clear();
}
void MapMgr::AttachRoom(Room* room, RoomInitInfo& init_info)
{
#if 0
init_info.map_tpl_name = map_tpl_name_;
init_info.map_meta = map_meta_;
init_info.grid_service = grid_service_;
init_info.map_service = map_service_;
init_info.mini_room_spawn_points = &mini_room_spawn_points_;
init_info.normal_room_spawn_points = &normal_room_spawn_points_;
init_info.level0room_born_point_meta = level0room_born_point_;
init_info.level1room_born_point_meta = level1room_born_point_;
init_info.loots = &loots_;
init_info.buildings = &buildings_;
init_info.level0room_spec_things = &level0room_spec_things_;
#endif
MapInstance* map_instance = GetMapInstance(2001);
if (!map_instance) {
abort();
}
map_instance->AttachRoom(room, init_info);
}
MapInstance* MapMgr::GetMapInstance(int map_id)
{
auto itr = instance_hash_.find(map_id);
return itr != instance_hash_.end() ? itr->second : nullptr;
}

View File

@ -4,16 +4,19 @@ class MapInstance;
class Room;
class MapMgr : public a8::Singleton<MapMgr>
{
private:
private:
MapMgr() {};
friend class a8::Singleton<MapMgr>;
public:
public:
void Init();
void UnInit();
void AttachRoom(Room* room, RoomInitInfo& init_info);
private:
private:
MapInstance* GetMapInstance(int map_id);
private:
std::map<int, MapInstance*> instance_hash_;
};