42 lines
1.4 KiB
C++
42 lines
1.4 KiB
C++
#ifndef VCORE_ADVENTURE_INTERACTION_MGR_H
|
|
#define VCORE_ADVENTURE_INTERACTION_MGR_H
|
|
#include "Common.h"
|
|
#include "ObjectGuid.h"
|
|
#include "Position.h"
|
|
#include <ctime>
|
|
#include <string>
|
|
#include <unordered_map>
|
|
class Player;
|
|
class ChatHandler;
|
|
class TC_GAME_API AdventureInteractionMgr
|
|
{
|
|
public:
|
|
static AdventureInteractionMgr* instance();
|
|
bool Update(Player* player,uint32 diff);
|
|
void Emote(Player* player,Player* source,uint32 emote);
|
|
void Offline(Player* player);
|
|
void CombatHelp(Player* player,ObjectGuid helper);
|
|
void Report(ChatHandler* handler,Player* player) const;
|
|
private:
|
|
struct Record
|
|
{
|
|
uint32 Timer=0;
|
|
ObjectGuid Leader,Invite,Partner,Selection,Helper;
|
|
time_t NextRoute=0,NextEncounter=0;
|
|
Position LeaderPosition;
|
|
uint32 LeaderMap=0;
|
|
time_t InviteAt=0,LastActivity=0,AfkSince=0,ReplyAt=0,SceneUntil=0,NextSocial=0;
|
|
uint32 Reply=0;
|
|
bool Grouped=false;
|
|
std::string Schedule;
|
|
std::unordered_map<ObjectGuid,time_t> Encounters;
|
|
};
|
|
bool Visible(Player* player,Player* other,float distance) const;
|
|
void Reply(Player* player,Player* other,uint32 emote);
|
|
void Leave(Player* player,Record& record,char const* reason);
|
|
void PartySay(Player* player,char const* german,char const* english);
|
|
std::unordered_map<uint32,Record> _records;
|
|
};
|
|
#define sAdventureInteractionMgr AdventureInteractionMgr::instance()
|
|
#endif
|