From d76476ca687a4936cc610380e2b3902db137bced Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Sun, 21 Jan 2018 02:14:28 -0500 Subject: add before/after save creation events (#429) This supports mods like Custom Farm Types that need to intercept the very first save, which doesn't raise the normal save events since the world isn't fully initialised yet. --- src/SMAPI/Events/SaveEvents.cs | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'src/SMAPI/Events') diff --git a/src/SMAPI/Events/SaveEvents.cs b/src/SMAPI/Events/SaveEvents.cs index 50e6d729..99b6c8d2 100644 --- a/src/SMAPI/Events/SaveEvents.cs +++ b/src/SMAPI/Events/SaveEvents.cs @@ -1,4 +1,4 @@ -using System; +using System; using StardewModdingAPI.Framework; namespace StardewModdingAPI.Events @@ -9,6 +9,12 @@ namespace StardewModdingAPI.Events /********* ** Events *********/ + /// Raised before the game creates the save file. + public static event EventHandler BeforeCreate; + + /// Raised after the game finishes creating the save file. + public static event EventHandler AfterCreate; + /// Raised before the game begins writes data to the save file. public static event EventHandler BeforeSave; @@ -25,6 +31,20 @@ namespace StardewModdingAPI.Events /********* ** Internal methods *********/ + /// Raise a event. + /// Encapsulates monitoring and logging. + internal static void InvokeBeforeCreate(IMonitor monitor) + { + monitor.SafelyRaisePlainEvent($"{nameof(SaveEvents)}.{nameof(SaveEvents.BeforeCreate)}", SaveEvents.BeforeCreate?.GetInvocationList(), null, EventArgs.Empty); + } + + /// Raise a event. + /// Encapsulates monitoring and logging. + internal static void InvokeAfterCreated(IMonitor monitor) + { + monitor.SafelyRaisePlainEvent($"{nameof(SaveEvents)}.{nameof(SaveEvents.AfterCreate)}", SaveEvents.AfterCreate?.GetInvocationList(), null, EventArgs.Empty); + } + /// Raise a event. /// Encapsulates monitoring and logging. internal static void InvokeBeforeSave(IMonitor monitor) -- cgit