diff --git a/server/gameserver/android_agent.cc b/server/gameserver/android_agent.cc index baaef3fa..c8abb28d 100644 --- a/server/gameserver/android_agent.cc +++ b/server/gameserver/android_agent.cc @@ -37,13 +37,17 @@ behaviac::EBTStatus AndroidAgent::DoIdle(int min_time, int max_time) &GetOwner()->xtimer_attacher.timer_list_); std::weak_ptr timer_ptr = GetOwner()->room->xtimer.GetTimerPtr(timer); + std::shared_ptr last_attacker = std::make_shared(); + std::shared_ptr last_attacked_frameno = std::make_shared(0); std::weak_ptr handler = GetOwner()->GetTrigger()->AddListener ( kAttacked, - [this] (const std::vector& args) + [this, last_attacker, last_attacked_frameno] (const std::vector& args) { Creature* c = std::any_cast(args.at(0)); - FireEvent("OnAttacked", c->GetUniId(), c->room->GetFrameNo()); + *last_attacker = c->GetWeakPtrRef(); + *last_attacked_frameno = c->room->GetFrameNo(); + //FireEvent("OnAttacked", c->GetUniId(), c->room->GetFrameNo()); }); return StartCoroutine @@ -58,6 +62,10 @@ behaviac::EBTStatus AndroidAgent::DoIdle(int min_time, int max_time) } return behaviac::BT_SUCCESS; } + }, + [this, last_attacker, last_attacked_frameno] (bool& has_event) + { + }, "CoIdle" ); @@ -100,6 +108,10 @@ behaviac::EBTStatus AndroidAgent::DoRandomWalk() } else { return behaviac::BT_RUNNING; } + }, + [this] (bool& has_event) + { + }, "CoRandomWalk" ); @@ -146,6 +158,10 @@ behaviac::EBTStatus AndroidAgent::DoRandomShot() return behaviac::BT_RUNNING; } + }, + [this] (bool& has_event) + { + }, "CoRandomShot" ); @@ -184,6 +200,10 @@ behaviac::EBTStatus AndroidAgent::DoAttack() return behaviac::BT_RUNNING; } + }, + [this] (bool& has_event) + { + }, "CoAttack" ); @@ -246,6 +266,10 @@ behaviac::EBTStatus AndroidAgent::DoPursuit() } return behaviac::BT_RUNNING; } + }, + [this] (bool& has_event) + { + }, "CoPursuit" ); diff --git a/server/gameserver/base_agent.cc b/server/gameserver/base_agent.cc index 964c66a4..0f077bd0 100644 --- a/server/gameserver/base_agent.cc +++ b/server/gameserver/base_agent.cc @@ -62,6 +62,7 @@ behaviac::EBTStatus BaseAgent::DoRunningCb() } behaviac::EBTStatus BaseAgent::StartCoroutine(std::function cb, + std::function event_cb, const char* name) { #ifdef DEBUG @@ -70,6 +71,7 @@ behaviac::EBTStatus BaseAgent::StartCoroutine(std::function cb, + std::function event_cb, const char* name); protected: @@ -37,7 +38,7 @@ protected: #endif behaviac::EBTStatus status_= behaviac::BT_SUCCESS; std::function runing_cb_; - std::function event_cb_; + std::function event_cb_; private: Creature* owner_ = nullptr;