Added PostLoadGame hook, so item synching hooks can get fired after they've been subscribed to in hook handlers

This commit is contained in:
Jerom Venneker
2025-06-06 14:42:42 +02:00
parent fb0bf1be45
commit c1ac635bea
5 changed files with 8 additions and 1 deletions

View File

@@ -8,6 +8,7 @@
DEFINE_HOOK(OnZTitleInit, (void* gameState));
DEFINE_HOOK(OnZTitleUpdate, (void* gameState));
DEFINE_HOOK(OnLoadGame, (int32_t fileNum));
DEFINE_HOOK(PostLoadGame, (int32_t fileNum));
DEFINE_HOOK(OnExitGame, (int32_t fileNum));
DEFINE_HOOK(OnGameStateMainStart, ());
DEFINE_HOOK(OnGameFrameUpdate, ());

View File

@@ -14,6 +14,10 @@ void GameInteractor_ExecuteOnLoadGame(int32_t fileNum) {
GameInteractor::Instance->ExecuteHooks<GameInteractor::OnLoadGame>(fileNum);
}
void GameInteractor_ExecutePostLoadGame(int32_t fileNum) {
GameInteractor::Instance->ExecuteHooks<GameInteractor::PostLoadGame>(fileNum);
}
void GameInteractor_ExecuteOnExitGame(int32_t fileNum) {
GameInteractor::Instance->ExecuteHooks<GameInteractor::OnExitGame>(fileNum);
}

View File

@@ -11,6 +11,7 @@ extern "C" {
void GameInteractor_ExecuteOnZTitleInit(void* gameState);
void GameInteractor_ExecuteOnZTitleUpdate(void* gameState);
void GameInteractor_ExecuteOnLoadGame(int32_t fileNum);
void GameInteractor_ExecutePostLoadGame(int32_t fileNum);
void GameInteractor_ExecuteOnExitGame(int32_t fileNum);
void GameInteractor_ExecuteOnGameStateMainStart();
void GameInteractor_ExecuteOnGameFrameUpdate();

View File

@@ -530,7 +530,7 @@ void RegisterArchipelago() {
CVarSetInteger(CVAR_REMOTE_ARCHIPELAGO("Connected"), 0);
COND_HOOK(GameInteractor::OnGameFrameUpdate, true, [](){ArchipelagoClient::GetInstance().Poll();});
COND_HOOK(GameInteractor::OnLoadGame, true, [](int32_t file_id){ArchipelagoClient::GetInstance().GameLoaded();});
COND_HOOK(GameInteractor::PostLoadGame, true, [](int32_t file_id){ArchipelagoClient::GetInstance().GameLoaded();});
COND_HOOK(GameInteractor::OnRandomizerItemGivenHooks, IS_ARCHIPELAGO,
[](uint32_t rc, GetItemEntry gi, uint8_t isGiSkipped) {
if (rc == RC_ARCHIPELAGO_RECEIVED_ITEM) {

View File

@@ -3417,6 +3417,7 @@ void FileChoose_LoadGame(GameState* thisx) {
gSaveContext.naviTimer = 0;
GameInteractor_ExecuteOnLoadGame(gSaveContext.fileNum);
GameInteractor_ExecutePostLoadGame(gSaveContext.fileNum);
}
static void (*gSelectModeUpdateFuncs[])(GameState*) = {