From d741f46aab9b08f6a46d79291c59a2185b157780 Mon Sep 17 00:00:00 2001 From: ClxS Date: Thu, 3 Mar 2016 20:36:53 +0000 Subject: Added event for when item is placed on ground --- StardewModdingAPI/EventArgs.cs | 12 +++++++++++- StardewModdingAPI/Events.cs | 7 +++++++ StardewModdingAPI/Inheritance/SGame.cs | 8 ++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) (limited to 'StardewModdingAPI') diff --git a/StardewModdingAPI/EventArgs.cs b/StardewModdingAPI/EventArgs.cs index c8119bf8..cb7324c9 100644 --- a/StardewModdingAPI/EventArgs.cs +++ b/StardewModdingAPI/EventArgs.cs @@ -1,4 +1,5 @@ -using Microsoft.Xna.Framework.Input; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Input; using StardewValley; using StardewValley.Menus; using System; @@ -60,6 +61,15 @@ namespace StardewModdingAPI public List NewLocations { get; private set; } } + public class EventArgsLocationObjectsChanged : EventArgs + { + public EventArgsLocationObjectsChanged(SerializableDictionary newObjects) + { + NewObjects = newObjects; + } + public SerializableDictionary NewObjects { get; private set; } + } + public class EventArgsCurrentLocationChanged : EventArgs { public EventArgsCurrentLocationChanged(GameLocation priorLocation, GameLocation newLocation) diff --git a/StardewModdingAPI/Events.cs b/StardewModdingAPI/Events.cs index 3ae861d9..de1c24bc 100644 --- a/StardewModdingAPI/Events.cs +++ b/StardewModdingAPI/Events.cs @@ -6,6 +6,7 @@ using System.Threading.Tasks; using Microsoft.Xna.Framework.Input; using StardewValley; using StardewValley.Menus; +using Microsoft.Xna.Framework; namespace StardewModdingAPI { @@ -22,6 +23,7 @@ namespace StardewModdingAPI public static event EventHandler MouseChanged = delegate { }; public static event EventHandler MenuChanged = delegate { }; public static event EventHandler LocationsChanged = delegate { }; + public static event EventHandler LocationObjectsChanged = delegate { }; public static event EventHandler CurrentLocationChanged = delegate { }; public static event EventHandler Resize = delegate { }; public static event EventHandler FarmerChanged = delegate { }; @@ -142,5 +144,10 @@ namespace StardewModdingAPI { SeasonOfYearChanged.Invoke(null, new EventArgsStringChanged(priorString, newString)); } + + internal static void InvokeOnNewLocationObject(SerializableDictionary newObjects) + { + LocationObjectsChanged.Invoke(null, new EventArgsLocationObjectsChanged(newObjects)); + } } } diff --git a/StardewModdingAPI/Inheritance/SGame.cs b/StardewModdingAPI/Inheritance/SGame.cs index 21fbea70..83f8e335 100644 --- a/StardewModdingAPI/Inheritance/SGame.cs +++ b/StardewModdingAPI/Inheritance/SGame.cs @@ -44,6 +44,8 @@ namespace StardewModdingAPI.Inheritance } public int PreviousGameLocations { get; private set; } + public int PreviousLocationObjects { get; private set; } + public GameLocation PreviousGameLocation { get; private set; } public IClickableMenu PreviousActiveMenu { get; private set; } @@ -261,6 +263,12 @@ namespace StardewModdingAPI.Inheritance PreviousFarmer = player; } + if(currentLocation != null && PreviousLocationObjects != currentLocation.objects.GetHash()) + { + Events.InvokeOnNewLocationObject(currentLocation.objects); + PreviousLocationObjects = currentLocation.objects.GetHash(); + } + if (timeOfDay != PreviousTimeOfDay) { Events.InvokeTimeOfDayChanged(PreviousTimeOfDay, timeOfDay); -- cgit