/* * Copyright (C) 2016+ AzerothCore , 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 GetDatabaseDirectories(std::string const& folderName) { std::vector 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("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::IsEnabled(updateFlags)) { std::vector loginDatabaseDirectories = GetDatabaseDirectories("auth"); if (!loginDatabaseDirectories.empty()) { DBUpdater::Update(LoginDatabase, &loginDatabaseDirectories); } } if (DBUpdater::IsEnabled(updateFlags)) { std::vector charactersDatabaseDirectories = GetDatabaseDirectories("characters"); if (!charactersDatabaseDirectories.empty()) { DBUpdater::Update(CharacterDatabase, &charactersDatabaseDirectories); } } if (DBUpdater::IsEnabled(updateFlags)) { std::vector worldDatabaseDirectories = GetDatabaseDirectories("world"); if (!worldDatabaseDirectories.empty()) { DBUpdater::Update(WorldDatabase, &worldDatabaseDirectories); } } } }; void AddProgressionSystemScripts() { if (sConfigMgr->GetOption("ProgressionSystem.LoadDatabase", true)) { new ProgressionSystemLoadingDBUpdates(); } }