diff --git a/server/gameserver/incubator.cc b/server/gameserver/incubator.cc index 5019b643..a11b34ed 100644 --- a/server/gameserver/incubator.cc +++ b/server/gameserver/incubator.cc @@ -25,10 +25,12 @@ void Incubator::Init() #endif room->pve_data.max_wave = room->pve_mode_meta->mode_time.size(); int wave = 0; + int total_time = 0; for (int time : room->pve_mode_meta->mode_time) { + total_time += time; room->xtimer.AddDeadLineTimerAndAttach ( - time * SERVER_FRAME_RATE / 10, + total_time * SERVER_FRAME_RATE / 10, a8::XParams() .SetSender(this) .SetParam1(wave), diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index e9ef939d..1b3b7905 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -4104,5 +4104,20 @@ bool Room::IsSurvivalRoom() void Room::OnEnterNewWave(int wave) { - + if (IsDestoryRoom() && wave > 0) { + gas_data_.gas_mode = GasWaiting; + gas_data_.gas_start_frameno = GetFrameNo(); + battle_start_frameno_ = GetFrameNo(); + gas_data_.old_area_meta = pve_mode_meta->area[wave]; + gas_data_.new_area_meta = pve_mode_meta->area[wave]; + gas_data_.gas_start_frameno = GetFrameNo(); + gas_data_.pos_new = a8::Vec2(gas_data_.new_area_meta->i->x1(), gas_data_.new_area_meta->i->y1()); + gas_data_.pos_old = gas_data_.pos_new; + gas_data_.pos_old_bk = gas_data_.pos_old; + gas_data_.rad_old = gas_data_.old_area_meta->i->rad(); + gas_data_.rad_new = gas_data_.new_area_meta->i->rad(); + gas_data_.gas_progress = 0; + a8::XPrintf("OnEnternerWave:%d\n", {wave}); + NotifyUiUpdate(); + } }