diff --git a/docs/modding.md b/docs/modding.md index 4c6f654df2..3c8a4908c1 100644 --- a/docs/modding.md +++ b/docs/modding.md @@ -734,7 +734,7 @@ bool onNewSaveSelect(dFile_select_c *fileSelect) { svc_ui->window_close(ctx, *static_cast(userdata)); }; desc.user_data = &windowHandle; - svc_ui->pane_add_control(mod_ctx, leftPane, &desc, &windowHandle); + svc_ui->pane_add_control(mod_ctx, leftPane, &desc, nullptr); return MOD_OK; }; diff --git a/sdk/include/mods/svc/gamemode.h b/sdk/include/mods/svc/gamemode.h index 0586fe6fab..81d2417528 100644 --- a/sdk/include/mods/svc/gamemode.h +++ b/sdk/include/mods/svc/gamemode.h @@ -7,8 +7,6 @@ #define GAMEMODE_SERVICE_MAJOR 1u #define GAMEMODE_SERVICE_MINOR 0u -struct dFile_select_c; - typedef struct { const char* gamemodeId; const char* fullName; @@ -18,7 +16,7 @@ typedef struct { void (*onPlayFunction)(); void (*onSaveLoadedFunction)(); void (*onNewSaveFunction)(); - bool (*onNewSaveSelectFunction)(dFile_select_c* fileSelect); // Should return true when any custom options flows are finished + bool (*onNewSaveSelectFunction)(struct dFile_select_c* fileSelect); // Should return true when any custom options flows are finished void (*onGameResetFunction)(); void (*onTickFunction)(); } GamemodeDesc; diff --git a/src/d/d_bright_check.cpp b/src/d/d_bright_check.cpp index ee4ab6260a..c9300c95fa 100644 --- a/src/d/d_bright_check.cpp +++ b/src/d/d_bright_check.cpp @@ -186,13 +186,6 @@ void dBrightCheck_c::modeMove() { if (mDoCPd_c::getTrigA(PAD_1) || mDoCPd_c::getTrigStart(PAD_1)) { mDoAud_seStart(Z2SE_ENTER_GAME, NULL, 0, 0); #ifdef TARGET_PC - if (!dusk::getSettings().game.hideTvSettingsScreen) { - const dusk::gamemode::Gamemode* gamemode = dusk::gamemode::getGamemodeManager().getCurrentGamemode(); - if (gamemode) { - gamemode->invokeOnSaveLoadedFunction(); - } - } - toggleAutoSave(true); #endif mCompleteCheck = true; diff --git a/src/d/d_file_select.cpp b/src/d/d_file_select.cpp index 5945b2ef5a..bdd0ca800e 100644 --- a/src/d/d_file_select.cpp +++ b/src/d/d_file_select.cpp @@ -1416,6 +1416,11 @@ void dFile_select_c::menuSelectStart() { dComIfGs_setDataNum(mSelectNum); #if TARGET_PC dusk::mods::svc::save_slot_loaded(mSelectNum, &mSaveData[mSelectNum]); + + const dusk::gamemode::Gamemode* gamemode = dusk::gamemode::getGamemodeManager().getCurrentGamemode(); + if (gamemode) { + gamemode->invokeOnSaveLoadedFunction(); + } #endif } else if (mSelectMenuNum == 0) { mSelIcon->setAlphaRate(0.0f); @@ -1769,6 +1774,11 @@ void dFile_select_c::nameInput2() { mIsSelectEnd = true; #if TARGET_PC dusk::mods::svc::save_slot_new(mSelectNum); + const dusk::gamemode::Gamemode* gamemode = dusk::gamemode::getGamemodeManager().getCurrentGamemode(); + if (gamemode) { + gamemode->invokeOnNewSaveFunction(); + gamemode->invokeOnSaveLoadedFunction(); + } #endif mDataSelProc = DATASELPROC_NEXT_MODE_WAIT; } diff --git a/src/d/d_s_logo.cpp b/src/d/d_s_logo.cpp index 366d87c02b..d2d0d52f4a 100644 --- a/src/d/d_s_logo.cpp +++ b/src/d/d_s_logo.cpp @@ -27,6 +27,7 @@ #include "dusk/logging.h" #include "dusk/main.h" #include "dusk/mods/svc/save.hpp" +#include "dusk/gamemode.hpp" #include "dusk/version.hpp" #include "m_Do/m_Do_MemCard.h" #endif @@ -785,6 +786,10 @@ void dScnLogo_c::nextSceneChange() { if (status == 1) { dusk::mods::svc::save_slot_loaded( saveSlot, buf + saveSlot * SAVEDATA_SIZE); + const dusk::gamemode::Gamemode* gamemode = dusk::gamemode::getGamemodeManager().getCurrentGamemode(); + if (gamemode) { + gamemode->invokeOnSaveLoadedFunction(); + } } dComIfGs_gameStart(); diff --git a/src/d/d_s_name.cpp b/src/d/d_s_name.cpp index e67e407a64..24f92f3ea3 100644 --- a/src/d/d_s_name.cpp +++ b/src/d/d_s_name.cpp @@ -422,13 +422,6 @@ void dScnName_c::changeGameScene() { dComIfGs_setRestartRoomParam(0); #if TARGET_PC - if (dusk::getSettings().game.hideTvSettingsScreen) { - const dusk::gamemode::Gamemode* gamemode = dusk::gamemode::getGamemodeManager().getCurrentGamemode(); - if (gamemode) { - gamemode->invokeOnSaveLoadedFunction(); - } - } - toggleAutoSave(true); #endif } diff --git a/src/d/d_save.cpp b/src/d/d_save.cpp index 53d45a10e4..d8eed88e7d 100644 --- a/src/d/d_save.cpp +++ b/src/d/d_save.cpp @@ -1537,13 +1537,6 @@ void dSv_save_c::init() { mEvent.init(); mMiniGame.init(); - -#ifdef TARGET_PC - const dusk::gamemode::Gamemode* gamemode = dusk::gamemode::getGamemodeManager().getCurrentGamemode(); - if (gamemode) { - gamemode->invokeOnNewSaveFunction(); - } -#endif } dSv_memory2_c* dSv_save_c::getSave2(int i_stage2No) {