From 31c819ee66ce673a3c319d47367a42bb4d7b2ccc Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Dec 2022 14:55:45 +0800 Subject: [PATCH] 1 --- server/gameserver/android.cc | 1 + server/gameserver/android_agent.cc | 47 +++++++++++++++++------------- server/gameserver/base_agent.cc | 2 +- server/gameserver/creature.cc | 1 + server/gameserver/creature.h | 2 +- server/gameserver/human.cc | 1 + server/gameserver/player.cc | 1 + 7 files changed, 32 insertions(+), 23 deletions(-) diff --git a/server/gameserver/android.cc b/server/gameserver/android.cc index 87190568..f0284783 100644 --- a/server/gameserver/android.cc +++ b/server/gameserver/android.cc @@ -5,6 +5,7 @@ #include "room.h" #include "app.h" #include "android_agent.h" +#include "movehelper.h" #include "framework/cpp/btmgr.h" diff --git a/server/gameserver/android_agent.cc b/server/gameserver/android_agent.cc index d5bb813f..da01125f 100644 --- a/server/gameserver/android_agent.cc +++ b/server/gameserver/android_agent.cc @@ -3,6 +3,7 @@ #include "android_agent.h" #include "android.h" #include "room.h" +#include "movehelper.h" AndroidAgent::AndroidAgent():BaseAgent() { @@ -164,38 +165,42 @@ behaviac::EBTStatus AndroidAgent::DoPursuit() status_runing_cb_ = [this, last_frameno, target, last_pursuit_frameno] () mutable { - if (GetOwner()->room->GetFrameNo() - last_frameno > SERVER_FRAME_RATE * 10 && - target.Get()) { + if (GetOwner()->room->GetFrameNo() - last_frameno > SERVER_FRAME_RATE * 10 || + !target.Get() || target.Get()->dead) { status_ = behaviac::BT_SUCCESS; return behaviac::BT_SUCCESS; } else { a8::Vec2 dir = target.Get()->GetPos() - GetOwner()->GetPos(); - dir.Normalize(); - bool is_shot = false; - if (dir.Norm() > 500) { - if (GetOwner()->GetMoveHelper()->GetPathSize() < 1) { - GetOwner()->SetMoveDir(dir); - GetOwner()->SetAttackDir(dir); - GetOwner()->GetMoveHelper()->CalcTargetPos(200); - last_pursuit_frameno = GetOwner()->room->GetFrameNo(); - } else { - if (GetOwner()->room->GetFrameNo() - last_pursuit_frameno > SERVER_FRAME_RATE * 1) { + if (dir.Norm() <= 1.0f) { + GetOwner()->GetMoveHelper()->CalcTargetPos(60); + last_pursuit_frameno = GetOwner()->room->GetFrameNo(); + } else { + bool is_shot = false; + dir.Normalize(); + if (dir.Norm() > 500) { + if (GetOwner()->GetMoveHelper()->GetPathSize() < 1) { GetOwner()->SetMoveDir(dir); GetOwner()->SetAttackDir(dir); GetOwner()->GetMoveHelper()->CalcTargetPos(200); last_pursuit_frameno = GetOwner()->room->GetFrameNo(); + } else { + if (GetOwner()->room->GetFrameNo() - last_pursuit_frameno > SERVER_FRAME_RATE * 1) { + GetOwner()->SetMoveDir(dir); + GetOwner()->SetAttackDir(dir); + GetOwner()->GetMoveHelper()->CalcTargetPos(200); + last_pursuit_frameno = GetOwner()->room->GetFrameNo(); + } } + } else { + is_shot = true; + } + if (is_shot) { + bool shot_ok = false; + a8::Vec2 shot_dir = dir; + GetOwner()->SetAttackDir(dir); + GetOwner()->Shot(shot_dir, shot_ok, 0, 0); } - } else { - is_shot = true; } - - if (is_shot) { - bool shot_ok = false; - a8::Vec2 shot_dir = dir; - GetOwner()->Shot(shot_dir, shot_ok, 0, 0); - } - return behaviac::BT_RUNNING; } }; diff --git a/server/gameserver/base_agent.cc b/server/gameserver/base_agent.cc index 8147a2d0..4887210f 100644 --- a/server/gameserver/base_agent.cc +++ b/server/gameserver/base_agent.cc @@ -23,7 +23,7 @@ bool BaseAgent::HasTarget(float range) { Human* enemy = GetOwner()->room->FindEnemy(GetOwner()->AsHuman()); if (enemy) { - float distance = (enemy->GetPos() - GetOwner()->GetPos()).Norm(); + float distance = enemy->GetPos().Distance(GetOwner()->GetPos()); return distance <= range; } return false; diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 900f6612..6dda62ad 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -15,6 +15,7 @@ #include "bullet.h" #include "skillhelper.h" #include "shot.h" +#include "movehelper.h" #include "framework/cpp/utils.h" diff --git a/server/gameserver/creature.h b/server/gameserver/creature.h index 3e2c8059..c0c3d94d 100644 --- a/server/gameserver/creature.h +++ b/server/gameserver/creature.h @@ -6,7 +6,6 @@ #include "ability.h" #include "weapon.h" #include "battledatacontext.h" -#include "movehelper.h" #include "cs_proto.pb.h" @@ -68,6 +67,7 @@ class Team; class Car; class Trigger; class DelayAddBuffHandle; +class MoveHelper; class Creature : public MoveableEntity { public: diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 860c2ce5..fe7e3c34 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -39,6 +39,7 @@ #include "shot.h" #include "battledatacontext.h" #include "mapinstance.h" +#include "movehelper.h" const int kReviveTimeAdd = 12; const int kSkinNum = 4; diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index ae4ba5d8..756c22df 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -24,6 +24,7 @@ #include "team.h" #include "httpproxy.h" #include "roommgr.h" +#include "movehelper.h" const int kREVIVE_BUFF_ID = 1005;