summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/release-notes.md1
-rw-r--r--src/SMAPI/Framework/SCore.cs30
2 files changed, 19 insertions, 12 deletions
diff --git a/docs/release-notes.md b/docs/release-notes.md
index 833e2130..6f69479e 100644
--- a/docs/release-notes.md
+++ b/docs/release-notes.md
@@ -13,6 +13,7 @@
* For mod authors:
* Added three stages to the `LoadStageChanged` event: `CreatedInitialLocations`/`SaveAddedLocations` (raised immediately after the game adds locations but before they're initialized), and `ReturningToTitle` (raised before exiting to the title screen).
+ * Fixed edge case when playing as a farmhand in non-English where translatable assets loaded via `IAssetLoader` weren't reapplied immediately when the server disconnects.
## 3.9.2
Released 21 February 2021 for Stardew Valley 1.5.4 or later.
diff --git a/src/SMAPI/Framework/SCore.cs b/src/SMAPI/Framework/SCore.cs
index 2d783eb2..5df4b61b 100644
--- a/src/SMAPI/Framework/SCore.cs
+++ b/src/SMAPI/Framework/SCore.cs
@@ -1054,17 +1054,24 @@ namespace StardewModdingAPI.Framework
LoadStage oldStage = Context.LoadStage;
Context.LoadStage = newStage;
this.Monitor.VerboseLog($"Context: load stage changed to {newStage}");
- if (newStage == LoadStage.None)
- {
- this.Monitor.Log("Context: returned to title");
- this.OnReturnedToTitle();
- }
- // override chatbox
- if (newStage == LoadStage.Loaded)
+ // handle stages
+ switch (newStage)
{
- Game1.onScreenMenus.Remove(Game1.chatBox);
- Game1.onScreenMenus.Add(Game1.chatBox = new SChatBox(this.LogManager.MonitorForGame));
+ case LoadStage.ReturningToTitle:
+ this.Monitor.Log("Context: returning to title");
+ this.OnReturningToTitle();
+ break;
+
+ case LoadStage.None:
+ this.JustReturnedToTitle = true;
+ break;
+
+ case LoadStage.Loaded:
+ // override chatbox
+ Game1.onScreenMenus.Remove(Game1.chatBox);
+ Game1.onScreenMenus.Add(Game1.chatBox = new SChatBox(this.LogManager.MonitorForGame));
+ break;
}
// raise events
@@ -1113,13 +1120,12 @@ namespace StardewModdingAPI.Framework
this.EventManager.DayEnding.RaiseEmpty();
}
- /// <summary>Raised after the player returns to the title screen.</summary>
- private void OnReturnedToTitle()
+ /// <summary>Raised immediately before the player returns to the title screen.</summary>
+ private void OnReturningToTitle()
{
// perform cleanup
this.Multiplayer.CleanupOnMultiplayerExit();
this.ContentCore.OnReturningToTitleScreen();
- this.JustReturnedToTitle = true;
}
/// <summary>Raised before the game exits.</summary>