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; } } } }