Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
OutdoorPvPMgr.h
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#ifndef OUTDOOR_PVP_MGR_H_
7#define OUTDOOR_PVP_MGR_H_
8
9#define OUTDOORPVP_OBJECTIVE_UPDATE_INTERVAL 1000
10
11#include "OutdoorPvP.h"
12#include "Platform/Singleton.h"
13
14class Player;
15class GameObject;
16class Creature;
17class ZoneScript;
18struct GossipMenuItems;
19
25
26// class to handle player enter / leave / areatrigger / GO use events
28{
29 friend class Skyfire::Singleton<OutdoorPvPMgr, Skyfire::NullMutex>;
30
31private:
34
35public:
36 // create outdoor pvp events
37 void InitOutdoorPvP();
38
39 // cleanup
40 void Die();
41
42 // called when a player enters an outdoor pvp area
43 void HandlePlayerEnterZone(Player* player, uint32 areaflag);
44
45 // called when player leaves an outdoor pvp area
46 void HandlePlayerLeaveZone(Player* player, uint32 areaflag);
47
48 // called when player resurrects
49 void HandlePlayerResurrects(Player* player, uint32 areaflag);
50
51 // return assigned outdoor pvp
53
54 // handle custom (non-exist in dbc) spell if registered
55 bool HandleCustomSpell(Player* player, uint32 spellId, GameObject* go);
56
57 // handle custom go if registered
58 bool HandleOpenGo(Player* player, uint64 guid);
59
61
62 void AddZone(uint32 zoneid, OutdoorPvP* handle);
63
64 void Update(uint32 diff);
65
66 void HandleGossipOption(Player* player, uint64 guid, uint32 gossipid);
67
68 bool CanTalkTo(Player* player, Creature* creature, GossipMenuItems const& gso);
69
70 void HandleDropFlag(Player* player, uint32 spellId);
71
72private:
73 typedef std::vector<OutdoorPvP*> OutdoorPvPSet;
74 typedef std::map<uint32 /* zoneid */, OutdoorPvP*> OutdoorPvPMap;
75 typedef std::map<OutdoorPvPTypes, OutdoorPvPData*> OutdoorPvPDataMap;
76
77 // contains all initiated outdoor pvp events
78 // used when initing / cleaning up
80
81 // maps the zone ids to an outdoor pvp event
82 // used in player event handling
84
85 // Holds the outdoor PvP templates
87
88 // update interval
90};
91
92#define sOutdoorPvPMgr Skyfire::Singleton<OutdoorPvPMgr, Skyfire::NullMutex>::instance()
93
94#endif /*OUTDOOR_PVP_MGR_H_*/
std::uint32_t uint32
Definition Define.h:77
std::uint64_t uint64
Definition Define.h:76
OutdoorPvPTypes
Definition OutdoorPvP.h:17
bool HandleCustomSpell(Player *player, uint32 spellId, GameObject *go)
void HandleGossipOption(Player *player, uint64 guid, uint32 gossipid)
std::vector< OutdoorPvP * > OutdoorPvPSet
OutdoorPvPMap m_OutdoorPvPMap
ZoneScript * GetZoneScript(uint32 zoneId)
bool HandleOpenGo(Player *player, uint64 guid)
void AddZone(uint32 zoneid, OutdoorPvP *handle)
void HandlePlayerLeaveZone(Player *player, uint32 areaflag)
std::map< OutdoorPvPTypes, OutdoorPvPData * > OutdoorPvPDataMap
OutdoorPvPSet m_OutdoorPvPSet
bool CanTalkTo(Player *player, Creature *creature, GossipMenuItems const &gso)
void Update(uint32 diff)
void HandleDropFlag(Player *player, uint32 spellId)
OutdoorPvP * GetOutdoorPvPToZoneId(uint32 zoneid)
void HandlePlayerEnterZone(Player *player, uint32 areaflag)
std::map< uint32, OutdoorPvP * > OutdoorPvPMap
uint32 m_UpdateTimer
void HandlePlayerResurrects(Player *player, uint32 areaflag)
OutdoorPvPDataMap m_OutdoorPvPDatas
OutdoorPvPTypes TypeId