diff options
author | Jesse Plamondon-Willard <Pathoschild@users.noreply.github.com> | 2021-09-27 17:06:15 -0400 |
---|---|---|
committer | Jesse Plamondon-Willard <Pathoschild@users.noreply.github.com> | 2021-09-27 17:06:15 -0400 |
commit | ab8599583e549bda59bc3e0783bd5e1657ef7b1b (patch) | |
tree | 6096cc071f3693cdc2c5268ec347005c223b1075 | |
parent | 31e31538f128f2a79b553a2cc20fe8a6f13e8a06 (diff) | |
download | SMAPI-ab8599583e549bda59bc3e0783bd5e1657ef7b1b.tar.gz SMAPI-ab8599583e549bda59bc3e0783bd5e1657ef7b1b.tar.bz2 SMAPI-ab8599583e549bda59bc3e0783bd5e1657ef7b1b.zip |
fix SMAPI's display device not hooked correctly in split-screen mode
-rw-r--r-- | docs/release-notes.md | 3 | ||||
-rw-r--r-- | src/SMAPI/Framework/SCore.cs | 6 | ||||
-rw-r--r-- | src/SMAPI/Framework/SGame.cs | 14 | ||||
-rw-r--r-- | src/SMAPI/Framework/SGameRunner.cs | 10 |
4 files changed, 20 insertions, 13 deletions
diff --git a/docs/release-notes.md b/docs/release-notes.md index 25698ffa..c03b6005 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -5,6 +5,9 @@ * For players: * Fixed mod edits to the farmhouse shifting the player down one tile in some cases. +* For mod authors: + * Fixed map tile rotations/flips not working for farmhands in split-screen mode. + ## 3.12.7 Released 18 September 2021 for Stardew Valley 1.5.4. diff --git a/src/SMAPI/Framework/SCore.cs b/src/SMAPI/Framework/SCore.cs index 86b69239..6dffb1de 100644 --- a/src/SMAPI/Framework/SCore.cs +++ b/src/SMAPI/Framework/SCore.cs @@ -247,7 +247,7 @@ namespace StardewModdingAPI.Framework multiplayer: this.Multiplayer, exitGameImmediately: this.ExitGameImmediately, - onGameContentLoaded: this.OnGameContentLoaded, + onGameContentLoaded: this.OnInstanceContentLoaded, onGameUpdating: this.OnGameUpdating, onPlayerInstanceUpdating: this.OnPlayerInstanceUpdating, onGameExiting: this.OnGameExiting @@ -429,8 +429,8 @@ namespace StardewModdingAPI.Framework ).Start(); } - /// <summary>Raised after the game finishes loading its initial content.</summary> - private void OnGameContentLoaded() + /// <summary>Raised after an instance finishes loading its initial content.</summary> + private void OnInstanceContentLoaded() { // override map display device Game1.mapDisplayDevice = new SDisplayDevice(Game1.content, Game1.game1.GraphicsDevice); diff --git a/src/SMAPI/Framework/SGame.cs b/src/SMAPI/Framework/SGame.cs index 55ab8377..4e134455 100644 --- a/src/SMAPI/Framework/SGame.cs +++ b/src/SMAPI/Framework/SGame.cs @@ -54,6 +54,9 @@ namespace StardewModdingAPI.Framework /// <summary>Raised when the instance is updating its state (roughly 60 times per second).</summary> private readonly Action<SGame, GameTime, Action> OnUpdating; + /// <summary>Raised after the instance finishes loading its initial content.</summary> + private readonly Action OnContentLoaded; + /********* ** Accessors @@ -106,7 +109,8 @@ namespace StardewModdingAPI.Framework /// <param name="multiplayer">The core multiplayer logic.</param> /// <param name="exitGameImmediately">Immediately exit the game without saving. This should only be invoked when an irrecoverable fatal error happens that risks save corruption or game-breaking bugs.</param> /// <param name="onUpdating">Raised when the instance is updating its state (roughly 60 times per second).</param> - public SGame(PlayerIndex playerIndex, int instanceIndex, Monitor monitor, Reflector reflection, EventManager eventManager, SInputState input, SModHooks modHooks, SMultiplayer multiplayer, Action<string> exitGameImmediately, Action<SGame, GameTime, Action> onUpdating) + /// <param name="onContentLoaded">Raised after the game finishes loading its initial content.</param> + public SGame(PlayerIndex playerIndex, int instanceIndex, Monitor monitor, Reflector reflection, EventManager eventManager, SInputState input, SModHooks modHooks, SMultiplayer multiplayer, Action<string> exitGameImmediately, Action<SGame, GameTime, Action> onUpdating, Action onContentLoaded) : base(playerIndex, instanceIndex) { // init XNA @@ -124,6 +128,7 @@ namespace StardewModdingAPI.Framework this.Reflection = reflection; this.ExitGameImmediately = exitGameImmediately; this.OnUpdating = onUpdating; + this.OnContentLoaded = onContentLoaded; } /// <summary>Get the current input state for a button.</summary> @@ -138,6 +143,13 @@ namespace StardewModdingAPI.Framework return input.GetState(button); } + /// <inheritdoc /> + protected override void LoadContent() + { + base.LoadContent(); + + this.OnContentLoaded(); + } /********* ** Protected methods diff --git a/src/SMAPI/Framework/SGameRunner.cs b/src/SMAPI/Framework/SGameRunner.cs index 45e7369c..b816bb7c 100644 --- a/src/SMAPI/Framework/SGameRunner.cs +++ b/src/SMAPI/Framework/SGameRunner.cs @@ -94,7 +94,7 @@ namespace StardewModdingAPI.Framework public override Game1 CreateGameInstance(PlayerIndex playerIndex = PlayerIndex.One, int instanceIndex = 0) { SInputState inputState = new SInputState(); - return new SGame(playerIndex, instanceIndex, this.Monitor, this.Reflection, this.Events, inputState, this.ModHooks, this.Multiplayer, this.ExitGameImmediately, this.OnPlayerInstanceUpdating); + return new SGame(playerIndex, instanceIndex, this.Monitor, this.Reflection, this.Events, inputState, this.ModHooks, this.Multiplayer, this.ExitGameImmediately, this.OnPlayerInstanceUpdating, this.OnGameContentLoaded); } /// <inheritdoc /> @@ -129,14 +129,6 @@ namespace StardewModdingAPI.Framework /********* ** Protected methods *********/ - /// <summary>Load content when the game is launched.</summary> - protected override void LoadContent() - { - base.LoadContent(); - - this.OnGameContentLoaded(); - } - /// <summary>Perform cleanup logic when the game exits.</summary> /// <param name="sender">The event sender.</param> /// <param name="args">The event args.</param> |