This commit is contained in:
aozhiwei 2022-10-20 19:04:26 +08:00
parent 8a3593701e
commit 00ffaf6641
2 changed files with 32 additions and 12 deletions

View File

@ -393,13 +393,18 @@ int Incubator::GetPveLeftTime()
void Incubator::NextWave() void Incubator::NextWave()
{ {
if (room->pve_data.GetWave() < wave_timers_.size()) { if (room->pve_data.GetWave() < wave_timers_.size()) {
#ifdef DEBUG
a8::XPrintf("NextWave \n", {});
#endif
int acc_time = 0; int acc_time = 0;
{ {
xtimer_list* timer = wave_timers_[room->pve_data.GetWave()]; xtimer_list* timer = wave_timers_[room->pve_data.GetWave()];
int remain_time = room->xtimer.GetRemainTime(timer); int remain_time = room->xtimer.GetRemainTime(timer);
room->xtimer.ModifyTimer(timer, 0); room->xtimer.ModifyTimer
(timer, room->pve_mode_meta->pb->wave_prepare_time() * SERVER_FRAME_RATE);
acc_time = remain_time; acc_time = remain_time;
} }
acc_time -= room->pve_mode_meta->pb->wave_prepare_time() * SERVER_FRAME_RATE;
for (int i = room->pve_data.GetWave(); i < wave_timers_.size(); ++i) { for (int i = room->pve_data.GetWave(); i < wave_timers_.size(); ++i) {
xtimer_list* timer = wave_timers_[i]; xtimer_list* timer = wave_timers_[i];
int remain_time = room->xtimer.GetRemainTime(timer); int remain_time = room->xtimer.GetRemainTime(timer);

View File

@ -127,10 +127,23 @@ void PveData::FlyDoor(Room* room, a8::Vec2& point, int radius)
killed_num killed_num
}); });
#endif #endif
room->xtimer.AddDeadLineTimerAndAttach
(
room->pve_mode_meta->pb->wave_prepare_time() * SERVER_FRAME_RATE,
a8::XParams()
.SetSender(room)
.SetParam1(point.x)
.SetParam2(point.y)
.SetParam3(radius),
[] (const a8::XParams& param)
{
Room* room = (Room*)param.sender.GetUserData();
a8::Vec2 point((float)param.param1.GetDouble(), (float)param.param2.GetDouble());
float radius = param.param3.GetDouble();
room->TraverseHumanList room->TraverseHumanList
( (
a8::XParams(), a8::XParams(),
[this, room, &point, radius] (Human* hum, a8::XParams& param) [room, &point, radius] (Human* hum, a8::XParams& param)
{ {
a8::Vec2 dir = a8::Vec2::UP; a8::Vec2 dir = a8::Vec2::UP;
dir.Rotate(a8::RandAngle()); dir.Rotate(a8::RandAngle());
@ -140,5 +153,7 @@ void PveData::FlyDoor(Room* room, a8::Vec2& point, int radius)
room->grid_service->MoveCreature(hum); room->grid_service->MoveCreature(hum);
return true; return true;
}); });
},
&room->xtimer_attacher_.timer_list_);
room->GetIncubator()->NextWave(); room->GetIncubator()->NextWave();
} }