This commit is contained in:
aozhiwei 2023-05-17 13:50:13 +08:00
parent 695f9d1077
commit 5ec4a32797
2 changed files with 59 additions and 37 deletions

View File

@ -2060,6 +2060,7 @@ void Team::FillSMGameOver(cs::SMGameOver& msg)
bool PBUtils::SupportSandTable(int proto_version) bool PBUtils::SupportSandTable(int proto_version)
{ {
return true;
return proto_version >= 2023051601; return proto_version >= 2023051601;
} }

View File

@ -1257,44 +1257,65 @@ void Room::UpdateGasInactivePvp()
FillTeam(); FillTeam();
ClearPostBattleAutoFreeList(); ClearPostBattleAutoFreeList();
OnBattleStart(); OnBattleStart();
ShuaPlane();
InitAndroidAI(); InitAndroidAI();
RoomMgr::Instance()->ActiveRoom(GetRoomUuid()); if (IsSandTableRoom()) {
#if 1 {
int auto_jump_interval = mt::Param::GetIntParam("auto_jump_interval"); auto first_safearea = pve_mode_meta->_area[0];
auto_jump_timer_ = xtimer.SetIntervalWpEx gas_data_.SetGasMode(GasWaiting);
(SERVER_FRAME_RATE * auto_jump_interval + SERVER_FRAME_RATE * 3, gas_data_.gas_start_frameno = GetFrameNo();
[this] (int event, const a8::Args* args) battle_start_frameno_ = GetFrameNo();
{ gas_data_.old_area_meta = first_safearea;
if (a8::TIMER_EXEC_EVENT == event) { gas_data_.new_area_meta = pve_mode_meta->_area[0];
AutoJump(); gas_data_.gas_start_frameno = GetFrameNo();
} gas_data_.pos_new = glm::vec2(gas_data_.new_area_meta->x1(),
}, gas_data_.new_area_meta->y1());
&xtimer_attacher_); gas_data_.pos_old = gas_data_.pos_new;
#else gas_data_.pos_old_bk = gas_data_.pos_old;
int auto_jump_interval_delay = mt::Param::GetIntParam("auto_jump_interval_delay"); gas_data_.rad_old = gas_data_.old_area_meta->rad();
xtimer.SetTimeoutEx gas_data_.rad_new = gas_data_.new_area_meta->rad();
( gas_data_.gas_progress = 0;
SERVER_FRAME_RATE * auto_jump_interval_delay, }
[this] (int event, const a8::Args* args) NotifyUiUpdate();
{ NotifyGameStart();
int auto_jump_interval = mt::Param::GetIntParam("auto_jump_interval"); } else {
auto_jump_timer_ = xtimer.SetIntervalWpEx ShuaPlane();
(SERVER_FRAME_RATE * auto_jump_interval, RoomMgr::Instance()->ActiveRoom(GetRoomUuid());
[this] (int event, const a8::Args* args) #if 1
{ int auto_jump_interval = mt::Param::GetIntParam("auto_jump_interval");
if (a8::TIMER_EXEC_EVENT == event) { auto_jump_timer_ = xtimer.SetIntervalWpEx
AutoJump(); (SERVER_FRAME_RATE * auto_jump_interval + SERVER_FRAME_RATE * 3,
} [this] (int event, const a8::Args* args)
}, {
&xtimer_attacher_); if (a8::TIMER_EXEC_EVENT == event) {
}, AutoJump();
&xtimer_attacher_); }
#endif },
#ifdef DEBUG &xtimer_attacher_);
a8::XPrintf("max_run_delay:%d %d\n", {PerfMonitor::Instance()->max_run_delay_time, #else
a8::XGetTickCount() - begin_tick}); int auto_jump_interval_delay = mt::Param::GetIntParam("auto_jump_interval_delay");
#endif xtimer.SetTimeoutEx
(
SERVER_FRAME_RATE * auto_jump_interval_delay,
[this] (int event, const a8::Args* args)
{
int auto_jump_interval = mt::Param::GetIntParam("auto_jump_interval");
auto_jump_timer_ = xtimer.SetIntervalWpEx
(SERVER_FRAME_RATE * auto_jump_interval,
[this] (int event, const a8::Args* args)
{
if (a8::TIMER_EXEC_EVENT == event) {
AutoJump();
}
},
&xtimer_attacher_);
},
&xtimer_attacher_);
#endif
}
#ifdef DEBUG
a8::XPrintf("max_run_delay:%d %d\n", {PerfMonitor::Instance()->max_run_delay_time,
a8::XGetTickCount() - begin_tick});
#endif
} }
} }