using System; using HarmonyLib; namespace UXAssist.Common; /// /// Provides game lifecycle events for UXAssist and dependent mods. /// public class GameLogic : PatchImpl { /// /// Raised after game data has finished loading. /// public static Action OnDataLoaded; /// /// Raised when a game session begins. /// public static Action OnGameBegin; /// /// Raised when a game session ends. /// public static Action OnGameEnd; /// /// Harmony postfix for . /// Raises . /// [HarmonyPostfix] [HarmonyPatch(typeof(VFPreload), nameof(VFPreload.InvokeOnLoadWorkEnded))] public static void VFPreload_InvokeOnLoadWorkEnded_Postfix() { OnDataLoaded.InvokeSafe(UXAssist.Logger, nameof(OnDataLoaded)); } /// /// Harmony postfix for . /// Raises . /// [HarmonyPostfix, HarmonyPriority(Priority.First)] [HarmonyPatch(typeof(GameMain), nameof(GameMain.Begin))] public static void GameMain_Begin_Postfix() { OnGameBegin.InvokeSafe(UXAssist.Logger, nameof(OnGameBegin)); } /// /// Harmony postfix for . /// Raises . /// [HarmonyPostfix, HarmonyPriority(Priority.Last)] [HarmonyPatch(typeof(GameMain), nameof(GameMain.End))] public static void GameMain_End_Postfix() { OnGameEnd.InvokeSafe(UXAssist.Logger, nameof(OnGameEnd)); } }