From 0a93092c236a6be411ff38c9495b537c3d924c5e Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 17 May 2023 14:31:13 +0800 Subject: [PATCH] 1 --- server/gameserver/room.cc | 38 ++++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index db8d881a..0a186489 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -1260,20 +1260,39 @@ void Room::UpdateGasInactivePvp() InitAndroidAI(); if (IsSandTableRoom()) { { - auto first_safearea = pve_mode_meta->_area[0]; + const mt::SafeArea* first_safearea = mt::SafeArea::GetByType + (map_meta_->RandSafeArea()); gas_data_.SetGasMode(GasWaiting); - gas_data_.gas_start_frameno = GetFrameNo(); - battle_start_frameno_ = GetFrameNo(); gas_data_.old_area_meta = first_safearea; - gas_data_.new_area_meta = pve_mode_meta->_area[0]; + gas_data_.new_area_meta = mt::SafeArea::GetById(first_safearea->id() + 1); + gas_data_.pos_list = mt::SafeAreaPos::RandSafeAreaPos(first_safearea->id()); + gas_data_.gas_progress = gas_data_.old_area_meta->rad(); gas_data_.gas_start_frameno = GetFrameNo(); - gas_data_.pos_new = glm::vec2(gas_data_.new_area_meta->x1(), - gas_data_.new_area_meta->y1()); - gas_data_.pos_old = gas_data_.pos_new; +#if 1 + gas_data_.pos_old = glm::vec2(first_safearea->x1(), + first_safearea->y1()); +#else + gas_data_.pos_old = map_meta_->first_safearea_center; +#endif gas_data_.pos_old_bk = gas_data_.pos_old; + { + if (gas_data_.pos_list && !gas_data_.pos_list->_poses.empty()) { + gas_data_.pos_old = glm::vec2( + gas_data_.pos_list->_poses[0].x, + gas_data_.pos_list->_poses[0].z + ); + gas_data_.pos_old_bk = gas_data_.pos_old; + } + bool gen_ok = GenSmallCircle(); + if (!gen_ok) { + A8_ABORT(); + } + } gas_data_.rad_old = gas_data_.old_area_meta->rad(); gas_data_.rad_new = gas_data_.new_area_meta->rad(); - gas_data_.gas_progress = 0; + if (map_meta_->init_gas_ring() > 0) { + ForwardGasRing(map_meta_->init_gas_ring()); + } } NotifyUiUpdate(); NotifyGameStart(); @@ -2233,8 +2252,7 @@ void Room::NotifyGameStart() long long Room::GetGasInactiveTime() { #ifdef DEBUG - return App::Instance()->debug_params.find(1) != App::Instance()->debug_params.end() ? - App::Instance()->debug_params[1] : 10; + return IsSandTableRoom() ? 30 : 10; #endif if (IsPveRoom()) { return 10;