This commit is contained in:
aozhiwei 2023-05-10 10:34:19 +08:00
parent 9fa549a75c
commit abb8cf4681

View File

@ -115,6 +115,51 @@ bool AirRaid::GenAirRaidPos(const mt::AirRaid* raid_meta, glm::vec3& center)
void AirRaid::ExecOneRoundAirRaid(const mt::AirRaid* raid_meta, const glm::vec3& pos)
{
#if 1
int continue_time = std::get<0>(raid_meta->_bombling_time);
int interval_time = std::get<1>(raid_meta->_bombling_time);
int bomb_times = continue_time / std::max(1, interval_time);
for (int i = 0; i < bomb_times; ++i) {
glm::vec3 born_pos = pos;
int num = 1;
int delay = i * interval_time * 1000;
auto bomb_cb =
[this, raid_meta, num, delay, born_pos]
(int event, const a8::Args* args)
{
if (a8::TIMER_EXEC_EVENT == event) {
if (room_->IsGameOver()) {
return;
}
glm::vec3 center = born_pos;
room_->map_instance->Scale(center);
glm::vec3 point;
if (room_->map_instance->FindRandomPointAroundCircle
(
center,
100 * room_->GetMapMeta()->scale(),
point
)) {
room_->map_instance->UnScale(point);
for (auto bomb_id : raid_meta->_bomb_ids) {
RoomObstacle* obstacle = room_->CreateObstacle
(
bomb_id,
point.x,
point.y,
point.z
);
obstacle->Active();
}
}
}
};
room_->xtimer.SetTimeoutEx
(delay / FRAME_RATE_MS,
bomb_cb,
&room_->xtimer_attacher_);
}
#else
for (auto& tuple : raid_meta->_raid_waves) {
int num = std::get<0>(tuple);