game2006/server/gameserver/btcontext.h
aozhiwei 66a9a3b210 1
2023-06-23 20:00:32 +08:00

23 lines
548 B
C++

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