From 251ee2121a870bd8210830a8bdb943f64c00e030 Mon Sep 17 00:00:00 2001
From: Jesse Plamondon-Willard <Pathoschild@users.noreply.github.com>
Date: Sat, 2 Jan 2021 12:33:19 -0500
Subject: fix players in split-screen mode sharing peer state (#747)

---
 src/SMAPI/Framework/SMultiplayer.cs | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

(limited to 'src/SMAPI')

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
         /// <summary>Whether to log network traffic.</summary>
         private readonly bool LogNetworkTraffic;
 
+        /// <summary>The backing field for <see cref="Peers"/>.</summary>
+        private readonly PerScreen<IDictionary<long, MultiplayerPeer>> PeersImpl = new(() => new Dictionary<long, MultiplayerPeer>());
+
+        /// <summary>The backing field for <see cref="HostPeer"/>.</summary>
+        private readonly PerScreen<MultiplayerPeer> HostPeerImpl = new();
+
 
         /*********
         ** Accessors
         *********/
         /// <summary>The metadata for each connected peer.</summary>
-        public IDictionary<long, MultiplayerPeer> Peers { get; } = new Dictionary<long, MultiplayerPeer>();
+        public IDictionary<long, MultiplayerPeer> Peers => this.PeersImpl.Value;
 
         /// <summary>The metadata for the host player, if the current player is a farmhand.</summary>
-        public MultiplayerPeer HostPeer;
+        public MultiplayerPeer HostPeer
+        {
+            get => this.HostPeerImpl.Value;
+            private set => this.HostPeerImpl.Value = value;
+        }
 
 
         /*********
-- 
cgit