From 812251e7ae532d7a2f10d46ff366bf19e67e88d0 Mon Sep 17 00:00:00 2001
From: Jesse Plamondon-Willard <Pathoschild@users.noreply.github.com>
Date: Fri, 15 Jan 2021 18:48:31 -0500
Subject: allow getting all active values from a PerScreen<T> field

---
 src/SMAPI/Utilities/PerScreen.cs | 7 +++++++
 1 file changed, 7 insertions(+)

(limited to 'src/SMAPI')

diff --git a/src/SMAPI/Utilities/PerScreen.cs b/src/SMAPI/Utilities/PerScreen.cs
index 60406d6b..20b8fbce 100644
--- a/src/SMAPI/Utilities/PerScreen.cs
+++ b/src/SMAPI/Utilities/PerScreen.cs
@@ -47,6 +47,13 @@ namespace StardewModdingAPI.Utilities
             this.CreateNewState = createNewState ?? (() => default);
         }
 
+        /// <summary>Get all active values by screen ID. This doesn't initialize the value for a screen ID if it's not created yet.</summary>
+        public IEnumerable<KeyValuePair<int, T>> GetActiveValues()
+        {
+            this.RemoveDeadScreens();
+            return this.States.ToArray();
+        }
+
         /// <summary>Get the value for a given screen ID, creating it if needed.</summary>
         /// <param name="screenId">The screen ID to check.</param>
         public T GetValueForScreen(int screenId)
-- 
cgit