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 (WorldPacket &data) 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 ()
 
virtual void FillInitialWorldStates (WorldPacket &)
 
void SendUpdateWorldState (uint32 field, uint32 value)
 
void SendObjectiveComplete (uint32 id, ObjectGuid guid=ObjectGuid::Empty)
 
virtual bool HandlePlayerEnter (Player *player)
 
virtual void HandlePlayerLeave (Player *player)
 
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 ChangeState ()=0
 
virtual void ChangeTeam (TeamId)
 
virtual void SendChangePhase ()
 
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 ()
 

Protected Attributes

OutdoorPvPTF_TowerType m_TowerType
 
uint32 m_TowerState
 
- Protected Attributes inherited from OPvPCapturePoint
PlayerSet m_activePlayers [2]
 
float m_maxValue
 
float m_minValue
 
float m_maxSpeed
 
float m_value
 
TeamId m_team
 
ObjectiveStates m_OldState
 
ObjectiveStates m_State
 
uint32 m_neutralValuePct
 
OutdoorPvPm_PvP
 
std::map< uint32, ObjectGuid::LowTypem_Objects
 
std::map< uint32, ObjectGuid::LowTypem_Creatures
 
std::map< ObjectGuid::LowType, uint32m_ObjectTypes
 
std::map< ObjectGuid::LowType, uint32m_CreatureTypes
 

Additional Inherited Members

- Public Attributes inherited from OPvPCapturePoint
ObjectGuid::LowType m_capturePointSpawnId
 
GameObjectm_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 
)
48{
49 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);
50}
const go_type TFCapturePoints[TF_TOWER_NUM]
Definition: OutdoorPvPTF.h:56
@ TF_TOWERSTATE_N
Definition: OutdoorPvPTF.h:119
Definition: OutdoorPvP.h:89
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:115
uint32 m_TowerState
Definition: OutdoorPvPTF.h:148
OutdoorPvPTF_TowerType m_TowerType
Definition: OutdoorPvPTF.h:146

References OPvPCapturePoint::SetCapturePointData(), and TFCapturePoints.

Member Function Documentation

◆ ChangeState()

void OPvPCapturePointTF::ChangeState ( )
overridevirtual

Implements OPvPCapturePoint.

