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

#include "OutdoorPvPTF.h"

Inheritance diagram for OPvPCapturePointTF:
OPvPCapturePoint

Public Member Functions

 OPvPCapturePointTF (OutdoorPvP *pvp, OutdoorPvPTF_TowerType type)
 
bool Update (uint32 diff) override
 
void ChangeState () override
 
void SendChangePhase () override
 
void FillInitialWorldStates (WorldPackets::WorldState::InitWorldStates &packet) override
 
bool HandlePlayerEnter (Player *player) override
 
void HandlePlayerLeave (Player *player) override
 
void ResetToTeamControlled (TeamId team)
 
void UpdateTowerState ()
 
- 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 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
 

Protected Attributes

OutdoorPvPTF_TowerType m_TowerType
 
uint32 m_TowerState
 
- 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
 

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 ()
 

Detailed Description

Constructor & Destructor Documentation

◆ OPvPCapturePointTF()

OPvPCapturePointTF::OPvPCapturePointTF ( OutdoorPvP pvp,
OutdoorPvPTF_TowerType  type 
)
52{
53 SetCapturePointData(TFCapturePoints[type].entry, TFCapturePoints[type].map, TFCapturePoints[type].x, TFCapturePoints[type].y, TFCapturePoints[type].z, TFCapturePoints[type].o, TFCapturePoints[type].rot0, TFCapturePoints[type].rot1, TFCapturePoints[type].rot2, TFCapturePoints[type].rot3);
54}
const go_type TFCapturePoints[TF_TOWER_NUM]
Definition OutdoorPvPTF.h:57
@ TF_TOWERSTATE_N
Definition OutdoorPvPTF.h:102
uint32 m_TowerState
Definition OutdoorPvPTF.h:130
OutdoorPvPTF_TowerType m_TowerType
Definition OutdoorPvPTF.h:129
Definition OutdoorPvP.h:91
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::SetCapturePointData(), and TFCapturePoints.

Member Function Documentation

◆ ChangeState()

void OPvPCapturePointTF::ChangeState ( )
overridevirtual

Implements OPvPCapturePoint.

398{
399 // if changing from controlling alliance to horde
401 {
402 if (uint32 alliance_towers = ((OutdoorPvPTF*)_pvp)->GetAllianceTowersControlled())
403 ((OutdoorPvPTF*)_pvp)->SetAllianceTowersControlled(--alliance_towers);
404 _pvp->GetMap()->SendZoneText(OutdoorPvPTFBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_TF_LOSE_A).c_str());
405 }
406 // if changing from controlling horde to alliance
408 {
409 if (uint32 horde_towers = ((OutdoorPvPTF*)_pvp)->GetHordeTowersControlled())
410 ((OutdoorPvPTF*)_pvp)->SetHordeTowersControlled(--horde_towers);
411 _pvp->GetMap()->SendZoneText(OutdoorPvPTFBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_TF_LOSE_H).c_str());
412 }
413
414 uint32 artkit = 21;
415
416 switch (_state)
417 {
419 {
421 artkit = 2;
422 uint32 alliance_towers = ((OutdoorPvPTF*)_pvp)->GetAllianceTowersControlled();
423 if (alliance_towers < TF_TOWER_NUM)
424 ((OutdoorPvPTF*)_pvp)->SetAllianceTowersControlled(++alliance_towers);
425
426 _pvp->GetMap()->SendZoneText(OutdoorPvPTFBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_TF_CAPTURE_A).c_str());
427
428 for (PlayerSet::iterator itr = _activePlayers[0].begin(); itr != _activePlayers[0].end(); ++itr)
429 if (Player* player = ObjectAccessor::FindPlayer(*itr))
430 player->AreaExploredOrEventHappens(TF_ALLY_QUEST);
431 break;
432 }
434 {
436 artkit = 1;
437 uint32 horde_towers = ((OutdoorPvPTF*)_pvp)->GetHordeTowersControlled();
438 if (horde_towers < TF_TOWER_NUM)
439 ((OutdoorPvPTF*)_pvp)->SetHordeTowersControlled(++horde_towers);
440
441 _pvp->GetMap()->SendZoneText(OutdoorPvPTFBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_TF_CAPTURE_H).c_str());
442
443 for (PlayerSet::iterator itr = _activePlayers[1].begin(); itr != _activePlayers[1].end(); ++itr)
444 if (Player* player = ObjectAccessor::FindPlayer(*itr))
445 player->AreaExploredOrEventHappens(TF_HORDE_QUEST);
446 break;
447 }
454 break;
455 }
456
457 auto bounds = sMapMgr->FindMap(MAP_OUTLAND, 0)->GetGameObjectBySpawnIdStore().equal_range(m_capturePointSpawnId);
458 for (auto itr = bounds.first; itr != bounds.second; ++itr)
459 itr->second->SetGoArtKit(artkit);
460
462}
@ MAP_OUTLAND
Definition AreaDefines.h:217
std::uint32_t uint32
Definition Define.h:107
@ LANG_OPVP_TF_CAPTURE_H
Definition Language.h:1248
@ LANG_OPVP_TF_CAPTURE_A
Definition Language.h:1249
@ LANG_OPVP_TF_LOSE_A
Definition Language.h:1251
@ LANG_OPVP_TF_LOSE_H
Definition Language.h:1250
#define sMapMgr
Definition MapMgr.h:220
#define sObjectMgr
Definition ObjectMgr.h:1686
const uint32 TF_HORDE_QUEST
Definition OutdoorPvPTF.h:45
const uint32 TF_ALLY_QUEST
Definition OutdoorPvPTF.h:44
@ TF_TOWERSTATE_H
Definition OutdoorPvPTF.h:103
@ TF_TOWERSTATE_A
Definition OutdoorPvPTF.h:104
const uint32 OutdoorPvPTFBuffZones[OutdoorPvPTFBuffZonesNum]
Definition OutdoorPvPTF.h:26
@ TF_TOWER_NUM
Definition OutdoorPvPTF.h:54
@ 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
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:2785
void UpdateTowerState()
Definition OutdoorPvPTF.cpp:179
ObjectiveStates _state
Definition OutdoorPvP.h:167
ObjectiveStates _oldState
Definition OutdoorPvP.h:166
ObjectGuid::LowType m_capturePointSpawnId
Definition OutdoorPvP.h:125
std::array< PlayerSet, 2 > _activePlayers
Definition OutdoorPvP.h:151
OutdoorPvP * _pvp
Definition OutdoorPvP.h:173
Definition OutdoorPvPTF.h:134
Map * GetMap() const
Definition OutdoorPvP.h:244
Definition Player.h:1066
Player * FindPlayer(ObjectGuid const guid)
Definition ObjectAccessor.cpp:245

