aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Battlefield/BattlefieldMgr.cpp
diff options
context:
space:
mode:
authorCarbenium <carbenium@outlook.com>2020-06-22 16:10:34 +0200
committerShauren <shauren.trinity@gmail.com>2022-01-07 00:20:57 +0100
commit49523a74a4c28e5ae17f9a8352aa8224b765b7d8 (patch)
tree829e998508b4320f305bc9e4891ec7116c4005fd /src/server/game/Battlefield/BattlefieldMgr.cpp
parenta26cc135fa34e0e4aa0c244c4c4b4bec4c25d709 (diff)
Battlefields: Move BF scripts out of game
This commit introduces the usual script interface for battlefields. (cherry picked from commit f7faf20254a120a90b8ee8eb55a284a6351aabc3)
Diffstat (limited to 'src/server/game/Battlefield/BattlefieldMgr.cpp')
-rw-r--r--src/server/game/Battlefield/BattlefieldMgr.cpp62
1 files changed, 38 insertions, 24 deletions
diff --git a/src/server/game/Battlefield/BattlefieldMgr.cpp b/src/server/game/Battlefield/BattlefieldMgr.cpp
index 2498678c3e2..5f42b90b22b 100644
--- a/src/server/game/Battlefield/BattlefieldMgr.cpp
+++ b/src/server/game/Battlefield/BattlefieldMgr.cpp
@@ -16,10 +16,11 @@
*/
#include "BattlefieldMgr.h"
-#include "BattlefieldWG.h"
-#include "BattlefieldTB.h"
+#include "DatabaseEnv.h"
+#include "ObjectMgr.h"
#include "Log.h"
#include "Player.h"
+#include "ScriptMgr.h"
BattlefieldMgr::BattlefieldMgr()
{
@@ -42,31 +43,44 @@ BattlefieldMgr* BattlefieldMgr::instance()
void BattlefieldMgr::InitBattlefield()
{
- Battlefield* wg = new BattlefieldWG();
- // respawn, init variables
- if (!wg->SetupBattlefield())
- {
- TC_LOG_INFO("bg.battlefield", "Battlefield: Wintergrasp init failed.");
- delete wg;
- }
- else
- {
- _battlefieldSet.push_back(wg);
- TC_LOG_INFO("bg.battlefield", "Battlefield: Wintergrasp successfully initiated.");
- }
+ uint32 oldMSTime = getMSTime();
- Battlefield* tb = new BattlefieldTB;
- // respawn, init variables
- if (!tb->SetupBattlefield())
- {
- TC_LOG_DEBUG("bg.battlefield", "Battlefield: Tol Barad init failed.");
- delete tb;
- }
- else
+ uint32 count = 0;
+
+ if (QueryResult result = WorldDatabase.Query("SELECT TypeId, ScriptName FROM battlefield_template"))
{
- _battlefieldSet.push_back(tb);
- TC_LOG_DEBUG("bg.battlefield", "Battlefield: Tol Barad successfully initiated.");
+ do
+ {
+ Field* fields = result->Fetch();
+
+ uint32 typeId = fields[0].GetUInt8();
+
+ if (typeId >= BATTLEFIELD_MAX)
+ {
+ TC_LOG_ERROR("sql.sql", "BattlefieldMgr::InitBattlefield: Invalid TypeId value %u in battlefield_template, skipped.", typeId);
+ continue;
+ }
+
+ uint32 scriptId = sObjectMgr->GetScriptId(fields[1].GetString());
+
+ Battlefield* bf = sScriptMgr->CreateBattlefield(scriptId);
+
+ if (!bf->SetupBattlefield())
+ {
+ TC_LOG_INFO("bg.battlefield", "Setting up battlefield with TypeId %u failed.", typeId);
+ delete bf;
+ }
+ else
+ {
+ _battlefieldSet.push_back(bf);
+ TC_LOG_INFO("bg.battlefield", "Setting up battlefield with TypeId %u succeeded.", typeId);
+ }
+
+ ++count;
+ } while (result->NextRow());
}
+
+ TC_LOG_INFO("server.loading", ">> Loaded %u battlefields in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
}
void BattlefieldMgr::AddZone(uint32 zoneId, Battlefield* bf)