This commit is contained in:
aozhiwei 2020-05-28 20:40:11 +08:00
parent 15dc16633f
commit 771bccf2d2
2 changed files with 6 additions and 7 deletions

View File

@ -2126,7 +2126,7 @@ void Room::ProcDieAndroid(int die_time, int die_num)
die_num die_num
}); });
#endif #endif
std::vector<Android*> alive_humans; std::vector<Human*> alive_humans;
alive_humans.reserve(human_hash_.size()); alive_humans.reserve(human_hash_.size());
{ {
if (frame_no % 8 < 5) { if (frame_no % 8 < 5) {
@ -2174,11 +2174,11 @@ void Room::ProcDieAndroid(int die_time, int die_num)
} }
int dead_num = 0; int dead_num = 0;
int try_count = 0; int try_count = 0;
std::vector<Android*> alive_humans_copy = alive_humans; std::vector<Human*> alive_humans_copy = alive_humans;
do { do {
for (size_t i = 0; i < alive_humans.size(); ++i) { for (size_t i = 0; i < alive_humans.size(); ++i) {
Android* hum = alive_humans[i]; Human* hum = alive_humans[i];
Android* killer = nullptr; Human* killer = nullptr;
for (size_t ii = i + 1; ii < alive_humans_copy.size(); ++ii) { for (size_t ii = i + 1; ii < alive_humans_copy.size(); ++ii) {
killer = alive_humans_copy[ii]; killer = alive_humans_copy[ii];
alive_humans.erase(alive_humans.begin() + ii); alive_humans.erase(alive_humans.begin() + ii);
@ -2402,14 +2402,13 @@ void Room::CheckPartObjects(Human* testa, Human* testb)
} }
} }
void Room::CheckAliveHuman(Human* hum, std::vector<Android*>& alive_humans) void Room::CheckAliveHuman(Human* hum, std::vector<Human*>& alive_humans)
{ {
if (hum->IsAndroid() && if (hum->IsAndroid() &&
!hum->real_dead && !hum->real_dead &&
hum->team_uuid.empty() && hum->team_uuid.empty() &&
a8::HasBitFlag(hum->status, HS_Disable) && a8::HasBitFlag(hum->status, HS_Disable) &&
!HasPlayerInRound(hum->GetPos(), VIEW_RANGE)) { !HasPlayerInRound(hum->GetPos(), VIEW_RANGE)) {
Android* hum = (Android*)hum;
alive_humans.push_back(hum); alive_humans.push_back(hum);
} }
} }

View File

@ -170,7 +170,7 @@ private:
void ProcDisableHuman(); void ProcDisableHuman();
void OnHumanGridChg(Human* target); void OnHumanGridChg(Human* target);
void ShuaGridRound(Human* target); void ShuaGridRound(Human* target);
void CheckAliveHuman(Human* hum, std::vector<Android*>& alive_humans); void CheckAliveHuman(Human* hum, std::vector<Human*>& alive_humans);
private: private:
int elapsed_time_ = 0; int elapsed_time_ = 0;