AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
OPvPCapturePointHP Class Reference

#include "OutdoorPvPHP.h"

Inheritance diagram for OPvPCapturePointHP:
OPvPCapturePoint

Public Member Functions

 OPvPCapturePointHP (OutdoorPvP *pvp, OutdoorPvPHPTowerType type)
 
void ChangeState () override
 
void SendChangePhase () override
 
void FillInitialWorldStates (WorldPackets::WorldState::InitWorldStates &packet) override
 
bool HandlePlayerEnter (Player *player) override
 
void HandlePlayerLeave (Player *player) override
 
- Public Member Functions inherited from OPvPCapturePoint
 OPvPCapturePoint (OutdoorPvP *pvp)
 
virtual ~OPvPCapturePoint ()=default
 
void SendUpdateWorldState (uint32 field, uint32 value)
 
void SendObjectiveComplete (uint32 id, ObjectGuid guid=ObjectGuid::Empty)
 
bool IsInsideObjective (Player *player) const
 
virtual bool HandleCustomSpell (Player *player, uint32 spellId, GameObject *go)
 
virtual int32 HandleOpenGo (Player *player, GameObject *go)
 
virtual bool Update (uint32 diff)
 
virtual void ChangeTeam (TeamId)
 
virtual bool HandleGossipOption (Player *player, Creature *creature, uint32 gossipId)
 
virtual bool CanTalkTo (Player *player, Creature *c, GossipMenuItems const &gso)
 
virtual bool HandleDropFlag (Player *player, uint32 spellId)
 
virtual void DeleteSpawns ()
 
void AddGO (uint32 type, ObjectGuid::LowType guid, uint32 entry=0)
 
void AddCre (uint32 type, ObjectGuid::LowType guid, uint32 entry=0)
 
bool SetCapturePointData (uint32 entry, uint32 map, float x, float y, float z, float o=0, float rotation0=0, float rotation1=0, float rotation2=0, float rotation3=0)
 
void SetSlider (float slider)
 
float GetSlider () const
 
float GetMaxValue () const
 
float GetMinValue () const
 

Private Attributes

OutdoorPvPHPTowerType m_TowerType
 

Additional Inherited Members

- Public Attributes inherited from OPvPCapturePoint
ObjectGuid::LowType m_capturePointSpawnId {}
 
GameObject_capturePoint {}
 
- Protected Member Functions inherited from OPvPCapturePoint
bool AddObject (uint32 type, uint32 entry, uint32 map, float x, float y, float z, float o, float rotation0, float rotation1, float rotation2, float rotation3)
 
bool AddCreature (uint32 type, uint32 entry, uint32 map, float x, float y, float z, float o, uint32 spawntimeDelay=0)
 
bool DelCreature (uint32 type)
 
bool DelObject (uint32 type)
 
bool DelCapturePoint ()
 
- Protected Attributes inherited from OPvPCapturePoint
std::array< PlayerSet, 2 > _activePlayers
 
float _maxValue {}
 
float _minValue {}
 
float _maxSpeed {}
 
float _value {}
 
TeamId _team { TEAM_NEUTRAL }
 
ObjectiveStates _oldState { OBJECTIVESTATE_NEUTRAL }
 
ObjectiveStates _state { OBJECTIVESTATE_NEUTRAL }
 
uint32 _neutralValuePct {}
 
OutdoorPvP_pvp {}
 
std::unordered_map< uint32, ObjectGuid::LowType_objects
 
std::unordered_map< uint32, ObjectGuid::LowType_creatures
 
std::unordered_map< ObjectGuid::LowType, uint32_objectTypes
 
std::unordered_map< ObjectGuid::LowType, uint32_creatureTypes
 

Detailed Description

Constructor & Destructor Documentation

◆ OPvPCapturePointHP()

