From 483e3b9c559530b5874e5405fbb06021a289de96 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Dec 2022 15:14:53 +0800 Subject: [PATCH] 1 --- server/gameserver/android_agent.cc | 4 ++-- server/gameserver/base_agent.cc | 8 ++------ server/gameserver/room.cc | 2 +- server/gameserver/room.h | 2 +- 4 files changed, 6 insertions(+), 10 deletions(-) diff --git a/server/gameserver/android_agent.cc b/server/gameserver/android_agent.cc index da01125f..5f93b6fc 100644 --- a/server/gameserver/android_agent.cc +++ b/server/gameserver/android_agent.cc @@ -116,7 +116,7 @@ behaviac::EBTStatus AndroidAgent::DoAttack() if (status_ == behaviac::BT_RUNNING) { return DoRunningCb(); } - Human* enemy = GetOwner()->room->FindEnemy(GetOwner()->AsHuman()); + Human* enemy = GetOwner()->room->FindEnemy(GetOwner()->AsHuman(), 300); if (!enemy) { return behaviac::BT_FAILURE; } @@ -154,7 +154,7 @@ behaviac::EBTStatus AndroidAgent::DoPursuit() if (status_ == behaviac::BT_RUNNING) { return DoRunningCb(); } - Human* enemy = GetOwner()->room->FindEnemy(GetOwner()->AsHuman()); + Human* enemy = GetOwner()->room->FindEnemy(GetOwner()->AsHuman(), 500); if (!enemy) { return behaviac::BT_FAILURE; } diff --git a/server/gameserver/base_agent.cc b/server/gameserver/base_agent.cc index 4887210f..bde9fb01 100644 --- a/server/gameserver/base_agent.cc +++ b/server/gameserver/base_agent.cc @@ -21,12 +21,8 @@ bool BaseAgent::IsGameOver() bool BaseAgent::HasTarget(float range) { - Human* enemy = GetOwner()->room->FindEnemy(GetOwner()->AsHuman()); - if (enemy) { - float distance = enemy->GetPos().Distance(GetOwner()->GetPos()); - return distance <= range; - } - return false; + Human* enemy = GetOwner()->room->FindEnemy(GetOwner()->AsHuman(), range); + return enemy != nullptr; } behaviac::EBTStatus BaseAgent::DoRunningCb() diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 2b05254e..794127b3 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -413,7 +413,7 @@ void Room::CreateAndroid(int robot_num) NotifyUiUpdate(); } -Human* Room::FindEnemy(Human* hum) +Human* Room::FindEnemy(Human* hum, float range) { std::vector enemys; enemys.reserve(50); diff --git a/server/gameserver/room.h b/server/gameserver/room.h index 7dd7128b..eaa69d4c 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -138,7 +138,7 @@ public: Player* NewPlayer(); void AddPlayer(Player* hum, BornPoint* init_born_point = nullptr, bool no_matchteam = false); - Human* FindEnemy(Human* hum); + Human* FindEnemy(Human* hum, float range); void AddTeam(class MatchTeam* team);