1
This commit is contained in:
parent
f01a1e9dab
commit
db0e9e72e3
@ -40,37 +40,7 @@ void AirRaid::Exec(int airraid_id)
|
|||||||
if (!raid_meta) {
|
if (!raid_meta) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
glm::vec3 dir = GlmHelper::UP;
|
glm::vec3 center;
|
||||||
GlmHelper::RotateY(dir, a8::RandAngle());
|
|
||||||
float rnd_rad = room_->GetGasData().new_area_meta->rad() > 0 ? rand() % room_->GetGasData().new_area_meta->rad() : 0;
|
|
||||||
glm::vec2 v2_center= room_->GetGasData().pos_new + glm::vec2(dir.x, dir.z) * (100.f + rnd_rad);
|
|
||||||
glm::vec3 center = glm::vec3(v2_center.x, 0.0f, v2_center.y);
|
|
||||||
{
|
|
||||||
std::vector<Player*> humans;
|
|
||||||
#if 0
|
|
||||||
room_->GetAlivePlayers(humans, room_->GetRoomMaxPlayerNum());
|
|
||||||
#endif
|
|
||||||
if (humans.size() > 3) {
|
|
||||||
std::random_shuffle(humans.begin(), humans.end());
|
|
||||||
for (Human* hum : humans) {
|
|
||||||
if (!hum->poisoning) {
|
|
||||||
// 99
|
|
||||||
#if 1
|
|
||||||
#else
|
|
||||||
center = hum->GetPos() + dir * (200 + rand() % 500);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#ifdef DEBUG1
|
|
||||||
if (humans.size() > 0) {
|
|
||||||
center = humans[0]->GetPos();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
room_->frame_event.AddAirRaid(raid_meta->appear_time(), center, raid_meta->rad());
|
|
||||||
|
|
||||||
auto raid_cb =
|
auto raid_cb =
|
||||||
[this, raid_meta, center]
|
[this, raid_meta, center]
|
||||||
(int event, const a8::Args* args)
|
(int event, const a8::Args* args)
|
||||||
@ -126,3 +96,37 @@ void AirRaid::Exec(int airraid_id)
|
|||||||
raid_cb,
|
raid_cb,
|
||||||
&room_->xtimer_attacher_);
|
&room_->xtimer_attacher_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool AirRaid::GenAirRaidPos(const mt::AirRaid* raid_meta, glm::vec3& center)
|
||||||
|
{
|
||||||
|
glm::vec3 dir = GlmHelper::UP;
|
||||||
|
GlmHelper::RotateY(dir, a8::RandAngle());
|
||||||
|
float rnd_rad = rand() % std::max(room_->GetGasData().new_area_meta->rad(), 100);
|
||||||
|
glm::vec2 v2_center = room_->GetGasData().pos_new + glm::vec2(dir.x, dir.z) * (100.f + rnd_rad);
|
||||||
|
center = glm::vec3(v2_center.x, 0.0f, v2_center.y);
|
||||||
|
{
|
||||||
|
std::vector<Player*> humans;
|
||||||
|
#if 0
|
||||||
|
room_->GetAlivePlayers(humans, room_->GetRoomMaxPlayerNum());
|
||||||
|
#endif
|
||||||
|
if (humans.size() > 3) {
|
||||||
|
std::random_shuffle(humans.begin(), humans.end());
|
||||||
|
for (Human* hum : humans) {
|
||||||
|
if (!hum->poisoning) {
|
||||||
|
// 99
|
||||||
|
#if 1
|
||||||
|
#else
|
||||||
|
center = hum->GetPos() + dir * (200 + rand() % 500);
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#ifdef DEBUG1
|
||||||
|
if (humans.size() > 0) {
|
||||||
|
center = humans[0]->GetPos();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
room_->frame_event.AddAirRaid(raid_meta->appear_time(), center, raid_meta->rad());
|
||||||
|
}
|
||||||
|
@ -12,6 +12,7 @@ class AirRaid
|
|||||||
private:
|
private:
|
||||||
|
|
||||||
void Exec(int airraid_id);
|
void Exec(int airraid_id);
|
||||||
|
bool GenAirRaidPos(const mt::AirRaid* raid_meta, glm::vec3& center);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Room* room_ = nullptr;
|
Room* room_ = nullptr;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user