References OPvPCapturePoint::_activePlayers, OPvPCapturePoint::_oldState, OPvPCapturePoint::_pvp, OPvPCapturePoint::_state, ObjectAccessor::FindPlayer(), OutdoorPvP::GetMap(), LANG_OPVP_TF_CAPTURE_A, LANG_OPVP_TF_CAPTURE_H, LANG_OPVP_TF_LOSE_A, LANG_OPVP_TF_LOSE_H, OPvPCapturePoint::m_capturePointSpawnId, m_TowerState, MAP_OUTLAND, OBJECTIVESTATE_ALLIANCE, OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE, OBJECTIVESTATE_HORDE, OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE, OBJECTIVESTATE_NEUTRAL, OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE, OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE, OutdoorPvPTFBuffZones, Map::SendZoneText(), sMapMgr, sObjectMgr, TF_ALLY_QUEST, TF_HORDE_QUEST, TF_TOWER_NUM, TF_TOWERSTATE_A, TF_TOWERSTATE_H, TF_TOWERSTATE_N, and UpdateTowerState().

Referenced by ResetToTeamControlled().

◆ FillInitialWorldStates()

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

Reimplemented from OPvPCapturePoint.

57{
58 packet.Worldstates.reserve(3);
59 packet.Worldstates.emplace_back(TFTowerWorldStates[m_TowerType].n, (m_TowerState & TF_TOWERSTATE_N) != 0 ? 1 : 0);
60 packet.Worldstates.emplace_back(TFTowerWorldStates[m_TowerType].h, (m_TowerState & TF_TOWERSTATE_H) != 0 ? 1 : 0);
61 packet.Worldstates.emplace_back(TFTowerWorldStates[m_TowerType].a, (m_TowerState & TF_TOWERSTATE_A) != 0 ? 1 : 0);
62}
const tf_tower_world_state TFTowerWorldStates[TF_TOWER_NUM]
Definition OutdoorPvPTF.h:73
std::vector< WorldStateInfo > Worldstates
Definition WorldStatePackets.h:46

References m_TowerState, m_TowerType, TF_TOWERSTATE_A, TF_TOWERSTATE_H, TF_TOWERSTATE_N, TFTowerWorldStates, and WorldPackets::WorldState::InitWorldStates::Worldstates.

◆ HandlePlayerEnter()

bool OPvPCapturePointTF::HandlePlayerEnter ( Player player)
overridevirtual

Reimplemented from OPvPCapturePoint.

