From 0f19b56010c62aaf95d97f9277900a6a136bf988 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 1 Apr 2023 19:24:35 +0800 Subject: [PATCH] 1 --- server/gameserver/human.cc | 2 +- server/gameserver/incubator.cc | 6 ++++-- server/gameserver/incubator.h | 4 ++-- server/gameserver/room.cc | 6 +++--- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 128a7d81..aa1d8ea9 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -2053,7 +2053,7 @@ void Human::UpdateViewObjects() }); } if (view_objects_.size() < 2) { - room->GetIncubator()->AllocAndroid(this, 1 + rand() % 2); + room->GetIncubator()->AllocAndroid(this, 1 + rand() % 2, nullptr); if (!refresh_view_timer_.expired()) { room->xtimer.ModifyTime (refresh_view_timer_, diff --git a/server/gameserver/incubator.cc b/server/gameserver/incubator.cc index b0ffa75d..6683bbe9 100644 --- a/server/gameserver/incubator.cc +++ b/server/gameserver/incubator.cc @@ -64,7 +64,7 @@ void Incubator::UnInit() } -void Incubator::AllocAndroid(Human* target, int num) +void Incubator::AllocAndroid(Human* target, int num, std::vector* androids) { if (!room->xtimer.IsRunning()) { A8_ABORT(); @@ -236,8 +236,9 @@ void Incubator::AutoAllocAndroid() } } -void Incubator::ActiveAndroid(Human* hum, Human* android) +Human* Incubator::ActiveAndroid(Human* hum) { + #if 0 glm::vec3 center = glm::vec3(room->GetGasData().pos_new.x, 0.0f, room->GetGasData().pos_new.y); @@ -272,6 +273,7 @@ void Incubator::ActiveAndroid(Human* hum, Human* android) android->GetPos().GetY() })); #endif + #endif } void Incubator::OnEnterNewWave(int wave) diff --git a/server/gameserver/incubator.h b/server/gameserver/incubator.h index 1e3cd97a..243b77d4 100644 --- a/server/gameserver/incubator.h +++ b/server/gameserver/incubator.h @@ -12,9 +12,9 @@ class Incubator void Init(); void UnInit(); void InitPve(); - void AllocAndroid(Human* target, int num); + void AllocAndroid(Human* target, int num, std::vector* androids); void RecycleAndroid(Human* hum); - void ActiveAndroid(Human* hum, Human* android); + Human* ActiveAndroid(Human* hum); bool IsTimeOut() { return timeout_; }; int GetPveLeftTime(); void NextWave(); diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index d62da845..fe103ff9 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -845,7 +845,7 @@ Human* Room::GetWatchWarTarget(Human* hum) std::vector players; std::vector humans; for (auto& pair : human_hash_) { - if (pair.first != hum->GetUniId() && !pair.second->dead) { + if (pair.first != hum->GetUniId() && !pair.second->dead && !a8::HasBitFlag(pair.second->status, CS_Disable)) { if (pair.second->IsPlayer()) { players.push_back(pair.second); } else { @@ -870,8 +870,8 @@ Human* Room::GetWatchWarTarget(Human* hum) } #endif } - if (target && target->IsAndroid() && a8::HasBitFlag(target->status, CS_Disable)) { - incubator_->ActiveAndroid(hum, target); + if (!target) { + target = incubator_->ActiveAndroid(hum); } return target; }