mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-24 16:10:14 +00:00
feat: add /reload command to re-initialize addon system
Add AddonManager::reload() which saves all SavedVariables, shuts down the Lua VM, re-initializes it, rescans .toc files, and reloads all addons. Wire /reload, /reloadui, /rl slash commands that call reload() and fire VARIABLES_LOADED + PLAYER_LOGIN + PLAYER_ENTERING_WORLD lifecycle events. Essential for addon development and troubleshooting.
This commit is contained in:
parent
23ebfc7e85
commit
21ead2aa4b
3 changed files with 51 additions and 0 deletions
|
|
@ -11,12 +11,14 @@ AddonManager::AddonManager() = default;
|
|||
AddonManager::~AddonManager() { shutdown(); }
|
||||
|
||||
bool AddonManager::initialize(game::GameHandler* gameHandler) {
|
||||
gameHandler_ = gameHandler;
|
||||
if (!luaEngine_.initialize()) return false;
|
||||
luaEngine_.setGameHandler(gameHandler);
|
||||
return true;
|
||||
}
|
||||
|
||||
void AddonManager::scanAddons(const std::string& addonsPath) {
|
||||
addonsPath_ = addonsPath;
|
||||
addons_.clear();
|
||||
|
||||
std::error_code ec;
|
||||
|
|
@ -121,6 +123,26 @@ void AddonManager::saveAllSavedVariables() {
|
|||
}
|
||||
}
|
||||
|
||||
bool AddonManager::reload() {
|
||||
LOG_INFO("AddonManager: reloading all addons...");
|
||||
saveAllSavedVariables();
|
||||
addons_.clear();
|
||||
luaEngine_.shutdown();
|
||||
|
||||
if (!luaEngine_.initialize()) {
|
||||
LOG_ERROR("AddonManager: failed to reinitialize Lua VM during reload");
|
||||
return false;
|
||||
}
|
||||
luaEngine_.setGameHandler(gameHandler_);
|
||||
|
||||
if (!addonsPath_.empty()) {
|
||||
scanAddons(addonsPath_);
|
||||
loadAllAddons();
|
||||
}
|
||||
LOG_INFO("AddonManager: reload complete");
|
||||
return true;
|
||||
}
|
||||
|
||||
void AddonManager::shutdown() {
|
||||
saveAllSavedVariables();
|
||||
addons_.clear();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue