game2006/server/gameserver/btcontext.h
aozhiwei 59d5a0680f 1
2023-06-23 20:10:08 +08:00

24 lines
658 B
C++

#pragma once
class BaseAgent;
class BtEvent;
struct EventHandlerPtr;
class BtContext : public std::enable_shared_from_this<BtContext>
{
public:
virtual ~BtContext();
void SetOwner(CreatureWeakPtr owner) { owner_ = owner;}
CreatureWeakPtr GetOwner() { return owner_; }
void AddHandler(CreatureWeakPtr target, std::weak_ptr<EventHandlerPtr> handler);
void AddEvent(std::shared_ptr<BtEvent> event);
bool HasEvent();
void FireEvent(BaseAgent* agent);
private:
CreatureWeakPtr owner_;
std::vector<std::shared_ptr<BtEvent>> events_;
std::vector<std::tuple<CreatureWeakPtr, std::weak_ptr<EventHandlerPtr>>> handlers_;
};