24 lines
658 B
C++
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_;
|
|
|
|
};
|