393{
394 // if changing from controlling alliance to horde
396 {
397 if (uint32 alliance_towers = ((OutdoorPvPTF*)m_PvP)->GetAllianceTowersControlled())
398 ((OutdoorPvPTF*)m_PvP)->SetAllianceTowersControlled(--alliance_towers);
399 sWorld->SendZoneText(OutdoorPvPTFBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_TF_LOSE_A));
400 }
401 // if changing from controlling horde to alliance
403 {
404 if (uint32 horde_towers = ((OutdoorPvPTF*)m_PvP)->GetHordeTowersControlled())
405 ((OutdoorPvPTF*)m_PvP)->SetHordeTowersControlled(--horde_towers);
406 sWorld->SendZoneText(OutdoorPvPTFBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_TF_LOSE_H));
407 }
408
409 uint32 artkit = 21;
410
411 switch (m_State)
412 {
414 {
416 artkit = 2;
417 uint32 alliance_towers = ((OutdoorPvPTF*)m_PvP)->GetAllianceTowersControlled();
418 if (alliance_towers < TF_TOWER_NUM)
419 ((OutdoorPvPTF*)m_PvP)->SetAllianceTowersControlled(++alliance_towers);
420
421 sWorld->SendZoneText(OutdoorPvPTFBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_TF_CAPTURE_A));
422
423 for (PlayerSet::iterator itr = m_activePlayers[0].begin(); itr != m_activePlayers[0].end(); ++itr)
424 if (Player* player = ObjectAccessor::FindPlayer(*itr))
425 player->AreaExploredOrEventHappens(TF_ALLY_QUEST);
426 break;
427 }
429 {
431 artkit = 1;
432 uint32 horde_towers = ((OutdoorPvPTF*)m_PvP)->GetHordeTowersControlled();
433 if (horde_towers < TF_TOWER_NUM)
434 ((OutdoorPvPTF*)m_PvP)->SetHordeTowersControlled(++horde_towers);
435
436 sWorld->SendZoneText(OutdoorPvPTFBuffZones[0], sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_TF_CAPTURE_H));
437
438 for (PlayerSet::iterator itr = m_activePlayers[1].begin(); itr != m_activePlayers[1].end(); ++itr)
439 if (Player* player = ObjectAccessor::FindPlayer(*itr))
440 player->AreaExploredOrEventHappens(TF_HORDE_QUEST);
441 break;
442 }
449 break;
450 }
451
452 auto bounds = sMapMgr->FindMap(530, 0)->GetGameObjectBySpawnIdStore().equal_range(m_capturePointSpawnId);
453 for (auto itr = bounds.first; itr != bounds.second; ++itr)
454 itr->second->SetGoArtKit(artkit);
455
457}
std::uint32_t uint32
Definition: Define.h:108
#define sObjectMgr
Definition: ObjectMgr.h:1640
#define sMapMgr
Definition: MapMgr.h:221
@ LANG_OPVP_TF_CAPTURE_H
Definition: Language.h:1234
@ LANG_OPVP_TF_CAPTURE_A
Definition: Language.h:1235
@ LANG_OPVP_TF_LOSE_A
Definition: Language.h:1237
@ LANG_OPVP_TF_LOSE_H
Definition: Language.h:1236
@ OBJECTIVESTATE_HORDE
Definition: OutdoorPvP.h:44
@ OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE
Definition: OutdoorPvP.h:46
@ OBJECTIVESTATE_ALLIANCE
Definition: OutdoorPvP.h:43
@ OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE
Definition: OutdoorPvP.h:45
@ OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE
Definition: OutdoorPvP.h:48
@ OBJECTIVESTATE_NEUTRAL
Definition: OutdoorPvP.h:42
@ OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE
Definition: OutdoorPvP.h:47
const uint32 TF_HORDE_QUEST
Definition: OutdoorPvPTF.h:44
const uint32 TF_ALLY_QUEST
Definition: OutdoorPvPTF.h:43
@ TF_TOWERSTATE_H
Definition: OutdoorPvPTF.h:120
@ TF_TOWERSTATE_A
Definition: OutdoorPvPTF.h:121
const uint32 OutdoorPvPTFBuffZones[OutdoorPvPTFBuffZonesNum]
Definition: OutdoorPvPTF.h:25
@ TF_TOWER_NUM
Definition: OutdoorPvPTF.h:53
#define sWorld
Definition: World.h:451
Player * FindPlayer(ObjectGuid const guid)
Definition: ObjectAccessor.cpp:250
Definition: Player.h:1046
ObjectiveStates m_OldState
Definition: OutdoorPvP.h:178
OutdoorPvP * m_PvP
Definition: OutdoorPvP.h:185
ObjectiveStates m_State
Definition: OutdoorPvP.h:179
PlayerSet m_activePlayers[2]
Definition: OutdoorPvP.h:163
ObjectGuid::LowType m_capturePointSpawnId
Definition: OutdoorPvP.h:131
void UpdateTowerState()
Definition: OutdoorPvPTF.cpp:174
Definition: OutdoorPvPTF.h:152

References ObjectAccessor::FindPlayer(), LANG_OPVP_TF_CAPTURE_A, LANG_OPVP_TF_CAPTURE_H, LANG_OPVP_TF_LOSE_A, LANG_OPVP_TF_LOSE_H, OPvPCapturePoint::m_activePlayers, OPvPCapturePoint::m_capturePointSpawnId, OPvPCapturePoint::m_OldState, OPvPCapturePoint::m_PvP, OPvPCapturePoint::m_State, m_TowerState, OBJECTIVESTATE_ALLIANCE, OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE, OBJECTIVESTATE_HORDE, OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE, OBJECTIVESTATE_NEUTRAL, OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE, OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE, OutdoorPvPTFBuffZones, sMapMgr, sObjectMgr, sWorld, 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 ( WorldPacket data)
overridevirtual

Reimplemented from OPvPCapturePoint.

53{
57}
const tf_tower_world_state TFTowerWorldStates[TF_TOWER_NUM]
Definition: OutdoorPvPTF.h:72

References m_TowerState, m_TowerType, TF_TOWERSTATE_A, TF_TOWERSTATE_H, TF_TOWERSTATE_N, and TFTowerWorldStates.

◆ HandlePlayerEnter()

bool OPvPCapturePointTF::HandlePlayerEnter ( Player player)
overridevirtual

Reimplemented from OPvPCapturePoint.

182{
184 {
186 uint32 phase = (uint32)ceil((m_value + m_maxValue) / (2 * m_maxValue) * 100.0f);
189 return true;
190 }
191 return false;
192}
phase
Definition: boss_skadi.cpp:102
@ TF_UI_TOWER_SLIDER_DISPLAY
Definition: OutdoorPvPTF.h:103
@ TF_UI_TOWER_SLIDER_POS
Definition: OutdoorPvPTF.h:101
@ TF_UI_TOWER_SLIDER_N
Definition: OutdoorPvPTF.h:102
void SendUpdateWorldState(uint32 variable, uint32 value) const
Definition: PlayerUpdates.cpp:2194
float m_value
Definition: OutdoorPvP.h:173
uint32 m_neutralValuePct
Definition: OutdoorPvP.h:182
float m_maxValue
Definition: OutdoorPvP.h:166
virtual bool HandlePlayerEnter(Player *player)
Definition: OutdoorPvP.cpp:36

