1
This commit is contained in:
parent
4e20487fa9
commit
f0e8cf7d0e
@ -92,7 +92,7 @@ void Android::InternalUpdate(int delta_time)
|
|||||||
room->grid_service->MoveCreature(this);
|
room->grid_service->MoveCreature(this);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (GetMoveHelper()->GetPathSize() > 0) {
|
if (GetMovement()->GetPathSize() > 0) {
|
||||||
Global::Instance()->verify_set_pos = 1;
|
Global::Instance()->verify_set_pos = 1;
|
||||||
Position old_pos = GetPos();
|
Position old_pos = GetPos();
|
||||||
UpdateMove();
|
UpdateMove();
|
||||||
|
@ -94,8 +94,8 @@ behaviac::EBTStatus AndroidAgent::DoRandomWalk()
|
|||||||
GlmHelper::Normalize(dir);
|
GlmHelper::Normalize(dir);
|
||||||
GetOwner()->SetMoveDir(dir);
|
GetOwner()->SetMoveDir(dir);
|
||||||
GetOwner()->SetAttackDir(dir);
|
GetOwner()->SetAttackDir(dir);
|
||||||
GetOwner()->GetMoveHelper()->CalcTargetPos(200);
|
GetOwner()->GetMovement()->CalcTargetPos(200);
|
||||||
if (GetOwner()->GetMoveHelper()->GetPathSize() <= 0) {
|
if (GetOwner()->GetMovement()->GetPathSize() <= 0) {
|
||||||
return behaviac::BT_FAILURE;
|
return behaviac::BT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,7 +115,7 @@ behaviac::EBTStatus AndroidAgent::DoRandomWalk()
|
|||||||
(
|
(
|
||||||
[this, handler] ()
|
[this, handler] ()
|
||||||
{
|
{
|
||||||
if (GetOwner()->GetMoveHelper()->GetPathSize() <= 0) {
|
if (GetOwner()->GetMovement()->GetPathSize() <= 0) {
|
||||||
if (!handler.expired()) {
|
if (!handler.expired()) {
|
||||||
GetOwner()->GetTrigger()->RemoveEventHandler(handler);
|
GetOwner()->GetTrigger()->RemoveEventHandler(handler);
|
||||||
}
|
}
|
||||||
@ -265,23 +265,23 @@ behaviac::EBTStatus AndroidAgent::DoPursuit()
|
|||||||
} else {
|
} else {
|
||||||
glm::vec3 dir = GetOwner()->GetPos().CalcDir(target.Get()->GetPos());
|
glm::vec3 dir = GetOwner()->GetPos().CalcDir(target.Get()->GetPos());
|
||||||
if (GlmHelper::Norm(dir) <= 1.0f) {
|
if (GlmHelper::Norm(dir) <= 1.0f) {
|
||||||
GetOwner()->GetMoveHelper()->CalcTargetPos(60);
|
GetOwner()->GetMovement()->CalcTargetPos(60);
|
||||||
last_pursuit_frameno = GetOwner()->room->GetFrameNo();
|
last_pursuit_frameno = GetOwner()->room->GetFrameNo();
|
||||||
} else {
|
} else {
|
||||||
bool is_shot = false;
|
bool is_shot = false;
|
||||||
if (GlmHelper::Norm(dir) > 300) {
|
if (GlmHelper::Norm(dir) > 300) {
|
||||||
if (GetOwner()->GetMoveHelper()->GetPathSize() < 1) {
|
if (GetOwner()->GetMovement()->GetPathSize() < 1) {
|
||||||
GlmHelper::Normalize(dir);
|
GlmHelper::Normalize(dir);
|
||||||
GetOwner()->SetMoveDir(dir);
|
GetOwner()->SetMoveDir(dir);
|
||||||
GetOwner()->SetAttackDir(dir);
|
GetOwner()->SetAttackDir(dir);
|
||||||
GetOwner()->GetMoveHelper()->CalcTargetPos(200);
|
GetOwner()->GetMovement()->CalcTargetPos(200);
|
||||||
last_pursuit_frameno = GetOwner()->room->GetFrameNo();
|
last_pursuit_frameno = GetOwner()->room->GetFrameNo();
|
||||||
} else {
|
} else {
|
||||||
if (GetOwner()->room->GetFrameNo() - last_pursuit_frameno > SERVER_FRAME_RATE * 1) {
|
if (GetOwner()->room->GetFrameNo() - last_pursuit_frameno > SERVER_FRAME_RATE * 1) {
|
||||||
GlmHelper::Normalize(dir);
|
GlmHelper::Normalize(dir);
|
||||||
GetOwner()->SetMoveDir(dir);
|
GetOwner()->SetMoveDir(dir);
|
||||||
GetOwner()->SetAttackDir(dir);
|
GetOwner()->SetAttackDir(dir);
|
||||||
GetOwner()->GetMoveHelper()->CalcTargetPos(200);
|
GetOwner()->GetMovement()->CalcTargetPos(200);
|
||||||
last_pursuit_frameno = GetOwner()->room->GetFrameNo();
|
last_pursuit_frameno = GetOwner()->room->GetFrameNo();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -132,23 +132,23 @@ behaviac::EBTStatus BaseAgent::CoAttackTarget(int target_id)
|
|||||||
} else {
|
} else {
|
||||||
glm::vec3 dir = GetOwner()->GetPos().CalcDir(target.Get()->GetPos());
|
glm::vec3 dir = GetOwner()->GetPos().CalcDir(target.Get()->GetPos());
|
||||||
if (GlmHelper::Norm(dir) <= 1.0f) {
|
if (GlmHelper::Norm(dir) <= 1.0f) {
|
||||||
GetOwner()->GetMoveHelper()->CalcTargetPos(60);
|
GetOwner()->GetMovement()->CalcTargetPos(60);
|
||||||
last_pursuit_frameno = GetOwner()->room->GetFrameNo();
|
last_pursuit_frameno = GetOwner()->room->GetFrameNo();
|
||||||
} else {
|
} else {
|
||||||
bool is_shot = false;
|
bool is_shot = false;
|
||||||
if (GlmHelper::Norm(dir) > 300) {
|
if (GlmHelper::Norm(dir) > 300) {
|
||||||
if (GetOwner()->GetMoveHelper()->GetPathSize() < 1) {
|
if (GetOwner()->GetMovement()->GetPathSize() < 1) {
|
||||||
GlmHelper::Normalize(dir);
|
GlmHelper::Normalize(dir);
|
||||||
GetOwner()->SetMoveDir(dir);
|
GetOwner()->SetMoveDir(dir);
|
||||||
GetOwner()->SetAttackDir(dir);
|
GetOwner()->SetAttackDir(dir);
|
||||||
GetOwner()->GetMoveHelper()->CalcTargetPos(200);
|
GetOwner()->GetMovement()->CalcTargetPos(200);
|
||||||
last_pursuit_frameno = GetOwner()->room->GetFrameNo();
|
last_pursuit_frameno = GetOwner()->room->GetFrameNo();
|
||||||
} else {
|
} else {
|
||||||
if (GetOwner()->room->GetFrameNo() - last_pursuit_frameno > SERVER_FRAME_RATE * 1) {
|
if (GetOwner()->room->GetFrameNo() - last_pursuit_frameno > SERVER_FRAME_RATE * 1) {
|
||||||
GlmHelper::Normalize(dir);
|
GlmHelper::Normalize(dir);
|
||||||
GetOwner()->SetMoveDir(dir);
|
GetOwner()->SetMoveDir(dir);
|
||||||
GetOwner()->SetAttackDir(dir);
|
GetOwner()->SetAttackDir(dir);
|
||||||
GetOwner()->GetMoveHelper()->CalcTargetPos(200);
|
GetOwner()->GetMovement()->CalcTargetPos(200);
|
||||||
last_pursuit_frameno = GetOwner()->room->GetFrameNo();
|
last_pursuit_frameno = GetOwner()->room->GetFrameNo();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@ Creature::Creature():MoveableEntity()
|
|||||||
}
|
}
|
||||||
|
|
||||||
inventory_[IS_1XSCOPE].num = 1;
|
inventory_[IS_1XSCOPE].num = 1;
|
||||||
move_helper_ = std::make_shared<MoveHelper>(this);
|
movement_ = std::make_shared<Movement>(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
Creature::~Creature()
|
Creature::~Creature()
|
||||||
@ -3176,11 +3176,11 @@ void Creature::UpdateMove()
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
if (GetMoveHelper()->UpdatePosition()) {
|
if (GetMovement()->UpdatePosition()) {
|
||||||
} else {
|
} else {
|
||||||
#if 0
|
#if 0
|
||||||
GetMoveHelper()->CalcTargetPos(500);
|
GetMovement()->CalcTargetPos(500);
|
||||||
if (GetMoveHelper()->GetMovePosition(out_pos)) {
|
if (GetMovement()->GetMovePosition(out_pos)) {
|
||||||
a8::Vec2 new_pos;
|
a8::Vec2 new_pos;
|
||||||
new_pos.x = out_pos.x;
|
new_pos.x = out_pos.x;
|
||||||
new_pos.y = out_pos.z;
|
new_pos.y = out_pos.z;
|
||||||
|
@ -60,7 +60,7 @@ class Team;
|
|||||||
class Car;
|
class Car;
|
||||||
class Trigger;
|
class Trigger;
|
||||||
class DelayAddBuffHandle;
|
class DelayAddBuffHandle;
|
||||||
class MoveHelper;
|
class Movement;
|
||||||
class Player;
|
class Player;
|
||||||
class Creature : public MoveableEntity
|
class Creature : public MoveableEntity
|
||||||
{
|
{
|
||||||
@ -125,7 +125,7 @@ class Creature : public MoveableEntity
|
|||||||
virtual const mt::Hero* GetHeroMeta() { return nullptr; };
|
virtual const mt::Hero* GetHeroMeta() { return nullptr; };
|
||||||
virtual void FillMFObjectImage(Room* room, Human* hum, cs::MFCharacterImage* image_data) {};
|
virtual void FillMFObjectImage(Room* room, Human* hum, cs::MFCharacterImage* image_data) {};
|
||||||
virtual void SetPos(Position pos) override;
|
virtual void SetPos(Position pos) override;
|
||||||
std::shared_ptr<MoveHelper> GetMoveHelper() { return move_helper_; };
|
std::shared_ptr<Movement> GetMovement() { return movement_; };
|
||||||
bool HasBuffEffect(int buff_effect_id);
|
bool HasBuffEffect(int buff_effect_id);
|
||||||
Buff* GetBuffByEffectId(int effect_id);
|
Buff* GetBuffByEffectId(int effect_id);
|
||||||
Buff* GetBuffById(int buff_id);
|
Buff* GetBuffById(int buff_id);
|
||||||
@ -338,7 +338,7 @@ protected:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
CreatureWeakPtr weak_ptr_;
|
CreatureWeakPtr weak_ptr_;
|
||||||
std::shared_ptr<MoveHelper> move_helper_;
|
std::shared_ptr<Movement> movement_;
|
||||||
std::shared_ptr<Trigger> trigger_;
|
std::shared_ptr<Trigger> trigger_;
|
||||||
long long collision_times_ = 0;
|
long long collision_times_ = 0;
|
||||||
Team* team_ = nullptr;
|
Team* team_ = nullptr;
|
||||||
|
@ -11,12 +11,12 @@
|
|||||||
|
|
||||||
#include "mt/Map.h"
|
#include "mt/Map.h"
|
||||||
|
|
||||||
MoveHelper::MoveHelper(Creature* owner)
|
Movement::Movement(Creature* owner)
|
||||||
{
|
{
|
||||||
owner_ = owner;
|
owner_ = owner;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MoveHelper::UpdatePosition()
|
bool Movement::UpdatePosition()
|
||||||
{
|
{
|
||||||
if (path_index_ >= paths_.size()) {
|
if (path_index_ >= paths_.size()) {
|
||||||
ClearPath();
|
ClearPath();
|
||||||
@ -93,7 +93,7 @@ bool MoveHelper::UpdatePosition()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MoveHelper::CalcTargetPos(float distance)
|
void Movement::CalcTargetPos(float distance)
|
||||||
{
|
{
|
||||||
ClearPath();
|
ClearPath();
|
||||||
#ifdef DEBUG1
|
#ifdef DEBUG1
|
||||||
@ -180,13 +180,13 @@ void MoveHelper::CalcTargetPos(float distance)
|
|||||||
paths_.push_back(point);
|
paths_.push_back(point);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MoveHelper::ClearPath()
|
void Movement::ClearPath()
|
||||||
{
|
{
|
||||||
path_index_ = 0;
|
path_index_ = 0;
|
||||||
paths_.clear();
|
paths_.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MoveHelper::AddPaths(const a8::Vec3& start, std::vector<a8::Vec3>& paths)
|
void Movement::AddPaths(const a8::Vec3& start, std::vector<a8::Vec3>& paths)
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
if (paths.empty()) {
|
if (paths.empty()) {
|
||||||
@ -271,7 +271,7 @@ void MoveHelper::AddPaths(const a8::Vec3& start, std::vector<a8::Vec3>& paths)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t MoveHelper::GetPathSize()
|
size_t Movement::GetPathSize()
|
||||||
{
|
{
|
||||||
return paths_.size();
|
return paths_.size();
|
||||||
}
|
}
|
||||||
|
@ -9,14 +9,14 @@ private:
|
|||||||
glm::vec3 dir;
|
glm::vec3 dir;
|
||||||
float distance = 0.0f;
|
float distance = 0.0f;
|
||||||
|
|
||||||
friend class MoveHelper;
|
friend class Movement;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Creature;
|
class Creature;
|
||||||
class MoveHelper
|
class Movement
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MoveHelper(Creature* owner);
|
Movement(Creature* owner);
|
||||||
|
|
||||||
bool UpdatePosition();
|
bool UpdatePosition();
|
||||||
void CalcTargetPos(float distance);
|
void CalcTargetPos(float distance);
|
||||||
|
@ -776,7 +776,7 @@ void Player::_CMMove(f8::MsgHdr& hdr, const cs::CMMove& msg)
|
|||||||
std::fabs(new_move_dir.y - GetMoveDir().y) > 0.00001f ||
|
std::fabs(new_move_dir.y - GetMoveDir().y) > 0.00001f ||
|
||||||
std::fabs(new_move_dir.z - GetMoveDir().z) > 0.00001f) {
|
std::fabs(new_move_dir.z - GetMoveDir().z) > 0.00001f) {
|
||||||
SetMoveDir(new_move_dir);
|
SetMoveDir(new_move_dir);
|
||||||
GetMoveHelper()->CalcTargetPos(500);
|
GetMovement()->CalcTargetPos(500);
|
||||||
}
|
}
|
||||||
moving = true;
|
moving = true;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user