aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/World
diff options
context:
space:
mode:
authorleak <none@none>2010-12-19 17:06:33 +0100
committerleak <none@none>2010-12-19 17:06:33 +0100
commitfd694cd2324a7e2d61d833a78024b68fd3605053 (patch)
tree2fb48411eb25ff627b56786b66c96dd646a30651 /src/server/game/World
parent9c35e10444b24848e0a909c46727ac2a312ab5de (diff)
Streamlining loading functions for server startup
- Added a couple of timer outputs - Improved code consistency between loading functions - Progess bars should look and behave similar on all OS now (sLog.outString() is not needed anymore to replace the progress bar in log files) --HG-- branch : trunk
Diffstat (limited to 'src/server/game/World')
-rwxr-xr-xsrc/server/game/World/World.cpp62
1 files changed, 34 insertions, 28 deletions
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index f9bd822865f..edf93516207 100755
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -1193,6 +1193,9 @@ void World::LoadConfigSettings(bool reload)
/// Initialize the World
void World::SetInitialWorldSettings()
{
+ ///- Server startup begin
+ uint32 startupBegin = getMSTime();
+
///- Initialize the random number generator
srand((unsigned int)time(NULL));
@@ -1260,6 +1263,7 @@ void World::SetInitialWorldSettings()
sInstanceSaveMgr.CleanupAndPackInstances(); // must be called before `creature_respawn`/`gameobject_respawn` tables
sLog.outString("Loading Localization strings...");
+ uint32 oldMSTime = getMSTime();
sObjectMgr.LoadCreatureLocales();
sObjectMgr.LoadGameObjectLocales();
sObjectMgr.LoadItemLocales();
@@ -1269,14 +1273,15 @@ void World::SetInitialWorldSettings()
sObjectMgr.LoadPageTextLocales();
sObjectMgr.LoadGossipMenuItemsLocales();
sObjectMgr.LoadPointOfInterestLocales();
+
sObjectMgr.SetDBCLocaleIndex(GetDefaultDbcLocale()); // Get once for all the locale index of DBC language (console/broadcasts)
- sLog.outString(">>> Localization strings loaded");
+ sLog.outString(">> Localization strings loaded in %u ms", GetMSTimeDiffToNow(oldMSTime));
sLog.outString();
sLog.outString("Loading Page Texts...");
sObjectMgr.LoadPageTexts();
- sLog.outString("Loading Game Object Templates..."); // must be after LoadPageTexts
+ sLog.outString("Loading Game Object Templates..."); // must be after LoadPageTexts
sObjectMgr.LoadGameobjectInfo();
sLog.outString("Loading Spell Rank Data...");
@@ -1289,7 +1294,7 @@ void World::SetInitialWorldSettings()
sSpellMgr.LoadSpellGroups();
sLog.outString("Loading Spell Learn Skills...");
- sSpellMgr.LoadSpellLearnSkills(); // must be after LoadSpellRanks
+ sSpellMgr.LoadSpellLearnSkills(); // must be after LoadSpellRanks
sLog.outString("Loading Spell Learn Spells...");
sSpellMgr.LoadSpellLearnSpells();
@@ -1316,12 +1321,12 @@ void World::SetInitialWorldSettings()
LoadRandomEnchantmentsTable();
sLog.outString("Loading Disables");
- sDisableMgr.LoadDisables(); // must be before loading quests and items
+ sDisableMgr.LoadDisables(); // must be before loading quests and items
- sLog.outString("Loading Items..."); // must be after LoadRandomEnchantmentsTable and LoadPageTexts
+ sLog.outString("Loading Items..."); // must be after LoadRandomEnchantmentsTable and LoadPageTexts
sObjectMgr.LoadItemPrototypes();
- sLog.outString("Loading Item set names..."); // must be after LoadItemPrototypes
+ sLog.outString("Loading Item set names..."); // must be after LoadItemPrototypes
sObjectMgr.LoadItemSetNames();
sLog.outString("Loading Creature Model Based Info Data...");
@@ -1360,7 +1365,7 @@ void World::SetInitialWorldSettings()
sLog.outString("Loading pet levelup spells...");
sSpellMgr.LoadPetLevelupSpellMap();
- sLog.outString("Loading pet default spell additional to levelup spells...");
+ sLog.outString("Loading pet default spells additional to levelup spells...");
sSpellMgr.LoadPetDefaultSpells();
sLog.outString("Loading Creature Template Addon Data...");
@@ -1378,7 +1383,7 @@ void World::SetInitialWorldSettings()
sLog.outString("Loading Gameobject Respawn Data..."); // must be after PackInstances()
sObjectMgr.LoadGameobjectRespawnTimes();
- sLog.outString("Loading Objects Pooling Data...");
+ sLog.outString("Loading Objects Pooling Data..."); // TODOLEAK: scope
sPoolMgr.LoadFromDB();
sLog.outString("Loading Weather Data...");
@@ -1400,7 +1405,7 @@ void World::SetInitialWorldSettings()
sPoolMgr.LoadQuestPools();
sLog.outString("Loading Game Event Data..."); // must be after loading pools fully
- sGameEventMgr.LoadFromDB();
+ sGameEventMgr.LoadFromDB(); // TODOLEAK: add scopes
sLog.outString("Loading Dungeon boss data...");
sLFGMgr.LoadDungeonEncounters();
@@ -1411,7 +1416,7 @@ void World::SetInitialWorldSettings()
sLog.outString("Loading UNIT_NPC_FLAG_SPELLCLICK Data...");
sObjectMgr.LoadNPCSpellClickSpells();
- sLog.outString("Loading SpellArea Data..."); // must be after quest load
+ sLog.outString("Loading SpellArea Data..."); // must be after quest load
sSpellMgr.LoadSpellAreas();
sLog.outString("Loading AreaTrigger definitions...");
@@ -1471,7 +1476,7 @@ void World::SetInitialWorldSettings()
sObjectMgr.LoadMailLevelRewards();
// Loot tables
- LoadLootTables();
+ LoadLootTables(); //TODOLEAK: untangle that shit
sLog.outString("Loading Skill Discovery Table...");
LoadSkillDiscoveryTable();
@@ -1501,7 +1506,6 @@ void World::SetInitialWorldSettings()
sLog.outString("Loading Auctions...");
sAuctionMgr.LoadAuctions();
- sLog.outString("***** GUILDS *****");
sObjectMgr.LoadGuilds();
sLog.outString("Loading ArenaTeams...");
@@ -1580,16 +1584,12 @@ void World::SetInitialWorldSettings()
LoadAutobroadcasts();
///- Load and initialize scripts
- sLog.outString("Loading Scripts...");
- sLog.outString();
sObjectMgr.LoadQuestStartScripts(); // must be after load Creature/Gameobject(Template/Data) and QuestTemplate
sObjectMgr.LoadQuestEndScripts(); // must be after load Creature/Gameobject(Template/Data) and QuestTemplate
sObjectMgr.LoadSpellScripts(); // must be after load Creature/Gameobject(Template/Data)
sObjectMgr.LoadGameObjectScripts(); // must be after load Creature/Gameobject(Template/Data)
sObjectMgr.LoadEventScripts(); // must be after load Creature/Gameobject(Template/Data)
sObjectMgr.LoadWaypointScripts();
- sLog.outString(">>> Scripts loaded");
- sLog.outString();
sLog.outString("Loading Scripts text locales..."); // must be after Load*Scripts calls
sObjectMgr.LoadDbScriptStrings();
@@ -1610,7 +1610,7 @@ void World::SetInitialWorldSettings()
sCreatureTextMgr.LoadCreatureTexts();
sLog.outString("Initializing Scripts...");
- sScriptMgr.Initialize();
+ sScriptMgr.Initialize(); //LEAKTODO
sLog.outString("Validating spell scripts...");
sObjectMgr.ValidateSpellScripts();
@@ -1724,7 +1724,10 @@ void World::SetInitialWorldSettings()
else
sLog.SetLogDB(false);
- sLog.outString("WORLD: World initialized");
+ uint32 startupDuration = GetMSTimeDiffToNow(startupBegin);
+ sLog.outString();
+ sLog.outString("WORLD: World initialized in %u minuntes %u seconds", (startupDuration / 60000), ((startupDuration % 60000) / 1000) );
+ sLog.outString();
}
void World::DetectDBCLang()
@@ -1799,6 +1802,8 @@ void World::RecordTimeDiff(const char *text, ...)
void World::LoadAutobroadcasts()
{
+ uint32 oldMSTime = getMSTime();
+
m_Autobroadcasts.clear();
QueryResult result = WorldDatabase.Query("SELECT text FROM autobroadcast");
@@ -1807,14 +1812,12 @@ void World::LoadAutobroadcasts()
{
barGoLink bar(1);
bar.step();
-
+ sLog.outString(">> Loaded 0 autobroadcasts definitions. DB table `autobroadcast` is empty!");
sLog.outString();
- sLog.outString(">> Loaded 0 autobroadcasts definitions");
return;
}
barGoLink bar(result->GetRowCount());
-
uint32 count = 0;
do
@@ -1826,11 +1829,11 @@ void World::LoadAutobroadcasts()
m_Autobroadcasts.push_back(message);
- count++;
+ ++count;
} while (result->NextRow());
+ sLog.outString(">> Loaded %u autobroadcasts definitions in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
sLog.outString();
- sLog.outString(">> Loaded %u autobroadcasts definitions", count);
}
/// Update the World !
@@ -2765,30 +2768,33 @@ void World::UpdateAreaDependentAuras()
void World::LoadWorldStates()
{
+ uint32 oldMSTime = getMSTime();
+
QueryResult result = CharacterDatabase.Query("SELECT entry, value FROM worldstates");
if (!result)
{
barGoLink bar(1);
bar.step();
+ sLog.outString(">> Loaded 0 world states. DB table `worldstates` is empty!");
sLog.outString();
- sLog.outString(">> Loaded 0 world states.");
return;
}
barGoLink bar(result->GetRowCount());
- uint32 counter = 0;
+ uint32 count = 0;
do
{
Field *fields = result->Fetch();
m_worldstates[fields[0].GetUInt32()] = fields[1].GetUInt64();
bar.step();
- ++counter;
- } while (result->NextRow());
+ ++count;
+ }
+ while (result->NextRow());
+ sLog.outString(">> Loaded %u world states in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
sLog.outString();
- sLog.outString(">> Loaded %u world states.", counter);
}
// Setting a worldstate will save it to DB