summaryrefslogtreecommitdiff
path: root/src/SMAPI/Framework
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2021-09-27 17:06:15 -0400
committerJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2021-09-27 17:06:15 -0400
commitab8599583e549bda59bc3e0783bd5e1657ef7b1b (patch)
tree6096cc071f3693cdc2c5268ec347005c223b1075 /src/SMAPI/Framework
parent31e31538f128f2a79b553a2cc20fe8a6f13e8a06 (diff)
downloadSMAPI-ab8599583e549bda59bc3e0783bd5e1657ef7b1b.tar.gz
SMAPI-ab8599583e549bda59bc3e0783bd5e1657ef7b1b.tar.bz2
SMAPI-ab8599583e549bda59bc3e0783bd5e1657ef7b1b.zip
fix SMAPI's display device not hooked correctly in split-screen mode
Diffstat (limited to 'src/SMAPI/Framework')
-rw-r--r--src/SMAPI/Framework/SCore.cs6
-rw-r--r--src/SMAPI/Framework/SGame.cs14
-rw-r--r--src/SMAPI/Framework/SGameRunner.cs10
3 files changed, 17 insertions, 13 deletions
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>