From bca5b880cdd825b1abea12b186c0c6479fad8666 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 9 Jul 2020 13:03:33 +0800 Subject: [PATCH] 1 --- server/gameserver/mapmgr.cc | 24 ++++++++++++++++++++---- server/gameserver/mapmgr.h | 3 ++- server/gameserver/room.cc | 14 ++++++++++---- server/gameserver/room.h | 3 ++- server/gameserver/types.h | 3 ++- 5 files changed, 36 insertions(+), 11 deletions(-) diff --git a/server/gameserver/mapmgr.cc b/server/gameserver/mapmgr.cc index b8d7c75..e48afdc 100644 --- a/server/gameserver/mapmgr.cc +++ b/server/gameserver/mapmgr.cc @@ -34,13 +34,14 @@ void MapMgr::Init() MAP_GRID_WIDTH); CreateThings(); 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 " "obstacle1_num:%d obstacle2_num:%d", { current_uniid_, loots_.size(), - spawn_points_.size(), + mini_room_spawn_points_.size(), + normal_room_spawn_points_.size(), building_num_, obstacle_num_, obstacle0_num_, @@ -66,7 +67,8 @@ void MapMgr::AttachRoom(Room* room, RoomInitInfo& init_info) init_info.map_meta = map_meta_; init_info.grid_service = grid_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.level1room_born_point_meta = level1room_born_point_; init_info.loots = &loots_; @@ -99,11 +101,23 @@ void MapMgr::CreateThings() break; 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()) != spawn_points_hash.end()) { 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; } break; @@ -116,10 +130,12 @@ void MapMgr::CreateThings() if (spawn_points_hash.find(MetaMgr::Instance()->newbie_born_point) != spawn_points_hash.end()) { 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) != spawn_points_hash.end()) { level1room_born_point_ = spawn_points_hash[MetaMgr::Instance()->level1room_born_point]; + mini_room_spawn_points_.push_back(level1room_born_point_); } } diff --git a/server/gameserver/mapmgr.h b/server/gameserver/mapmgr.h index 8ee5d24..1c88917 100644 --- a/server/gameserver/mapmgr.h +++ b/server/gameserver/mapmgr.h @@ -41,7 +41,8 @@ class MapMgr : public a8::Singleton MetaData::Map* map_meta_ = nullptr; MapService* map_service_ = nullptr; GridService* grid_service_ = nullptr; - std::vector spawn_points_; + std::vector mini_room_spawn_points_; + std::vector normal_room_spawn_points_; MetaData::MapTplThing* level0room_born_point_ = nullptr; MetaData::MapTplThing* level1room_born_point_ = nullptr; std::vector loots_; diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 0a5245d..d128b50 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -52,7 +52,8 @@ void Room::InitData(RoomInitInfo& init_info) grid_service = init_info.grid_service; map_service = init_info.map_service; 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; level1room_born_point_meta_ = init_info.level1room_born_point_meta; loots_ = init_info.loots; @@ -889,7 +890,6 @@ void Room::UpdateGasInactive() gas_data_.old_area_meta = MetaMgr::Instance()->GetSafeArea(30001); gas_data_.new_area_meta = MetaMgr::Instance()->GetSafeArea(30002); } - gas_data_.gas_progress = gas_data_.old_area_meta->i->rad(); gas_data_.gas_start_frameno = GetFrameNo(); 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() { - if (!spawn_points_ || spawn_points_->empty()) { + const std::vector* 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(); } - for (auto& thing_tpl : *spawn_points_) { + for (auto& thing_tpl : *spawn_points) { int uniid = AllocUniid(); BornPoint born_point; born_point.thing_tpl = thing_tpl; diff --git a/server/gameserver/room.h b/server/gameserver/room.h index 0f5328d..2413bed 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -210,7 +210,8 @@ private: const MetaData::Map* map_meta_ = nullptr; std::string map_tpl_name_; RoomType_e room_type_ = RT_NewBrid; - const std::vector* spawn_points_ = nullptr; + const std::vector* mini_room_spawn_points_ = nullptr; + const std::vector* normal_room_spawn_points_ = nullptr; const MetaData::MapTplThing* level0room_born_point_meta_ = nullptr; const MetaData::MapTplThing* level1room_born_point_meta_ = nullptr; const std::vector* loots_ = nullptr; diff --git a/server/gameserver/types.h b/server/gameserver/types.h index e7ef129..17f3314 100755 --- a/server/gameserver/types.h +++ b/server/gameserver/types.h @@ -158,7 +158,8 @@ struct RoomInitInfo std::string map_tpl_name; GridService* grid_service = nullptr; MapService* map_service = nullptr; - const std::vector* spawn_points = nullptr; + const std::vector* mini_room_spawn_points = nullptr; + const std::vector* normal_room_spawn_points = nullptr; const MetaData::MapTplThing* level0room_born_point_meta = nullptr; const MetaData::MapTplThing* level1room_born_point_meta = nullptr; const std::vector* loots = nullptr;