References OPvPCapturePoint::HandlePlayerEnter(), OPvPCapturePoint::m_maxValue, OPvPCapturePoint::m_neutralValuePct, OPvPCapturePoint::m_value, Player::SendUpdateWorldState(), TF_UI_TOWER_SLIDER_DISPLAY, TF_UI_TOWER_SLIDER_N, and TF_UI_TOWER_SLIDER_POS.

◆ HandlePlayerLeave()

void OPvPCapturePointTF::HandlePlayerLeave ( Player player)
overridevirtual

Reimplemented from OPvPCapturePoint.

195{
198}
virtual void HandlePlayerLeave(Player *player)
Definition: OutdoorPvP.cpp:47

References OPvPCapturePoint::HandlePlayerLeave(), Player::SendUpdateWorldState(), and TF_UI_TOWER_SLIDER_DISPLAY.

◆ ResetToTeamControlled()

void OPvPCapturePointTF::ResetToTeamControlled ( TeamId  team)
149{
150 switch (team)
151 {
152 case TEAM_HORDE:
156 break;
157 case TEAM_ALLIANCE:
161 break;
162 case TEAM_NEUTRAL:
166 break;
167 }
168
169 m_value = 0.0f;
170 ChangeState();
172}
@ TEAM_NEUTRAL
Definition: SharedDefines.h:734
@ TEAM_ALLIANCE
Definition: SharedDefines.h:732
@ TEAM_HORDE
Definition: SharedDefines.h:733
TeamId m_team
Definition: OutdoorPvP.h:175
void SendChangePhase() override
Definition: OutdoorPvPTF.cpp:459
void ChangeState() override
Definition: OutdoorPvPTF.cpp:392

References ChangeState(), OPvPCapturePoint::m_OldState, OPvPCapturePoint::m_State, OPvPCapturePoint::m_team, OPvPCapturePoint::m_value, OBJECTIVESTATE_ALLIANCE, OBJECTIVESTATE_HORDE, OBJECTIVESTATE_NEUTRAL, SendChangePhase(), TEAM_ALLIANCE, TEAM_HORDE, and TEAM_NEUTRAL.

◆ SendChangePhase()

void OPvPCapturePointTF::SendChangePhase ( )
overridevirtual

Reimplemented from OPvPCapturePoint.

460{
461 // send this too, sometimes the slider disappears, dunno why :(
463 // send these updates to only the ones in this objective
464 uint32 phase = (uint32)ceil((m_value + m_maxValue) / (2 * m_maxValue) * 100.0f);
466 // send this too, sometimes it resets :S
468}
void SendUpdateWorldState(uint32 field, uint32 value)
Definition: OutdoorPvP.cpp:420

References OPvPCapturePoint::m_maxValue, OPvPCapturePoint::m_neutralValuePct, OPvPCapturePoint::m_value, OPvPCapturePoint::SendUpdateWorldState(), TF_UI_TOWER_SLIDER_DISPLAY, TF_UI_TOWER_SLIDER_N, and TF_UI_TOWER_SLIDER_POS.

Referenced by ResetToTeamControlled().

◆ Update()

bool OPvPCapturePointTF::Update ( uint32  diff)
overridevirtual

Reimplemented from OPvPCapturePoint.

383{
384 // can update even in locked state if gathers the controlling faction
385 bool canupdate = ((((OutdoorPvPTF*)m_PvP)->GetAllianceTowersControlled() > 0) && m_activePlayers[0].size() > m_activePlayers[1].size()) ||
386 ((((OutdoorPvPTF*)m_PvP)->GetHordeTowersControlled() > 0) && m_activePlayers[0].size() < m_activePlayers[1].size());
387 // if gathers the other faction, then only update if the pvp is unlocked
388 canupdate = canupdate || !((OutdoorPvPTF*)m_PvP)->IsLocked();
389 return canupdate && OPvPCapturePoint::Update(diff);
390}
virtual bool Update(uint32 diff)
Definition: OutdoorPvP.cpp:287

References OPvPCapturePoint::m_activePlayers, OPvPCapturePoint::m_PvP, and OPvPCapturePoint::Update().

◆ UpdateTowerState()

Member Data Documentation

◆ m_TowerState

uint32 OPvPCapturePointTF::m_TowerState
protected

◆ m_TowerType

OutdoorPvPTF_TowerType OPvPCapturePointTF::m_TowerType
protected