OPvPCapturePointHP::OPvPCapturePointHP ( OutdoorPvP pvp,
OutdoorPvPHPTowerType  type 
)
38 : OPvPCapturePoint(pvp), m_TowerType(type)
39{
41 HPCapturePoints[type].map,
42 HPCapturePoints[type].x,
43 HPCapturePoints[type].y,
44 HPCapturePoints[type].z,
45 HPCapturePoints[type].o,
46 HPCapturePoints[type].rot0,
47 HPCapturePoints[type].rot1,
48 HPCapturePoints[type].rot2,
49 HPCapturePoints[type].rot3);
50 AddObject(type,
51 HPTowerFlags[type].entry,
52 HPTowerFlags[type].map,
53 HPTowerFlags[type].x,
54 HPTowerFlags[type].y,
55 HPTowerFlags[type].z,
56 HPTowerFlags[type].o,
57 HPTowerFlags[type].rot0,
58 HPTowerFlags[type].rot1,
59 HPTowerFlags[type].rot2,
60 HPTowerFlags[type].rot3);
61}
const go_type HPCapturePoints[HP_TOWER_NUM]
Definition OutdoorPvPHP.h:70
const go_type HPTowerFlags[HP_TOWER_NUM]
Definition OutdoorPvPHP.h:77
OutdoorPvPHPTowerType m_TowerType
Definition OutdoorPvPHP.h:100
Definition OutdoorPvP.h:91
bool AddObject(uint32 type, uint32 entry, uint32 map, float x, float y, float z, float o, float rotation0, float rotation1, float rotation2, float rotation3)
Definition OutdoorPvP.cpp:106
bool SetCapturePointData(uint32 entry, uint32 map, float x, float y, float z, float o=0, float rotation0=0, float rotation1=0, float rotation2=0, float rotation3=0)
Definition OutdoorPvP.cpp:128

References OPvPCapturePoint::AddObject(), HPCapturePoints, HPTowerFlags, and OPvPCapturePoint::SetCapturePointData().

Member Function Documentation

◆ ChangeState()

void OPvPCapturePointHP::ChangeState ( )
overridevirtual

Implements OPvPCapturePoint.

