mirror of
https://github.com/azerothcore/mod-progression-system
synced 2026-08-21 06:23:04 -04:00
71 lines
2.4 KiB
C++
71 lines
2.4 KiB
C++
|
|
/*
|
||
|
|
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3
|
||
|
|
*/
|
||
|
|
|
||
|
|
#include "ProgressionSystem.h"
|
||
|
|
#include "DBUpdater.h"
|
||
|
|
|
||
|
|
inline std::vector<std::string> GetDatabaseDirectories(std::string const& folderName)
|
||
|
|
{
|
||
|
|
std::vector<std::string> directories;
|
||
|
|
|
||
|
|
std::string const path = "/modules/mod-progression-system/src/Bracket_";
|
||
|
|
for (uint8 i = 0; i < PROGRESSION_BRACKET_MAX; ++i)
|
||
|
|
{
|
||
|
|
uint32 bracketsMask = 1 << i;
|
||
|
|
if (!(sConfigMgr->GetOption<int>("ProgressionSystem.Brackets", 0) & bracketsMask))
|
||
|
|
{
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
|
||
|
|
std::string bracketPath = path + ProgressionBracketsNames[i] + "/sql/" + folderName;
|
||
|
|
directories.push_back(std::move(bracketPath));
|
||
|
|
}
|
||
|
|
|
||
|
|
return directories;
|
||
|
|
}
|
||
|
|
|
||
|
|
class ProgressionSystemLoadingDBUpdates : public DatabaseScript
|
||
|
|
{
|
||
|
|
public:
|
||
|
|
ProgressionSystemLoadingDBUpdates() : DatabaseScript("ProgressionSystemLoadingDBUpdates") {}
|
||
|
|
|
||
|
|
void OnAfterDatabasesLoaded(uint32 updateFlags) override
|
||
|
|
{
|
||
|
|
if (DBUpdater<LoginDatabaseConnection>::IsEnabled(updateFlags))
|
||
|
|
{
|
||
|
|
std::vector<std::string> loginDatabaseDirectories = GetDatabaseDirectories("auth");
|
||
|
|
if (!loginDatabaseDirectories.empty())
|
||
|
|
{
|
||
|
|
DBUpdater<LoginDatabaseConnection>::Update(LoginDatabase, &loginDatabaseDirectories);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if (DBUpdater<CharacterDatabaseConnection>::IsEnabled(updateFlags))
|
||
|
|
{
|
||
|
|
std::vector<std::string> charactersDatabaseDirectories = GetDatabaseDirectories("characters");
|
||
|
|
if (!charactersDatabaseDirectories.empty())
|
||
|
|
{
|
||
|
|
DBUpdater<CharacterDatabaseConnection>::Update(CharacterDatabase, &charactersDatabaseDirectories);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if (DBUpdater<WorldDatabaseConnection>::IsEnabled(updateFlags))
|
||
|
|
{
|
||
|
|
std::vector<std::string> worldDatabaseDirectories = GetDatabaseDirectories("world");
|
||
|
|
if (!worldDatabaseDirectories.empty())
|
||
|
|
{
|
||
|
|
DBUpdater<WorldDatabaseConnection>::Update(WorldDatabase, &worldDatabaseDirectories);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
};
|
||
|
|
|
||
|
|
void AddProgressionSystemScripts()
|
||
|
|
{
|
||
|
|
if (sConfigMgr->GetOption<bool>("ProgressionSystem.LoadDatabase", true))
|
||
|
|
{
|
||
|
|
new ProgressionSystemLoadingDBUpdates();
|
||
|
|
}
|
||
|
|
}
|