diff --git a/mods/randomizer/src/mod.cpp b/mods/randomizer/src/mod.cpp index f3fa723950..0b078f53a1 100644 --- a/mods/randomizer/src/mod.cpp +++ b/mods/randomizer/src/mod.cpp @@ -44,11 +44,6 @@ MOD_EXPORT ModResult mod_initialize(ModError* error) { return mods::set_error(error, result, "failed to initialize session"); } - result = randomizer::ui::initialize(); - if (result != MOD_OK) { - return mods::set_error(error, result, "failed to initialize ui"); - } - svc_log->info(mod_ctx, "randomizer initialized"); return MOD_OK; } diff --git a/mods/randomizer/src/session.cpp b/mods/randomizer/src/session.cpp index b53d7f7ea1..b4089b9444 100644 --- a/mods/randomizer/src/session.cpp +++ b/mods/randomizer/src/session.cpp @@ -405,6 +405,11 @@ ModResult onGameModeActivated(void*, ModError* error) { return mods::set_error(error, result, "failed to register texture replacement"); } + result = ui::initialize(); + if (result != MOD_OK) { + return mods::set_error(error, result, "failed to initialize ui"); + } + mods::log::info("randomizer game mode activated"); return MOD_OK; } @@ -412,6 +417,7 @@ ModResult onGameModeActivated(void*, ModError* error) { void shutdown() { deactivateSeed(); hooks::uninstall(); + ui::shutdown(); svc_mng.save->unobserve_saves(mod_ctx, s_save_observer); svc_mng.texture->unregister(mod_ctx, logoTexHandle); } diff --git a/mods/randomizer/src/ui/rando_config.cpp b/mods/randomizer/src/ui/rando_config.cpp index b882b57fe7..0958f5aa9d 100644 --- a/mods/randomizer/src/ui/rando_config.cpp +++ b/mods/randomizer/src/ui/rando_config.cpp @@ -1172,6 +1172,10 @@ ModResult buildMenuTab() { return session::svc_mng.ui->register_menu_tab(session::svc_mng.mod_ctx, &desc, &g_menu_tab); } +ModResult removeMenuTab() { + return session::svc_mng.ui->unregister_menu_tab(session::svc_mng.mod_ctx, g_menu_tab); +} + ModResult buildFileSelectGateMenu(dFile_select_c* fileSelect) { UiTabDesc tabs[6]{}; diff --git a/mods/randomizer/src/ui/rando_config.hpp b/mods/randomizer/src/ui/rando_config.hpp index 1e086931cf..7cd5270c82 100644 --- a/mods/randomizer/src/ui/rando_config.hpp +++ b/mods/randomizer/src/ui/rando_config.hpp @@ -31,5 +31,6 @@ void CopyPermalinkToClipboard(); void PastePermalinkFromClipboard(); ModResult buildMenuTab(); +ModResult removeMenuTab(); ModResult buildFileSelectGateMenu(dFile_select_c*); } diff --git a/mods/randomizer/src/ui/ui.cpp b/mods/randomizer/src/ui/ui.cpp index 4c5ddba5b6..52f1baafab 100644 --- a/mods/randomizer/src/ui/ui.cpp +++ b/mods/randomizer/src/ui/ui.cpp @@ -8,6 +8,8 @@ #include "rando_config.hpp" namespace randomizer::ui { +UiStyleHandle styleHandle{}; + ModResult initialize() { ModResult res; @@ -15,7 +17,7 @@ ModResult initialize() { session::svc_mng.mod_ctx, UI_SCOPE_WINDOW, "ui.rcss", - nullptr); + &styleHandle); if (res != MOD_OK) { mods::log::error("failed to register rcss!"); return res; @@ -34,4 +36,10 @@ void update() { UpdateSeedGenerationDialog(); } +ModResult shutdown() { + removeMenuTab(); + session::svc_mng.ui->unregister_styles(mod_ctx, styleHandle); + return MOD_OK; +} + } \ No newline at end of file diff --git a/mods/randomizer/src/ui/ui.hpp b/mods/randomizer/src/ui/ui.hpp index a62ee956e0..86c7e0fe19 100644 --- a/mods/randomizer/src/ui/ui.hpp +++ b/mods/randomizer/src/ui/ui.hpp @@ -5,4 +5,5 @@ namespace randomizer::ui { ModResult initialize(); void update(); +ModResult shutdown(); } \ No newline at end of file