diff options
author | Shauren <shauren.trinity@gmail.com> | 2022-07-18 22:35:54 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-07-18 22:35:54 +0200 |
commit | 195341c807fa98e76608fb9449979f6be8b5362e (patch) | |
tree | b12f4cbcd3fd345066c409df5e067a3b9c29ad6b /src/server/scripts/OutdoorPvP | |
parent | 1f853d068ff1b25ea51031d2e2f2a269d7998d47 (diff) |
Core/OutdoorPvP: Move remaining outdoorpvp spawns to db
Diffstat (limited to 'src/server/scripts/OutdoorPvP')
-rw-r--r-- | src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp | 60 | ||||
-rw-r--r-- | src/server/scripts/OutdoorPvP/OutdoorPvPHP.h | 7 | ||||
-rw-r--r-- | src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp | 47 | ||||
-rw-r--r-- | src/server/scripts/OutdoorPvP/OutdoorPvPTF.h | 3 |
4 files changed, 74 insertions, 43 deletions
diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp index d6cebc606dd..68bcef12d02 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp @@ -34,29 +34,18 @@ uint32 const HP_TowerArtKit_A[HP_TOWER_NUM] = { 65, 62, 67 }; uint32 const HP_TowerArtKit_H[HP_TOWER_NUM] = { 64, 61, 68 }; uint32 const HP_TowerArtKit_N[HP_TOWER_NUM] = { 66, 63, 69 }; -go_type const HPCapturePoints[HP_TOWER_NUM] = -{ - { 182175, 530, { -471.462f, 3451.09f, 34.6432f, 0.174533f }, { 0.0f, 0.0f, 0.087156f, 0.996195f } }, // 0 - Broken Hill - { 182174, 530, { -184.889f, 3476.93f, 38.2050f, -0.017453f }, { 0.0f, 0.0f, 0.008727f, -0.999962f } }, // 1 - Overlook - { 182173, 530, { -290.016f, 3702.42f, 56.6729f, 0.034907f }, { 0.0f, 0.0f, 0.017452f, 0.999848f } } // 2 - Stadium -}; - -go_type const HPTowerFlags[HP_TOWER_NUM] = -{ - { 183514, 530, { -467.078f, 3528.17f, 64.7121f, 3.14159f }, { 0.0f, 0.0f, 1.000000f, 0.000000f } }, // 0 broken hill - { 182525, 530, { -187.887f, 3459.38f, 60.0403f, -3.12414f }, { 0.0f, 0.0f, 0.999962f, -0.008727f } }, // 1 overlook - { 183515, 530, { -289.610f, 3696.83f, 75.9447f, 3.12414f }, { 0.0f, 0.0f, 0.999962f, 0.008727f } } // 2 stadium -}; - uint32 const HP_LANG_CAPTURE_A[HP_TOWER_NUM] = { TEXT_BROKEN_HILL_TAKEN_ALLIANCE, TEXT_OVERLOOK_TAKEN_ALLIANCE, TEXT_STADIUM_TAKEN_ALLIANCE }; uint32 const HP_LANG_CAPTURE_H[HP_TOWER_NUM] = { TEXT_BROKEN_HILL_TAKEN_HORDE, TEXT_OVERLOOK_TAKEN_HORDE, TEXT_STADIUM_TAKEN_HORDE }; -OPvPCapturePointHP::OPvPCapturePointHP(OutdoorPvP* pvp, OutdoorPvPHPTowerType type) : OPvPCapturePoint(pvp), m_TowerType(type) +OPvPCapturePointHP::OPvPCapturePointHP(OutdoorPvP* pvp, OutdoorPvPHPTowerType type, GameObject* go, ObjectGuid::LowType const& flagSpawnId) + : OPvPCapturePoint(pvp), m_TowerType(type), m_flagSpawnId(flagSpawnId) { - SetCapturePointData(HPCapturePoints[type].entry, HPCapturePoints[type].map, HPCapturePoints[type].pos, HPCapturePoints[type].rot); - AddObject(type, HPTowerFlags[type].entry, HPTowerFlags[type].map, HPTowerFlags[type].pos, HPTowerFlags[type].rot); + m_capturePointSpawnId = go->GetSpawnId(); + m_capturePoint = go; + SetCapturePointData(go->GetEntry()); } -OutdoorPvPHP::OutdoorPvPHP() + +OutdoorPvPHP::OutdoorPvPHP() : m_towerFlagSpawnIds() { m_TypeId = OUTDOOR_PVP_HP; m_AllianceTowersControlled = 0; @@ -73,13 +62,36 @@ bool OutdoorPvPHP::SetupOutdoorPvP() for (uint32 i = 0; i < OutdoorPvPHPBuffZonesNum; ++i) RegisterZone(OutdoorPvPHPBuffZones[i]); - AddCapturePoint(new OPvPCapturePointHP(this, HP_TOWER_BROKEN_HILL)); - - AddCapturePoint(new OPvPCapturePointHP(this, HP_TOWER_OVERLOOK)); + return true; +} - AddCapturePoint(new OPvPCapturePointHP(this, HP_TOWER_STADIUM)); +void OutdoorPvPHP::OnGameObjectCreate(GameObject* go) +{ + switch (go->GetEntry()) + { + case 182175: + AddCapturePoint(new OPvPCapturePointHP(this, HP_TOWER_BROKEN_HILL, go, m_towerFlagSpawnIds[HP_TOWER_BROKEN_HILL])); + break; + case 182174: + AddCapturePoint(new OPvPCapturePointHP(this, HP_TOWER_OVERLOOK, go, m_towerFlagSpawnIds[HP_TOWER_OVERLOOK])); + break; + case 182173: + AddCapturePoint(new OPvPCapturePointHP(this, HP_TOWER_STADIUM, go, m_towerFlagSpawnIds[HP_TOWER_STADIUM])); + break; + case 183514: + m_towerFlagSpawnIds[HP_TOWER_BROKEN_HILL] = go->GetSpawnId(); + break; + case 182525: + m_towerFlagSpawnIds[HP_TOWER_OVERLOOK] = go->GetSpawnId(); + break; + case 183515: + m_towerFlagSpawnIds[HP_TOWER_STADIUM] = go->GetSpawnId(); + break; + default: + break; + } - return true; + OutdoorPvP::OnGameObjectCreate(go); } void OutdoorPvPHP::HandlePlayerEnterZone(Player* player, uint32 zone) @@ -243,7 +255,7 @@ void OPvPCapturePointHP::ChangeState() for (auto itr = bounds.first; itr != bounds.second; ++itr) itr->second->SetGoArtKit(artkit); - bounds = map->GetGameObjectBySpawnIdStore().equal_range(m_Objects[m_TowerType]); + bounds = map->GetGameObjectBySpawnIdStore().equal_range(m_flagSpawnId); for (auto itr = bounds.first; itr != bounds.second; ++itr) itr->second->SetGoArtKit(artkit2); diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPHP.h b/src/server/scripts/OutdoorPvP/OutdoorPvPHP.h index 6ce163c9ebc..4c9ee6bc278 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPHP.h +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPHP.h @@ -19,6 +19,7 @@ #define OUTDOOR_PVP_HP_ #include "OutdoorPvP.h" +#include <array> enum DefenseMessages { @@ -58,12 +59,13 @@ enum OutdoorPvPHPWorldStates class OPvPCapturePointHP : public OPvPCapturePoint { public: - OPvPCapturePointHP(OutdoorPvP* pvp, OutdoorPvPHPTowerType type); + OPvPCapturePointHP(OutdoorPvP* pvp, OutdoorPvPHPTowerType type, GameObject* go, ObjectGuid::LowType const& flagSpawnId); void ChangeState() override; private: OutdoorPvPHPTowerType m_TowerType; + ObjectGuid::LowType const& m_flagSpawnId; }; class OutdoorPvPHP : public OutdoorPvP @@ -73,6 +75,8 @@ class OutdoorPvPHP : public OutdoorPvP bool SetupOutdoorPvP() override; + void OnGameObjectCreate(GameObject* go) override; + void HandlePlayerEnterZone(Player* player, uint32 zone) override; void HandlePlayerLeaveZone(Player* player, uint32 zone) override; @@ -88,6 +92,7 @@ class OutdoorPvPHP : public OutdoorPvP private: uint32 m_AllianceTowersControlled; // how many towers are controlled uint32 m_HordeTowersControlled; + std::array<ObjectGuid::LowType, HP_TOWER_NUM> m_towerFlagSpawnIds; }; #endif diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp index 48951be2d9c..4dba5934a48 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp @@ -45,15 +45,6 @@ int32 const TF_CAPTURE_BUFF = 33377; uint32 const TF_ALLY_QUEST = 11505; uint32 const TF_HORDE_QUEST = 11506; -go_type const TFCapturePoints[TF_TOWER_NUM] = -{ - { 183104, 530, { -3081.65f, 5335.03f, 17.1853f, -2.146750f }, { 0.0f, 0.0f, 0.878817f, -0.477159f } }, - { 183411, 530, { -2939.90f, 4788.73f, 18.9870f, 2.775070f }, { 0.0f, 0.0f, 0.983255f, 0.182236f } }, - { 183412, 530, { -3174.94f, 4440.97f, 16.2281f, 1.867500f }, { 0.0f, 0.0f, 0.803857f, 0.594823f } }, - { 183413, 530, { -3603.31f, 4529.15f, 20.9077f, 0.994838f }, { 0.0f, 0.0f, 0.477159f, 0.878817f } }, - { 183414, 530, { -3812.37f, 4899.30f, 17.7249f, 0.087266f }, { 0.0f, 0.0f, 0.043619f, 0.999048f } } -}; - struct tf_tower_world_state { int32 n; @@ -103,9 +94,11 @@ OutdoorPvPTF::OutdoorPvPTF() first_digit = 0; } -OPvPCapturePointTF::OPvPCapturePointTF(OutdoorPvP* pvp, OutdoorPvPTF_TowerType type) : OPvPCapturePoint(pvp), m_TowerType(type), m_TowerState(TF_TOWERSTATE_N) +OPvPCapturePointTF::OPvPCapturePointTF(OutdoorPvP* pvp, OutdoorPvPTF_TowerType type, GameObject* go) : OPvPCapturePoint(pvp), m_TowerType(type), m_TowerState(TF_TOWERSTATE_N) { - SetCapturePointData(TFCapturePoints[type].entry, TFCapturePoints[type].map, TFCapturePoints[type].pos, TFCapturePoints[type].rot); + m_capturePointSpawnId = go->GetSpawnId(); + m_capturePoint = go; + SetCapturePointData(go->GetEntry()); } void OutdoorPvPTF::SendRemoveWorldStates(Player* player) @@ -275,15 +268,35 @@ bool OutdoorPvPTF::SetupOutdoorPvP() for (uint8 i = 0; i < OutdoorPvPTFBuffZonesNum; ++i) RegisterZone(OutdoorPvPTFBuffZones[i]); - AddCapturePoint(new OPvPCapturePointTF(this, TF_TOWER_NW)); - AddCapturePoint(new OPvPCapturePointTF(this, TF_TOWER_N)); - AddCapturePoint(new OPvPCapturePointTF(this, TF_TOWER_NE)); - AddCapturePoint(new OPvPCapturePointTF(this, TF_TOWER_SE)); - AddCapturePoint(new OPvPCapturePointTF(this, TF_TOWER_S)); - return true; } +void OutdoorPvPTF::OnGameObjectCreate(GameObject* go) +{ + switch (go->GetEntry()) + { + case 183104: + AddCapturePoint(new OPvPCapturePointTF(this, TF_TOWER_NW, go)); + break; + case 183411: + AddCapturePoint(new OPvPCapturePointTF(this, TF_TOWER_N, go)); + break; + case 183412: + AddCapturePoint(new OPvPCapturePointTF(this, TF_TOWER_NE, go)); + break; + case 183413: + AddCapturePoint(new OPvPCapturePointTF(this, TF_TOWER_SE, go)); + break; + case 183414: + AddCapturePoint(new OPvPCapturePointTF(this, TF_TOWER_S, go)); + break; + default: + break; + } + + OutdoorPvP::OnGameObjectCreate(go); +} + bool OPvPCapturePointTF::Update(uint32 diff) { // can update even in locked state if gathers the controlling faction diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.h b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.h index 2aeb1c093e0..e7b7e13268c 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.h +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.h @@ -64,7 +64,7 @@ enum TFTowerStates class OPvPCapturePointTF : public OPvPCapturePoint { public: - OPvPCapturePointTF(OutdoorPvP* pvp, OutdoorPvPTF_TowerType type); + OPvPCapturePointTF(OutdoorPvP* pvp, OutdoorPvPTF_TowerType type, GameObject* go); bool Update(uint32 diff) override; void ChangeState() override; @@ -82,6 +82,7 @@ class OutdoorPvPTF : public OutdoorPvP OutdoorPvPTF(); bool SetupOutdoorPvP() override; + void OnGameObjectCreate(GameObject* go) override; void HandlePlayerEnterZone(Player* player, uint32 zone) override; void HandlePlayerLeaveZone(Player* player, uint32 zone) override; bool Update(uint32 diff) override; |