Files
Viano-Core/src/server/game/World/AdventureInteractionMgr.h
T

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