From edb0faa6d204256f51ffc4aca531364e5390ab8a Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 5 Jun 2020 14:34:58 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=BA=8C=E5=9C=BA=E5=88=B7=E5=88=B0?= =?UTF-8?q?=E6=8C=87=E5=AE=9A=E5=87=BA=E7=94=9F=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/mapmgr.cc | 9 +++++++-- server/gameserver/mapmgr.h | 3 ++- server/gameserver/metamgr.cc | 1 + server/gameserver/metamgr.h | 1 + server/gameserver/room.cc | 18 ++++++++++++++---- server/gameserver/room.h | 6 ++++-- server/gameserver/types.h | 3 ++- 7 files changed, 31 insertions(+), 10 deletions(-) diff --git a/server/gameserver/mapmgr.cc b/server/gameserver/mapmgr.cc index fe211ab..0250ba0 100644 --- a/server/gameserver/mapmgr.cc +++ b/server/gameserver/mapmgr.cc @@ -59,7 +59,8 @@ void MapMgr::AttachRoom(Room* room, RoomInitInfo& init_info) init_info.grid_service = grid_service_; init_info.map_service = map_service_; init_info.spawn_points = &spawn_points_; - init_info.newbie_born_point_meta = newbie_born_point_; + 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_; @@ -106,7 +107,11 @@ void MapMgr::CreateThings() } if (spawn_points_hash.find(MetaMgr::Instance()->newbie_born_point) != spawn_points_hash.end()) { - newbie_born_point_ = spawn_points_hash[MetaMgr::Instance()->newbie_born_point]; + level0room_born_point_ = spawn_points_hash[MetaMgr::Instance()->newbie_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]; } } diff --git a/server/gameserver/mapmgr.h b/server/gameserver/mapmgr.h index 2b42b16..a78e28f 100644 --- a/server/gameserver/mapmgr.h +++ b/server/gameserver/mapmgr.h @@ -42,7 +42,8 @@ class MapMgr : public a8::Singleton MapService* map_service_ = nullptr; GridService* grid_service_ = nullptr; std::vector spawn_points_; - MetaData::MapTplThing* newbie_born_point_ = nullptr; + MetaData::MapTplThing* level0room_born_point_ = nullptr; + MetaData::MapTplThing* level1room_born_point_ = nullptr; std::vector loots_; std::vector buildings_; std::vector level0room_spec_things_; diff --git a/server/gameserver/metamgr.cc b/server/gameserver/metamgr.cc index 01efa9c..fb84daf 100755 --- a/server/gameserver/metamgr.cc +++ b/server/gameserver/metamgr.cc @@ -240,6 +240,7 @@ public: METAMGR_READ(level1room_robot_water, 8); METAMGR_READ(level1room_robot_autodie_time, 10); METAMGR_READ(level1room_robot_autodie_distance, 500); + METAMGR_READ_STR(level1room_born_point, ""); METAMGR_READ(refresh_robot_min_num, 5); METAMGR_READ(refresh_robot_max_num, 10); diff --git a/server/gameserver/metamgr.h b/server/gameserver/metamgr.h index 733ac9e..b7c20cc 100755 --- a/server/gameserver/metamgr.h +++ b/server/gameserver/metamgr.h @@ -100,6 +100,7 @@ class MetaMgr : public a8::Singleton int level1room_robot_water = 0; int level1room_robot_autodie_time = 0; int level1room_robot_autodie_distance = 0; + std::string level1room_born_point; int refresh_robot_min_num = 0; int refresh_robot_max_num = 0; diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index f514608..7e07f6b 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -51,7 +51,8 @@ void Room::InitData(RoomInitInfo& init_info) map_service = init_info.map_service; map_meta_ = init_info.map_meta; spawn_points_ = init_info.spawn_points; - newbie_born_point_meta_ = init_info.newbie_born_point_meta; + level0room_born_point_meta_ = init_info.level0room_born_point_meta; + level1room_born_point_meta_ = init_info.level1room_born_point_meta; loots_ = init_info.loots; buildings_ = init_info.buildings; level0room_spec_things_ = init_info.level0room_spec_things; @@ -1464,8 +1465,11 @@ void Room::CreateSpawnPoints() BornPoint born_point; born_point.thing_tpl = thing_tpl; born_point_hash_[uniid] = born_point; - if (thing_tpl == newbie_born_point_meta_) { - newbie_born_point_uniid_ = uniid; + if (thing_tpl == level0room_born_point_meta_) { + level0room_born_point_uniid_ = uniid; + } + if (thing_tpl == level1room_born_point_meta_) { + level1room_born_point_uniid_ = uniid; } } } @@ -1571,7 +1575,7 @@ void Room::SecondRandPoint() } CombineTeamBornPoint(); if (room_type_ == RT_NewBrid) { - BornPoint* newbie_point = GetBornPoint(newbie_born_point_uniid_); + BornPoint* newbie_point = GetBornPoint(level0room_born_point_uniid_); if (newbie_point && first_newbie_) { ForceSetBornPoint(first_newbie_, newbie_point); } else { @@ -1579,10 +1583,16 @@ void Room::SecondRandPoint() } } if (room_type_ == RT_MidBrid) { + BornPoint* newbie_point = GetBornPoint(level0room_born_point_uniid_); for (auto& pair : accountid_hash_) { pair.second->on_grid_chg = std::bind(&Room::OnHumanGridChg, this, std::placeholders::_1); + for (Human* member : *pair.second->team_members) { + if (newbie_point) { + ForceSetBornPoint(member, newbie_point); + } + } } } #ifdef DEBUG diff --git a/server/gameserver/room.h b/server/gameserver/room.h index c39d9c6..6b7d59c 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -206,7 +206,8 @@ private: std::string map_tpl_name_; RoomType_e room_type_ = RT_NewBrid; const std::vector* spawn_points_ = nullptr; - const MetaData::MapTplThing* newbie_born_point_meta_ = nullptr; + const MetaData::MapTplThing* level0room_born_point_meta_ = nullptr; + const MetaData::MapTplThing* level1room_born_point_meta_ = nullptr; const std::vector* loots_ = nullptr; const std::vector* buildings_ = nullptr; const std::vector* level0room_spec_things_ = nullptr; @@ -223,7 +224,8 @@ private: MetaData::AirLine* airline_ = nullptr; a8::XTimerAttacher xtimer_attacher_; size_t airdrop_times_ = 0; - int newbie_born_point_uniid_ = 0; + int level0room_born_point_uniid_ = 0; + int level1room_born_point_uniid_ = 0; bool show_handed_ = false; int current_teamid_ = 0; diff --git a/server/gameserver/types.h b/server/gameserver/types.h index 10a5810..529e479 100755 --- a/server/gameserver/types.h +++ b/server/gameserver/types.h @@ -151,7 +151,8 @@ struct RoomInitInfo GridService* grid_service = nullptr; MapService* map_service = nullptr; const std::vector* spawn_points = nullptr; - const MetaData::MapTplThing* newbie_born_point_meta = nullptr; + const MetaData::MapTplThing* level0room_born_point_meta = nullptr; + const MetaData::MapTplThing* level1room_born_point_meta = nullptr; const std::vector* loots = nullptr; const std::vector* buildings = nullptr; const std::vector* level0room_spec_things = nullptr;