From 5bcc3475189ede1231ed60dd6936b8f45de910a0 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 14 Oct 2023 15:12:10 +0800 Subject: [PATCH] 1 --- server/gameserver/new_hero_agent.cc | 22 ++++++++++++++++++++++ server/gameserver/new_hero_agent.h | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/server/gameserver/new_hero_agent.cc b/server/gameserver/new_hero_agent.cc index fde53c6e..25098e84 100644 --- a/server/gameserver/new_hero_agent.cc +++ b/server/gameserver/new_hero_agent.cc @@ -318,6 +318,28 @@ behaviac::EBTStatus HeroAgent::CoIdle(int min_val, int max_val) if (status_ == behaviac::BT_RUNNING) { return DoRunningCb(); } + auto context = MAKE_BTCONTEXT + ( + a8::XTimerWp timer_ptr; + ); + context->timer_ptr = owner_->room->xtimer.SetTimeoutWpEx + ( + a8::RandEx(min_val, max_val) / FRAME_RATE_MS, + [] (int event, const a8::Args* args) + { + }, + &owner_->xtimer_attacher); + auto co = std::make_shared(context, "CoIdle"); + co->runing_cb = + [this, context] () + { + if (!context->timer_ptr.expired()) { + return behaviac::BT_RUNNING; + } else { + return behaviac::BT_SUCCESS; + } + }; + return StartCoroutine(co); } behaviac::EBTStatus HeroAgent::CoMoveCurrentTargetRaycast() diff --git a/server/gameserver/new_hero_agent.h b/server/gameserver/new_hero_agent.h index 9edfb7ff..c5394ccc 100644 --- a/server/gameserver/new_hero_agent.h +++ b/server/gameserver/new_hero_agent.h @@ -14,7 +14,7 @@ class Context : public BtContext \ auto context = std::make_shared(); \ context->SetOwner(owner); \ return context; \ -}(GetOwner()->GetWeakPtrRef(), this) +}(owner_->GetWeakPtrRef(), this) namespace a8 {