175{
176 uint32 field = 0;
177 switch (_oldState)
178 {
180 field = HP_MAP_N[m_TowerType];
181 break;
183 field = HP_MAP_A[m_TowerType];
184 if (uint32 alliance_towers = ((OutdoorPvPHP*)_pvp)->GetAllianceTowersControlled())
185 ((OutdoorPvPHP*)_pvp)->SetAllianceTowersControlled(--alliance_towers);
186 _pvp->GetMap()->SendZoneText(OutdoorPvPHPBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(HP_LANG_LOSE_A[m_TowerType]).c_str());
187 break;
189 field = HP_MAP_H[m_TowerType];
190 if (uint32 horde_towers = ((OutdoorPvPHP*)_pvp)->GetHordeTowersControlled())
191 ((OutdoorPvPHP*)_pvp)->SetHordeTowersControlled(--horde_towers);
192 _pvp->GetMap()->SendZoneText(OutdoorPvPHPBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(HP_LANG_LOSE_H[m_TowerType]).c_str());
193 break;
195 field = HP_MAP_N[m_TowerType];
196 break;
198 field = HP_MAP_N[m_TowerType];
199 break;
201 field = HP_MAP_A[m_TowerType];
202 break;
204 field = HP_MAP_H[m_TowerType];
205 break;
206 }
207
208 // send world state update
209 if (field)
210 {
211 _pvp->SendUpdateWorldState(field, 0);
212 field = 0;
213 }
214 uint32 artkit = 21;
216 switch (_state)
217 {
219 field = HP_MAP_N[m_TowerType];
220 break;
222 {
223 field = HP_MAP_A[m_TowerType];
224 artkit = 2;
225 artkit2 = HP_TowerArtKit_A[m_TowerType];
226 uint32 alliance_towers = ((OutdoorPvPHP*)_pvp)->GetAllianceTowersControlled();
227 if (alliance_towers < 3)
228 ((OutdoorPvPHP*)_pvp)->SetAllianceTowersControlled(++alliance_towers);
229 _pvp->GetMap()->SendZoneText(OutdoorPvPHPBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(HP_LANG_CAPTURE_A[m_TowerType]).c_str());
230 break;
231 }
233 {
234 field = HP_MAP_H[m_TowerType];
235 artkit = 1;
236 artkit2 = HP_TowerArtKit_H[m_TowerType];
237 uint32 horde_towers = ((OutdoorPvPHP*)_pvp)->GetHordeTowersControlled();
238 if (horde_towers < 3)
239 ((OutdoorPvPHP*)_pvp)->SetHordeTowersControlled(++horde_towers);
240 _pvp->GetMap()->SendZoneText(OutdoorPvPHPBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(HP_LANG_CAPTURE_H[m_TowerType]).c_str());
241 break;
242 }
247 field = HP_MAP_N[m_TowerType];
248 break;
249 }
250
251 Map* map = sMapMgr->FindMap(MAP_OUTLAND, 0);
252 auto bounds = map->GetGameObjectBySpawnIdStore().equal_range(m_capturePointSpawnId);
253 for (auto itr = bounds.first; itr != bounds.second; ++itr)
254 itr->second->SetGoArtKit(artkit);
255
256 bounds = map->GetGameObjectBySpawnIdStore().equal_range(_objects[m_TowerType]);
257 for (auto itr = bounds.first; itr != bounds.second; ++itr)
258 itr->second->SetGoArtKit(artkit2);
259
260 // send world state update
261 if (field)
262 _pvp->SendUpdateWorldState(field, 1);
263
264 // complete quest objective
267}
@ MAP_OUTLAND
Definition AreaDefines.h:217
std::uint32_t uint32
Definition Define.h:107
#define sMapMgr
Definition MapMgr.h:220
#define sObjectMgr
Definition ObjectMgr.h:1712
const uint32 HP_LANG_LOSE_A[HP_TOWER_NUM]
Definition OutdoorPvPHP.cpp:29
const uint32 HP_LANG_CAPTURE_H[HP_TOWER_NUM]
Definition OutdoorPvPHP.cpp:35
const uint32 HP_LANG_CAPTURE_A[HP_TOWER_NUM]
Definition OutdoorPvPHP.cpp:33
const uint32 HP_LANG_LOSE_H[HP_TOWER_NUM]
Definition OutdoorPvPHP.cpp:31
const uint32 HP_CREDITMARKER[HP_TOWER_NUM]
Definition OutdoorPvPHP.h:52
const uint32 HP_TowerArtKit_H[HP_TOWER_NUM]
Definition OutdoorPvPHP.h:66
const uint32 OutdoorPvPHPBuffZones[OutdoorPvPHPBuffZonesNum]
Definition OutdoorPvPHP.h:26
const uint32 HP_MAP_N[HP_TOWER_NUM]
Definition OutdoorPvPHP.h:58
const uint32 HP_MAP_H[HP_TOWER_NUM]
Definition OutdoorPvPHP.h:62
const uint32 HP_MAP_A[HP_TOWER_NUM]
Definition OutdoorPvPHP.h:60
const uint32 HP_TowerArtKit_A[HP_TOWER_NUM]
Definition OutdoorPvPHP.h:64
const uint32 HP_TowerArtKit_N[HP_TOWER_NUM]
Definition OutdoorPvPHP.h:68
@ OBJECTIVESTATE_HORDE
Definition OutdoorPvP.h:45
@ OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE
Definition OutdoorPvP.h:47
@ OBJECTIVESTATE_ALLIANCE
Definition OutdoorPvP.h:44
@ OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE
Definition OutdoorPvP.h:46
@ OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE
Definition OutdoorPvP.h:49
@ OBJECTIVESTATE_NEUTRAL
Definition OutdoorPvP.h:43
@ OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE
Definition OutdoorPvP.h:48
Definition Map.h:164
void SendZoneText(uint32 zoneId, char const *text, WorldSession const *self=nullptr, TeamId teamId=TEAM_NEUTRAL) const
Send a System Message to all players in the zone (except self if mentioned)
Definition Map.cpp:2764
GameObjectBySpawnIdContainer & GetGameObjectBySpawnIdStore()
Definition Map.h:355
ObjectiveStates _state
Definition OutdoorPvP.h:169
ObjectiveStates _oldState
Definition OutdoorPvP.h:168
ObjectGuid::LowType m_capturePointSpawnId
Definition OutdoorPvP.h:125
OutdoorPvP * _pvp
Definition OutdoorPvP.h:175
std::unordered_map< uint32, ObjectGuid::LowType > _objects
Definition OutdoorPvP.h:180
void SendObjectiveComplete(uint32 id, ObjectGuid guid=ObjectGuid::Empty)
Definition OutdoorPvP.cpp:477
Definition OutdoorPvPHP.h:104
Map * GetMap() const
Definition OutdoorPvP.h:246
void SendUpdateWorldState(uint32 field, uint32 value)
Definition OutdoorPvP.cpp:457

References OPvPCapturePoint::_objects, OPvPCapturePoint::_oldState, OPvPCapturePoint::_pvp, OPvPCapturePoint::_state, Map::GetGameObjectBySpawnIdStore(), OutdoorPvP::GetMap(), HP_CREDITMARKER, HP_LANG_CAPTURE_A, HP_LANG_CAPTURE_H, HP_LANG_LOSE_A, HP_LANG_LOSE_H, HP_MAP_A, HP_MAP_H, HP_MAP_N, HP_TowerArtKit_A, HP_TowerArtKit_H, HP_TowerArtKit_N, OPvPCapturePoint::m_capturePointSpawnId, m_TowerType, MAP_OUTLAND, OBJECTIVESTATE_ALLIANCE, OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE, OBJECTIVESTATE_HORDE, OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE, OBJECTIVESTATE_NEUTRAL, OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE, OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE, OutdoorPvPHPBuffZones, OPvPCapturePoint::SendObjectiveComplete(), OutdoorPvP::SendUpdateWorldState(), Map::SendZoneText(), sMapMgr, and sObjectMgr.

