From c7e0c9f9d3b9e7ca6f66d46daa65daf77ba79b0c Mon Sep 17 00:00:00 2001 From: ManlyMarco Date: Fri, 8 Oct 2021 19:45:48 +0200 Subject: [PATCH] [KK, KKS] Add GameAPI.DayChange, PeriodChange and NewGame events --- src/KKAPI/MainGame/GameApi.cs | 65 ++++++++++++++++++++++++++++++++++ src/KKSAPI/MainGame/GameApi.cs | 65 ++++++++++++++++++++++++++++++++++ 2 files changed, 130 insertions(+) diff --git a/src/KKAPI/MainGame/GameApi.cs b/src/KKAPI/MainGame/GameApi.cs index 9723905..aecc7f8 100644 --- a/src/KKAPI/MainGame/GameApi.cs +++ b/src/KKAPI/MainGame/GameApi.cs @@ -55,6 +55,24 @@ public static partial class GameAPI /// public static event EventHandler GameSave; + /// + /// Triggered when the current day changes in story mode. + /// Runs immediately after all objects trigger their events. + /// + public static event EventHandler DayChange; + + /// + /// Triggered when the current time of the day changes in story mode. + /// Runs immediately after all objects trigger their events. + /// + public static event EventHandler PeriodChange; + + /// + /// Triggered when a new game is started in story mode. + /// Runs immediately after all objects trigger their events. + /// + public static event EventHandler NewGame; + /// /// True if any sort of H scene is currently loaded. /// @@ -364,6 +382,15 @@ private static void OnDayChange(Cycle.Week day) KoikatuAPI.Logger.LogError(e); } } + + try + { + DayChange?.Invoke(KoikatuAPI.Instance, new DayChangeEventArgs(day)); + } + catch (Exception e) + { + KoikatuAPI.Logger.LogError(e); + } } private static void OnPeriodChange(Cycle.Type period) @@ -379,6 +406,15 @@ private static void OnPeriodChange(Cycle.Type period) KoikatuAPI.Logger.LogError(e); } } + + try + { + PeriodChange?.Invoke(KoikatuAPI.Instance, new PeriodChangeEventArgs(period)); + } + catch (Exception e) + { + KoikatuAPI.Logger.LogError(e); + } } private static void OnNewGame() @@ -394,6 +430,35 @@ private static void OnNewGame() KoikatuAPI.Logger.LogError(e); } } + + try + { + NewGame?.Invoke(KoikatuAPI.Instance, EventArgs.Empty); + } + catch (Exception e) + { + KoikatuAPI.Logger.LogError(e); + } + } + + public class DayChangeEventArgs : EventArgs + { + public DayChangeEventArgs(Cycle.Week newDay) + { + NewDay = newDay; + } + + public Cycle.Week NewDay { get; } + } + + public class PeriodChangeEventArgs : EventArgs + { + public PeriodChangeEventArgs(Cycle.Type period) + { + NewPeriod = period; + } + + public Cycle.Type NewPeriod { get; } } } } diff --git a/src/KKSAPI/MainGame/GameApi.cs b/src/KKSAPI/MainGame/GameApi.cs index 1db2e79..d8fede2 100644 --- a/src/KKSAPI/MainGame/GameApi.cs +++ b/src/KKSAPI/MainGame/GameApi.cs @@ -55,6 +55,24 @@ public static partial class GameAPI /// public static event EventHandler GameSave; + /// + /// Triggered when the current day changes in story mode. + /// Runs immediately after all objects trigger their events. + /// + public static event EventHandler DayChange; + + /// + /// Triggered when the current time of the day changes in story mode. + /// Runs immediately after all objects trigger their events. + /// + public static event EventHandler PeriodChange; + + /// + /// Triggered when a new game is started in story mode. + /// Runs immediately after all objects trigger their events. + /// + public static event EventHandler NewGame; + /// /// True if any sort of H scene is currently loaded. /// @@ -357,6 +375,15 @@ private static void OnDayChange(Cycle.Week day) KoikatuAPI.Logger.LogError(e); } } + + try + { + DayChange?.Invoke(KoikatuAPI.Instance, new DayChangeEventArgs(day)); + } + catch (Exception e) + { + KoikatuAPI.Logger.LogError(e); + } } private static void OnPeriodChange(Cycle.Type period) @@ -372,6 +399,15 @@ private static void OnPeriodChange(Cycle.Type period) KoikatuAPI.Logger.LogError(e); } } + + try + { + PeriodChange?.Invoke(KoikatuAPI.Instance, new PeriodChangeEventArgs(period)); + } + catch (Exception e) + { + KoikatuAPI.Logger.LogError(e); + } } private static void OnNewGame() @@ -387,6 +423,35 @@ private static void OnNewGame() KoikatuAPI.Logger.LogError(e); } } + + try + { + NewGame?.Invoke(KoikatuAPI.Instance, EventArgs.Empty); + } + catch (Exception e) + { + KoikatuAPI.Logger.LogError(e); + } + } + + public class DayChangeEventArgs : EventArgs + { + public DayChangeEventArgs(Cycle.Week newDay) + { + NewDay = newDay; + } + + public Cycle.Week NewDay { get; } + } + + public class PeriodChangeEventArgs : EventArgs + { + public PeriodChangeEventArgs(Cycle.Type period) + { + NewPeriod = period; + } + + public Cycle.Type NewPeriod { get; } } } }