This commit is contained in:
aozhiwei 2020-07-09 13:03:33 +08:00
parent 2ce7ddc3dd
commit bca5b880cd
5 changed files with 36 additions and 11 deletions

View File

@ -34,13 +34,14 @@ void MapMgr::Init()
MAP_GRID_WIDTH); MAP_GRID_WIDTH);
CreateThings(); CreateThings();
a8::UdpLog::Instance()->Info a8::UdpLog::Instance()->Info
("current_uniid:%d loots:%d spawn_points:%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 " "building_num:%d obstalce_num:%d obstacle0_num:%d "
"obstacle1_num:%d obstacle2_num:%d", "obstacle1_num:%d obstacle2_num:%d",
{ {
current_uniid_, current_uniid_,
loots_.size(), loots_.size(),
spawn_points_.size(), mini_room_spawn_points_.size(),
normal_room_spawn_points_.size(),
building_num_, building_num_,
obstacle_num_, obstacle_num_,
obstacle0_num_, obstacle0_num_,
@ -66,7 +67,8 @@ void MapMgr::AttachRoom(Room* room, RoomInitInfo& init_info)
init_info.map_meta = map_meta_; init_info.map_meta = map_meta_;
init_info.grid_service = grid_service_; init_info.grid_service = grid_service_;
init_info.map_service = map_service_; init_info.map_service = map_service_;
init_info.spawn_points = &spawn_points_; 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.level0room_born_point_meta = level0room_born_point_;
init_info.level1room_born_point_meta = level1room_born_point_; init_info.level1room_born_point_meta = level1room_born_point_;
init_info.loots = &loots_; init_info.loots = &loots_;
@ -99,11 +101,23 @@ void MapMgr::CreateThings()
break; break;
case kMOT_SpawnPoint: case kMOT_SpawnPoint:
{ {
std::string point_name = thing_tpl.i->name();
//pointxxx
if (point_name.size() < 6) {
abort();
}
std::string name_part = point_name.substr(0, 5);
std::string id_part = point_name.substr(5, point_name.size() - 5);
int point_id = a8::XValue(id_part);
if (spawn_points_hash.find(thing_tpl.i->name()) != if (spawn_points_hash.find(thing_tpl.i->name()) !=
spawn_points_hash.end()) { spawn_points_hash.end()) {
abort(); abort();
} }
spawn_points_.push_back(&thing_tpl); if (point_id <= 100) {
normal_room_spawn_points_.push_back(&thing_tpl);
} else {
mini_room_spawn_points_.push_back(&thing_tpl);
}
spawn_points_hash[thing_tpl.i->name()] = &thing_tpl; spawn_points_hash[thing_tpl.i->name()] = &thing_tpl;
} }
break; break;
@ -116,10 +130,12 @@ void MapMgr::CreateThings()
if (spawn_points_hash.find(MetaMgr::Instance()->newbie_born_point) != if (spawn_points_hash.find(MetaMgr::Instance()->newbie_born_point) !=
spawn_points_hash.end()) { spawn_points_hash.end()) {
level0room_born_point_ = spawn_points_hash[MetaMgr::Instance()->newbie_born_point]; level0room_born_point_ = spawn_points_hash[MetaMgr::Instance()->newbie_born_point];
mini_room_spawn_points_.push_back(level0room_born_point_);
} }
if (spawn_points_hash.find(MetaMgr::Instance()->level1room_born_point) != if (spawn_points_hash.find(MetaMgr::Instance()->level1room_born_point) !=
spawn_points_hash.end()) { spawn_points_hash.end()) {
level1room_born_point_ = spawn_points_hash[MetaMgr::Instance()->level1room_born_point]; level1room_born_point_ = spawn_points_hash[MetaMgr::Instance()->level1room_born_point];
mini_room_spawn_points_.push_back(level1room_born_point_);
} }
} }

View File

@ -41,7 +41,8 @@ class MapMgr : public a8::Singleton<MapMgr>
MetaData::Map* map_meta_ = nullptr; MetaData::Map* map_meta_ = nullptr;
MapService* map_service_ = nullptr; MapService* map_service_ = nullptr;
GridService* grid_service_ = nullptr; GridService* grid_service_ = nullptr;
std::vector<MetaData::MapTplThing*> spawn_points_; std::vector<MetaData::MapTplThing*> mini_room_spawn_points_;
std::vector<MetaData::MapTplThing*> normal_room_spawn_points_;
MetaData::MapTplThing* level0room_born_point_ = nullptr; MetaData::MapTplThing* level0room_born_point_ = nullptr;
MetaData::MapTplThing* level1room_born_point_ = nullptr; MetaData::MapTplThing* level1room_born_point_ = nullptr;
std::vector<MetaData::MapTplThing*> loots_; std::vector<MetaData::MapTplThing*> loots_;

View File

@ -52,7 +52,8 @@ void Room::InitData(RoomInitInfo& init_info)
grid_service = init_info.grid_service; grid_service = init_info.grid_service;
map_service = init_info.map_service; map_service = init_info.map_service;
map_meta_ = init_info.map_meta; map_meta_ = init_info.map_meta;
spawn_points_ = init_info.spawn_points; mini_room_spawn_points_ = init_info.mini_room_spawn_points;
normal_room_spawn_points_ = init_info.normal_room_spawn_points;
level0room_born_point_meta_ = init_info.level0room_born_point_meta; level0room_born_point_meta_ = init_info.level0room_born_point_meta;
level1room_born_point_meta_ = init_info.level1room_born_point_meta; level1room_born_point_meta_ = init_info.level1room_born_point_meta;
loots_ = init_info.loots; loots_ = init_info.loots;
@ -889,7 +890,6 @@ void Room::UpdateGasInactive()
gas_data_.old_area_meta = MetaMgr::Instance()->GetSafeArea(30001); gas_data_.old_area_meta = MetaMgr::Instance()->GetSafeArea(30001);
gas_data_.new_area_meta = MetaMgr::Instance()->GetSafeArea(30002); gas_data_.new_area_meta = MetaMgr::Instance()->GetSafeArea(30002);
} }
gas_data_.gas_progress = gas_data_.old_area_meta->i->rad(); gas_data_.gas_progress = gas_data_.old_area_meta->i->rad();
gas_data_.gas_start_frameno = GetFrameNo(); gas_data_.gas_start_frameno = GetFrameNo();
gas_data_.pos_old = a8::Vec2(map_meta_->i->map_width() / 2.0f, gas_data_.pos_old = a8::Vec2(map_meta_->i->map_width() / 2.0f,
@ -1552,10 +1552,16 @@ BornPoint* Room::GetBornPoint(int point_uniid)
void Room::CreateSpawnPoints() void Room::CreateSpawnPoints()
{ {
if (!spawn_points_ || spawn_points_->empty()) { const std::vector<MetaData::MapTplThing*>* spawn_points = nullptr;
if (IsMiniRoom()) {
spawn_points = mini_room_spawn_points_;
} else {
spawn_points = normal_room_spawn_points_;
}
if (!spawn_points || spawn_points->empty()) {
abort(); abort();
} }
for (auto& thing_tpl : *spawn_points_) { for (auto& thing_tpl : *spawn_points) {
int uniid = AllocUniid(); int uniid = AllocUniid();
BornPoint born_point; BornPoint born_point;
born_point.thing_tpl = thing_tpl; born_point.thing_tpl = thing_tpl;

View File

@ -210,7 +210,8 @@ private:
const MetaData::Map* map_meta_ = nullptr; const MetaData::Map* map_meta_ = nullptr;
std::string map_tpl_name_; std::string map_tpl_name_;
RoomType_e room_type_ = RT_NewBrid; RoomType_e room_type_ = RT_NewBrid;
const std::vector<MetaData::MapTplThing*>* spawn_points_ = nullptr; const std::vector<MetaData::MapTplThing*>* mini_room_spawn_points_ = nullptr;
const std::vector<MetaData::MapTplThing*>* normal_room_spawn_points_ = nullptr;
const MetaData::MapTplThing* level0room_born_point_meta_ = nullptr; const MetaData::MapTplThing* level0room_born_point_meta_ = nullptr;
const MetaData::MapTplThing* level1room_born_point_meta_ = nullptr; const MetaData::MapTplThing* level1room_born_point_meta_ = nullptr;
const std::vector<MetaData::MapTplThing*>* loots_ = nullptr; const std::vector<MetaData::MapTplThing*>* loots_ = nullptr;

View File

@ -158,7 +158,8 @@ struct RoomInitInfo
std::string map_tpl_name; std::string map_tpl_name;
GridService* grid_service = nullptr; GridService* grid_service = nullptr;
MapService* map_service = nullptr; MapService* map_service = nullptr;
const std::vector<MetaData::MapTplThing*>* spawn_points = nullptr; const std::vector<MetaData::MapTplThing*>* mini_room_spawn_points = nullptr;
const std::vector<MetaData::MapTplThing*>* normal_room_spawn_points = nullptr;
const MetaData::MapTplThing* level0room_born_point_meta = nullptr; const MetaData::MapTplThing* level0room_born_point_meta = nullptr;
const MetaData::MapTplThing* level1room_born_point_meta = nullptr; const MetaData::MapTplThing* level1room_born_point_meta = nullptr;
const std::vector<MetaData::MapTplThing*>* loots = nullptr; const std::vector<MetaData::MapTplThing*>* loots = nullptr;