◆ FillInitialWorldStates()

void OPvPCapturePointHP::FillInitialWorldStates ( WorldPackets::WorldState::InitWorldStates packet)
overridevirtual

Reimplemented from OPvPCapturePoint.

280{
281 switch (_state)
282 {
285 packet.Worldstates.reserve(3);
286 packet.Worldstates.emplace_back(HP_MAP_N[m_TowerType], 0);
287 packet.Worldstates.emplace_back(HP_MAP_A[m_TowerType], 1);
288 packet.Worldstates.emplace_back(HP_MAP_H[m_TowerType], 0);
289 break;
292 packet.Worldstates.reserve(3);
293 packet.Worldstates.emplace_back(HP_MAP_N[m_TowerType], 0);
294 packet.Worldstates.emplace_back(HP_MAP_A[m_TowerType], 0);
295 packet.Worldstates.emplace_back(HP_MAP_H[m_TowerType], 1);
296 break;
300 default:
301 packet.Worldstates.reserve(3);
302 packet.Worldstates.emplace_back(HP_MAP_N[m_TowerType], 1);
303 packet.Worldstates.emplace_back(HP_MAP_A[m_TowerType], 0);
304 packet.Worldstates.emplace_back(HP_MAP_H[m_TowerType], 0);
305 break;
306 }
307}
std::vector< WorldStateInfo > Worldstates
Definition WorldStatePackets.h:46

References OPvPCapturePoint::_state, HP_MAP_A, HP_MAP_H, HP_MAP_N, m_TowerType, OBJECTIVESTATE_ALLIANCE, OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE, OBJECTIVESTATE_HORDE, OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE, OBJECTIVESTATE_NEUTRAL, OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE, OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE, and WorldPackets::WorldState::InitWorldStates::Worldstates.

◆ HandlePlayerEnter()

bool OPvPCapturePointHP::HandlePlayerEnter ( Player player)
overridevirtual

Reimplemented from OPvPCapturePoint.

310{
312 {
314 uint32 phase = (uint32)ceil((_value + _maxValue) / (2 * _maxValue) * 100.0f);
317 return true;
318 }
319 return false;
320}
@ WORLD_STATE_OPVP_HP_UI_TOWER_SLIDER_N
Definition WorldStateDefines.h:403
@ WORLD_STATE_OPVP_HP_UI_TOWER_SLIDER_DISPLAY
Definition WorldStateDefines.h:401
@ WORLD_STATE_OPVP_HP_UI_TOWER_SLIDER_POS
Definition WorldStateDefines.h:402
uint32 _neutralValuePct
Definition OutdoorPvP.h:172
float _maxValue
Definition OutdoorPvP.h:156
virtual bool HandlePlayerEnter(Player *player)
Definition OutdoorPvP.cpp:35
float _value
Definition OutdoorPvP.h:163
void SendUpdateWorldState(uint32 variable, uint32 value) const
Definition PlayerUpdates.cpp:2235

References OPvPCapturePoint::_maxValue, OPvPCapturePoint::_neutralValuePct, OPvPCapturePoint::_value, OPvPCapturePoint::HandlePlayerEnter(), Player::SendUpdateWorldState(), WORLD_STATE_OPVP_HP_UI_TOWER_SLIDER_DISPLAY, WORLD_STATE_OPVP_HP_UI_TOWER_SLIDER_N, and WORLD_STATE_OPVP_HP_UI_TOWER_SLIDER_POS.

◆ HandlePlayerLeave()

void OPvPCapturePointHP::HandlePlayerLeave ( Player player)
overridevirtual

◆ SendChangePhase()

void OPvPCapturePointHP::SendChangePhase ( )
overridevirtual

Reimplemented from OPvPCapturePoint.

270{
272 // send these updates to only the ones in this objective
273 uint32 phase = (uint32)ceil((_value + _maxValue) / (2 * _maxValue) * 100.0f);
275 // send this too, sometimes the slider disappears, dunno why :(
277}
void SendUpdateWorldState(uint32 field, uint32 value)
Definition OutdoorPvP.cpp:466

References OPvPCapturePoint::_maxValue, OPvPCapturePoint::_neutralValuePct, OPvPCapturePoint::_value, OPvPCapturePoint::SendUpdateWorldState(), WORLD_STATE_OPVP_HP_UI_TOWER_SLIDER_DISPLAY, WORLD_STATE_OPVP_HP_UI_TOWER_SLIDER_N, and WORLD_STATE_OPVP_HP_UI_TOWER_SLIDER_POS.

Member Data Documentation

◆ m_TowerType

OutdoorPvPHPTowerType OPvPCapturePointHP::m_TowerType
private

The documentation for this class was generated from the following files: