From 251ee2121a870bd8210830a8bdb943f64c00e030 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Sat, 2 Jan 2021 12:33:19 -0500 Subject: fix players in split-screen mode sharing peer state (#747) --- docs/release-notes.md | 1 + src/SMAPI/Framework/SMultiplayer.cs | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/docs/release-notes.md b/docs/release-notes.md index dcd638a3..a12a5482 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -10,6 +10,7 @@ ## Upcoming release * For players: * Updated compatibility list. + * Fixed errors when multiple players join in split-screen mode. * Fixed 'skipped mods' section repeating mods in some cases. * For modders: diff --git a/src/SMAPI/Framework/SMultiplayer.cs b/src/SMAPI/Framework/SMultiplayer.cs index f3b5e9b9..2f89fce9 100644 --- a/src/SMAPI/Framework/SMultiplayer.cs +++ b/src/SMAPI/Framework/SMultiplayer.cs @@ -10,6 +10,7 @@ using StardewModdingAPI.Framework.Events; using StardewModdingAPI.Framework.Networking; using StardewModdingAPI.Framework.Reflection; using StardewModdingAPI.Toolkit.Serialization; +using StardewModdingAPI.Utilities; using StardewValley; using StardewValley.Network; using StardewValley.SDKs; @@ -54,15 +55,25 @@ namespace StardewModdingAPI.Framework /// Whether to log network traffic. private readonly bool LogNetworkTraffic; + /// The backing field for . + private readonly PerScreen> PeersImpl = new(() => new Dictionary()); + + /// The backing field for . + private readonly PerScreen HostPeerImpl = new(); + /********* ** Accessors *********/ /// The metadata for each connected peer. - public IDictionary Peers { get; } = new Dictionary(); + public IDictionary Peers => this.PeersImpl.Value; /// The metadata for the host player, if the current player is a farmhand. - public MultiplayerPeer HostPeer; + public MultiplayerPeer HostPeer + { + get => this.HostPeerImpl.Value; + private set => this.HostPeerImpl.Value = value; + } /********* -- cgit