This commit is contained in:
aozhiwei 2023-10-14 14:53:11 +08:00
parent f66025ad4e
commit 7f49358f6f
6 changed files with 27 additions and 10 deletions

View File

@ -1,8 +1,5 @@
#include "precompile.h" #include "precompile.h"
#ifdef NEW_BT
#else
#include "btcontext.h" #include "btcontext.h"
#include "creature.h" #include "creature.h"
#include "trigger.h" #include "trigger.h"
@ -46,4 +43,3 @@ void BtContext::FireEvent(BaseAgent* agent)
} }
} }
} }
#endif

View File

@ -1,5 +1,6 @@
#pragma once #pragma once
class HeroAgent;
class BaseAgent; class BaseAgent;
class BtEvent; class BtEvent;
struct EventHandlerPtr; struct EventHandlerPtr;

View File

@ -1,12 +1,10 @@
#include "precompile.h" #include "precompile.h"
#ifdef NEW_BT
#else
#include "btevent.h" #include "btevent.h"
#include "creature.h" #include "creature.h"
#include "trigger.h" #include "trigger.h"
#include "base_agent.h" #include "base_agent.h"
#include "new_base_agent.h"
std::shared_ptr<BtEvent> BtEvent::Create(int event_id, std::shared_ptr<BtEvent> BtEvent::Create(int event_id,
a8::Args event_params, a8::Args event_params,
@ -42,4 +40,3 @@ void BtEvent::FireEvent(BaseAgent* agent)
break; break;
} }
} }
#endif

View File

@ -6,6 +6,7 @@ enum BtEventType_e
kBetOnCrazeMode, kBetOnCrazeMode,
}; };
class HeroAgent;
class BaseAgent; class BaseAgent;
class BtEvent class BtEvent
{ {

View File

@ -1,5 +1,7 @@
#include "precompile.h" #include "precompile.h"
#include <f8/btmgr.h>
#include "new_hero_agent.h" #include "new_hero_agent.h"
#include "hero.h" #include "hero.h"
@ -12,6 +14,8 @@
#include "mapinstance.h" #include "mapinstance.h"
#include "collision.h" #include "collision.h"
#include "human.h" #include "human.h"
#include "btcoroutine.h"
#include "btcontext.h"
#include "mt/Hero.h" #include "mt/Hero.h"
#include "mt/Equip.h" #include "mt/Equip.h"
@ -27,7 +31,15 @@ HeroAgent::~HeroAgent()
void HeroAgent::Exec() void HeroAgent::Exec()
{ {
behaviac::EBTStatus status = f8::BtMgr::Instance()->BtExec(this);
if (status == behaviac::BT_RUNNING && coroutine_ && coroutine_->GetContext()->HasEvent()) {
status_= behaviac::BT_INVALID;
auto old_coroutine = coroutine_;
coroutine_ = nullptr;
owner_->shot_hold = false;
old_coroutine->GetContext()->FireEvent(this);
old_coroutine = nullptr;
}
} }
void HeroAgent::SetOwner(Creature* owner) void HeroAgent::SetOwner(Creature* owner)
@ -239,7 +251,7 @@ int HeroAgent::IncV(int id, int val)
int HeroAgent::DecV(int id, int val) int HeroAgent::DecV(int id, int val)
{ {
IncV(id, -val); return IncV(id, -val);
} }
bool HeroAgent::HasBuffEffect(int effect_id) bool HeroAgent::HasBuffEffect(int effect_id)

View File

@ -6,6 +6,7 @@ class Hero;
class RoomAgent; class RoomAgent;
class TeamAgent; class TeamAgent;
class TargetAgent; class TargetAgent;
class BtCoroutine;
class HeroAgent : public BaseAgent class HeroAgent : public BaseAgent
{ {
public: public:
@ -103,4 +104,13 @@ private:
bool bullet_trace_mode_ = false; bool bullet_trace_mode_ = false;
long long flags_ = 0; long long flags_ = 0;
std::map<int, int> dyn_hash_; std::map<int, int> dyn_hash_;
#ifdef DEBUG
behaviac::EBTStatus last_status_ = behaviac::BT_INVALID;
long long status_frameno_ = 0;
const char* status_name_ = nullptr;
#endif
behaviac::EBTStatus status_= behaviac::BT_SUCCESS;
std::shared_ptr<BtCoroutine> coroutine_;
}; };