From 8943161bb603e775be2e46e7a2d66239311c0ef4 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 26 Aug 2022 10:19:59 +0800 Subject: [PATCH] 1 --- server/gameserver/incubator.cc | 19 +++++++++++++++++++ server/gameserver/incubator.h | 1 + server/gameserver/pvedata.cc | 7 +++++++ 3 files changed, 27 insertions(+) diff --git a/server/gameserver/incubator.cc b/server/gameserver/incubator.cc index c2038aa1..9c2ab141 100644 --- a/server/gameserver/incubator.cc +++ b/server/gameserver/incubator.cc @@ -333,3 +333,22 @@ bool Incubator::IsLastWave() { return room->pve_data.wave >= room->pve_mode_meta->waves.size(); } + + +void Incubator::NextWave() +{ + if (room->pve_data.wave < wave_timers_.size() && room->IsSurvivalRoom()) { + int acc_time = 0; + { + xtimer_list* timer = wave_timers_[room->pve_data.wave]; + int remain_time = room->xtimer.GetRemainTime(timer); + room->xtimer.ModifyTimer(timer, 0); + acc_time = remain_time; + } + for (int i = room->pve_data.wave; i < wave_timers_.size(); ++i) { + xtimer_list* timer = wave_timers_[i]; + int remain_time = room->xtimer.GetRemainTime(timer); + room->xtimer.ModifyTimer(timer, remain_time - acc_time); + } + } +} diff --git a/server/gameserver/incubator.h b/server/gameserver/incubator.h index 38d2a3fb..635f3bd8 100644 --- a/server/gameserver/incubator.h +++ b/server/gameserver/incubator.h @@ -17,6 +17,7 @@ class Incubator bool IsTimeOut() { return timeout_; }; int GetPveLeftTime(); bool IsLastWave(); + void NextWave(); private: bool CanSee(Human* hum, Human* exclude_hum); diff --git a/server/gameserver/pvedata.cc b/server/gameserver/pvedata.cc index 69610470..54738431 100644 --- a/server/gameserver/pvedata.cc +++ b/server/gameserver/pvedata.cc @@ -3,6 +3,7 @@ #include "room.h" #include "human.h" #include "metadata.h" +#include "incubator.h" #include "pvedata.h" @@ -47,4 +48,10 @@ void PveData::OnBeKill(Hero* hero) } room->NotifyUiUpdate(); } + + if (refreshed_mon > 0) { + if (killed_num >= refreshed_mon) { + room->GetIncubator()->NextWave(); + } + } }