mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Core/Commands: Initialize commands on startup instead of first use
This commit is contained in:
@@ -42,29 +42,32 @@ static Optional<std::vector<ChatCommand>> commandTableCache;
|
||||
std::vector<ChatCommand> const& ChatHandler::getCommandTable()
|
||||
{
|
||||
if (!commandTableCache)
|
||||
{
|
||||
// We need to initialize this at top since SetDataForCommandInTable
|
||||
// calls getCommandTable() recursively.
|
||||
commandTableCache = sScriptMgr->GetChatCommands();
|
||||
|
||||
WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_COMMANDS);
|
||||
PreparedQueryResult result = WorldDatabase.Query(stmt);
|
||||
if (result)
|
||||
{
|
||||
do
|
||||
{
|
||||
Field* fields = result->Fetch();
|
||||
std::string name = fields[0].GetString();
|
||||
|
||||
SetDataForCommandInTable(*commandTableCache, name.c_str(), fields[1].GetUInt16(), fields[2].GetString(), name);
|
||||
}
|
||||
while (result->NextRow());
|
||||
}
|
||||
}
|
||||
InitializeCommandTable();
|
||||
|
||||
return *commandTableCache;
|
||||
}
|
||||
|
||||
void ChatHandler::InitializeCommandTable()
|
||||
{
|
||||
// We need to initialize this at top since SetDataForCommandInTable
|
||||
// calls getCommandTable() recursively.
|
||||
commandTableCache = sScriptMgr->GetChatCommands();
|
||||
|
||||
WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_COMMANDS);
|
||||
PreparedQueryResult result = WorldDatabase.Query(stmt);
|
||||
if (result)
|
||||
{
|
||||
do
|
||||
{
|
||||
Field* fields = result->Fetch();
|
||||
std::string name = fields[0].GetString();
|
||||
|
||||
SetDataForCommandInTable(*commandTableCache, name.c_str(), fields[1].GetUInt16(), fields[2].GetString(), name);
|
||||
}
|
||||
while (result->NextRow());
|
||||
}
|
||||
}
|
||||
|
||||
void ChatHandler::invalidateCommandTable()
|
||||
{
|
||||
commandTableCache.reset();
|
||||
|
||||
@@ -83,6 +83,7 @@ class TC_GAME_API ChatHandler
|
||||
virtual bool ParseCommands(char const* text);
|
||||
|
||||
static std::vector<ChatCommand> const& getCommandTable();
|
||||
static void InitializeCommandTable();
|
||||
static void invalidateCommandTable();
|
||||
|
||||
void SendGlobalSysMessage(const char *str);
|
||||
|
||||
@@ -2075,6 +2075,9 @@ void World::SetInitialWorldSettings()
|
||||
TC_LOG_INFO("server.loading", "Initialize query data...");
|
||||
sObjectMgr->InitializeQueriesData(QUERY_DATA_ALL);
|
||||
|
||||
TC_LOG_INFO("server.loading", "Initialize commands...");
|
||||
ChatHandler::InitializeCommandTable();
|
||||
|
||||
///- Initialize game time and timers
|
||||
TC_LOG_INFO("server.loading", "Initialize game time and timers");
|
||||
GameTime::UpdateGameTimers();
|
||||
|
||||
Reference in New Issue
Block a user