summaryrefslogtreecommitdiff
path: root/src/SMAPI
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2021-02-28 14:17:41 -0500
committerJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2021-02-28 14:17:41 -0500
commitb2d47e29ffe58142efd0a5084f33fefffd87a460 (patch)
treed2a3a78a264ea8a4cf08269cb8b9b4b3945b1171 /src/SMAPI
parent403616b07c6da6479ce77fd45b41f622e9972915 (diff)
downloadSMAPI-b2d47e29ffe58142efd0a5084f33fefffd87a460.tar.gz
SMAPI-b2d47e29ffe58142efd0a5084f33fefffd87a460.tar.bz2
SMAPI-b2d47e29ffe58142efd0a5084f33fefffd87a460.zip
add ReturningToTitle stage
Diffstat (limited to 'src/SMAPI')
-rw-r--r--src/SMAPI/Enums/LoadStage.cs5
-rw-r--r--src/SMAPI/Patches/LoadContextPatch.cs15
2 files changed, 19 insertions, 1 deletions
diff --git a/src/SMAPI/Enums/LoadStage.cs b/src/SMAPI/Enums/LoadStage.cs
index aa95d201..250c88e9 100644
--- a/src/SMAPI/Enums/LoadStage.cs
+++ b/src/SMAPI/Enums/LoadStage.cs
@@ -37,6 +37,9 @@ namespace StardewModdingAPI.Enums
Loaded,
/// <summary>The save is fully loaded, the world has been initialized, and <see cref="Context.IsWorldReady"/> is now true.</summary>
- Ready
+ Ready,
+
+ /// <summary>The game is exiting the loaded save and returning to the title screen. This happens before it returns to title; see <see cref="None"/> after it returns.</summary>
+ ReturningToTitle
}
}
diff --git a/src/SMAPI/Patches/LoadContextPatch.cs b/src/SMAPI/Patches/LoadContextPatch.cs
index 9fddcc50..28bc23b6 100644
--- a/src/SMAPI/Patches/LoadContextPatch.cs
+++ b/src/SMAPI/Patches/LoadContextPatch.cs
@@ -77,6 +77,12 @@ namespace StardewModdingAPI.Patches
prefix: new HarmonyMethod(this.GetType(), nameof(LoadContextPatch.Before_Game1_LoadForNewGame)),
postfix: new HarmonyMethod(this.GetType(), nameof(LoadContextPatch.After_Game1_LoadForNewGame))
);
+
+ // detect ReturningToTitle
+ harmony.Patch(
+ original: AccessTools.Method(typeof(Game1), nameof(Game1.CleanupReturningToTitle)),
+ prefix: new HarmonyMethod(this.GetType(), nameof(LoadContextPatch.Before_Game1_CleanupReturningToTitle))
+ );
}
@@ -110,6 +116,15 @@ namespace StardewModdingAPI.Patches
return true;
}
+ /// <summary>Called before <see cref="Game1.CleanupReturningToTitle"/>.</summary>
+ /// <returns>Returns whether to execute the original method.</returns>
+ /// <remarks>This method must be static for Harmony to work correctly. See the Harmony documentation before renaming arguments.</remarks>
+ private static bool Before_Game1_CleanupReturningToTitle()
+ {
+ LoadContextPatch.OnStageChanged(LoadStage.ReturningToTitle);
+ return true;
+ }
+
/// <summary>Called before <see cref="Game1.loadForNewGame"/>.</summary>
/// <returns>Returns whether to execute the original method.</returns>
/// <remarks>This method must be static for Harmony to work correctly. See the Harmony documentation before renaming arguments.</remarks>