187{
189 {
191 uint32 phase = (uint32)ceil((_value + _maxValue) / (2 * _maxValue) * 100.0f);
194 return true;
195 }
196 return false;
197}
@ WORLD_STATE_OPVP_TF_UI_TOWER_SLIDER_N
Definition WorldStateDefines.h:452
@ WORLD_STATE_OPVP_TF_UI_TOWER_SLIDER_DISPLAY
Definition WorldStateDefines.h:451
@ WORLD_STATE_OPVP_TF_UI_TOWER_SLIDER_POS
Definition WorldStateDefines.h:453
phase
Definition boss_skadi.cpp:99
uint32 _neutralValuePct
Definition OutdoorPvP.h:170
float _maxValue
Definition OutdoorPvP.h:154
virtual bool HandlePlayerEnter(Player *player)
Definition OutdoorPvP.cpp:35
float _value
Definition OutdoorPvP.h:161
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_TF_UI_TOWER_SLIDER_DISPLAY, WORLD_STATE_OPVP_TF_UI_TOWER_SLIDER_N, and WORLD_STATE_OPVP_TF_UI_TOWER_SLIDER_POS.

◆ HandlePlayerLeave()

void OPvPCapturePointTF::HandlePlayerLeave ( Player player)
overridevirtual

◆ ResetToTeamControlled()

void OPvPCapturePointTF::ResetToTeamControlled ( TeamId  team)
154{
155 switch (team)
156 {
157 case TEAM_HORDE:
161 break;
162 case TEAM_ALLIANCE:
166 break;
167 case TEAM_NEUTRAL:
171 break;
172 }
173
174 _value = 0.0f;
175 ChangeState();
177}
@ TEAM_NEUTRAL
Definition SharedDefines.h:773
@ TEAM_ALLIANCE
Definition SharedDefines.h:771
@ TEAM_HORDE
Definition SharedDefines.h:772
void SendChangePhase() override
Definition OutdoorPvPTF.cpp:464
void ChangeState() override
Definition OutdoorPvPTF.cpp:397
TeamId _team
Definition OutdoorPvP.h:163

References OPvPCapturePoint::_oldState, OPvPCapturePoint::_state, OPvPCapturePoint::_team, OPvPCapturePoint::_value, ChangeState(), OBJECTIVESTATE_ALLIANCE, OBJECTIVESTATE_HORDE, OBJECTIVESTATE_NEUTRAL, SendChangePhase(), TEAM_ALLIANCE, TEAM_HORDE, and TEAM_NEUTRAL.

◆ SendChangePhase()

void OPvPCapturePointTF::SendChangePhase ( )
overridevirtual

Reimplemented from OPvPCapturePoint.

465{
466 // send this too, sometimes the slider disappears, dunno why :(
468 // send these updates to only the ones in this objective
469 uint32 phase = (uint32)ceil((_value + _maxValue) / (2 * _maxValue) * 100.0f);
471 // send this too, sometimes it resets :S
473}
void SendUpdateWorldState(uint32 field, uint32 value)
Definition OutdoorPvP.cpp:466

References OPvPCapturePoint::_maxValue, OPvPCapturePoint::_neutralValuePct, OPvPCapturePoint::_value, OPvPCapturePoint::SendUpdateWorldState(), WORLD_STATE_OPVP_TF_UI_TOWER_SLIDER_DISPLAY, WORLD_STATE_OPVP_TF_UI_TOWER_SLIDER_N, and WORLD_STATE_OPVP_TF_UI_TOWER_SLIDER_POS.

Referenced by ResetToTeamControlled().

◆ Update()

bool OPvPCapturePointTF::Update ( uint32  diff)
overridevirtual

Reimplemented from OPvPCapturePoint.

388{
389 // can update even in locked state if gathers the controlling faction
390 bool canupdate = ((((OutdoorPvPTF*)_pvp)->GetAllianceTowersControlled() > 0) && _activePlayers[0].size() > _activePlayers[1].size()) ||
391 ((((OutdoorPvPTF*)_pvp)->GetHordeTowersControlled() > 0) && _activePlayers[0].size() < _activePlayers[1].size());
392 // if gathers the other faction, then only update if the pvp is unlocked
393 canupdate = canupdate || !((OutdoorPvPTF*)_pvp)->IsLocked();
394 return canupdate && OPvPCapturePoint::Update(diff);
395}
virtual bool Update(uint32 diff)
Definition OutdoorPvP.cpp:317

References OPvPCapturePoint::_activePlayers, OPvPCapturePoint::_pvp, and OPvPCapturePoint::Update().

◆ UpdateTowerState()

Member Data Documentation

◆ m_TowerState

uint32 OPvPCapturePointTF::m_TowerState
protected

◆ m_TowerType

OutdoorPvPTF_TowerType OPvPCapturePointTF::m_TowerType
protected

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