diff options
author | Shauren <shauren.trinity@gmail.com> | 2022-07-19 23:18:19 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-07-19 23:18:19 +0200 |
commit | 073a036d84365dae60a70064eb67e68f0447bd72 (patch) | |
tree | b9c74a852d8135c26e3d952e26ade11155c65f29 /src/server/scripts/Battlefield | |
parent | 83b32667940844a257059965711284c9ab38ce44 (diff) |
Core/Battlefields: Refactor Battlefield creation to be linked to host map creation instead of having globally accessible objects
Diffstat (limited to 'src/server/scripts/Battlefield')
-rw-r--r-- | src/server/scripts/Battlefield/BattlefieldTB.cpp | 6 | ||||
-rw-r--r-- | src/server/scripts/Battlefield/BattlefieldTB.h | 1 | ||||
-rw-r--r-- | src/server/scripts/Battlefield/BattlefieldWG.cpp | 28 | ||||
-rw-r--r-- | src/server/scripts/Battlefield/BattlefieldWG.h | 1 |
4 files changed, 27 insertions, 9 deletions
diff --git a/src/server/scripts/Battlefield/BattlefieldTB.cpp b/src/server/scripts/Battlefield/BattlefieldTB.cpp index 33fc29c1ecb..93ed4da8131 100644 --- a/src/server/scripts/Battlefield/BattlefieldTB.cpp +++ b/src/server/scripts/Battlefield/BattlefieldTB.cpp @@ -45,8 +45,6 @@ bool BattlefieldTB::SetupBattlefield() m_TypeId = BATTLEFIELD_TB; // See enum BattlefieldTypes m_BattleId = BATTLEFIELD_BATTLEID_TB; m_ZoneId = BATTLEFIELD_TB_ZONEID; - m_MapId = BATTLEFIELD_TB_MAPID; - m_Map = sMapMgr->CreateBaseMap(m_MapId); InitStalker(NPC_DEBUG_ANNOUNCER, TolBaradDebugAnnouncerPos); @@ -757,9 +755,9 @@ class Battlefield_tol_barad : public BattlefieldScript public: Battlefield_tol_barad() : BattlefieldScript("battlefield_tb") { } - Battlefield* GetBattlefield() const override + Battlefield* GetBattlefield(Map* map) const override { - return new BattlefieldTB(); + return new BattlefieldTB(map); } }; diff --git a/src/server/scripts/Battlefield/BattlefieldTB.h b/src/server/scripts/Battlefield/BattlefieldTB.h index 9792ba818e4..ed274a2e49e 100644 --- a/src/server/scripts/Battlefield/BattlefieldTB.h +++ b/src/server/scripts/Battlefield/BattlefieldTB.h @@ -549,6 +549,7 @@ class TolBaradCapturePoint : public BfCapturePoint class BattlefieldTB : public Battlefield { public: + using Battlefield::Battlefield; ~BattlefieldTB(); void OnStartGrouping() override; diff --git a/src/server/scripts/Battlefield/BattlefieldWG.cpp b/src/server/scripts/Battlefield/BattlefieldWG.cpp index fcf9d6c3dc8..895868b9cec 100644 --- a/src/server/scripts/Battlefield/BattlefieldWG.cpp +++ b/src/server/scripts/Battlefield/BattlefieldWG.cpp @@ -411,8 +411,6 @@ bool BattlefieldWG::SetupBattlefield() m_TypeId = BATTLEFIELD_WG; // See enum BattlefieldTypes m_BattleId = BATTLEFIELD_BATTLEID_WG; m_ZoneId = AREA_WINTERGRASP; - m_MapId = BATTLEFIELD_WG_MAPID; - m_Map = sMapMgr->CreateBaseMap(m_MapId); InitStalker(BATTLEFIELD_WG_NPC_STALKER, WintergraspStalkerPos); @@ -1477,6 +1475,26 @@ void BfWGGameObjectBuilding::Init(GameObject* go) } _state = WintergraspGameObjectState(sWorldStateMgr->GetValue(_worldState, _wg->GetMap())); + if (_state == BATTLEFIELD_WG_OBJECTSTATE_NONE) + { + // set to default state based on type + switch (_teamControl) + { + case TEAM_ALLIANCE: + _state = BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_INTACT; + break; + case TEAM_HORDE: + _state = BATTLEFIELD_WG_OBJECTSTATE_HORDE_INTACT; + break; + case TEAM_NEUTRAL: + _state = BATTLEFIELD_WG_OBJECTSTATE_NEUTRAL_INTACT; + break; + default: + break; + } + sWorldStateMgr->SetValueAndSaveInDb(_worldState, _state, false, _wg->GetMap()); + } + switch (_state) { case BATTLEFIELD_WG_OBJECTSTATE_NEUTRAL_INTACT: @@ -1774,9 +1792,9 @@ class Battlefield_wintergrasp : public BattlefieldScript public: Battlefield_wintergrasp() : BattlefieldScript("battlefield_wg") { } - Battlefield* GetBattlefield() const override + Battlefield* GetBattlefield(Map* map) const override { - return new BattlefieldWG(); + return new BattlefieldWG(map); } }; @@ -1794,7 +1812,7 @@ public: if (!killer || killer->GetTypeId() != TYPEID_PLAYER) return; - BattlefieldWG* wintergrasp = static_cast<BattlefieldWG*>(sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG)); + BattlefieldWG* wintergrasp = static_cast<BattlefieldWG*>(sBattlefieldMgr->GetBattlefieldByBattleId(killer->GetMap(), BATTLEFIELD_BATTLEID_WG)); if (!wintergrasp) return; diff --git a/src/server/scripts/Battlefield/BattlefieldWG.h b/src/server/scripts/Battlefield/BattlefieldWG.h index c15bd592962..3f10861fe58 100644 --- a/src/server/scripts/Battlefield/BattlefieldWG.h +++ b/src/server/scripts/Battlefield/BattlefieldWG.h @@ -200,6 +200,7 @@ class WintergraspCapturePoint : public BfCapturePoint class BattlefieldWG : public Battlefield { public: + using Battlefield::Battlefield; ~BattlefieldWG(); /** * \brief Called when the battle start |