using System; namespace StardewModdingAPI.Events { public static class GameEvents { public static event EventHandler GameLoaded = delegate { }; public static event EventHandler Initialize = delegate { }; public static event EventHandler LoadContent = delegate { }; public static event EventHandler FirstUpdateTick = delegate { }; /// /// Fires every update (1/60 of a second) /// public static event EventHandler UpdateTick = delegate { }; /// /// Fires every other update (1/30 of a second) /// public static event EventHandler SecondUpdateTick = delegate { }; /// /// Fires every fourth update (1/15 of a second) /// public static event EventHandler FourthUpdateTick = delegate { }; /// /// Fires every eighth update (roughly 1/8 of a second) /// public static event EventHandler EighthUpdateTick = delegate { }; /// /// Fires every fifthteenth update (1/4 of a second) /// public static event EventHandler QuarterSecondTick = delegate { }; /// /// Fires every thirtieth update (1/2 of a second) /// public static event EventHandler HalfSecondTick = delegate { }; /// /// Fires every sixtieth update (a second) /// public static event EventHandler OneSecondTick = delegate { }; internal static void InvokeGameLoaded() { GameLoaded.Invoke(null, EventArgs.Empty); } internal static void InvokeInitialize() { try { Initialize.Invoke(null, EventArgs.Empty); } catch (Exception ex) { Log.AsyncR("An exception occured in XNA Initialize: " + ex); } } internal static void InvokeLoadContent() { try { LoadContent.Invoke(null, EventArgs.Empty); } catch (Exception ex) { Log.AsyncR("An exception occured in XNA LoadContent: " + ex); } } internal static void InvokeUpdateTick() { try { UpdateTick.Invoke(null, EventArgs.Empty); } catch (Exception ex) { Log.AsyncR("An exception occured in XNA UpdateTick: " + ex); } } internal static void InvokeSecondUpdateTick() { SecondUpdateTick.Invoke(null, EventArgs.Empty); } internal static void InvokeFourthUpdateTick() { FourthUpdateTick.Invoke(null, EventArgs.Empty); } internal static void InvokeEighthUpdateTick() { EighthUpdateTick.Invoke(null, EventArgs.Empty); } internal static void InvokeQuarterSecondTick() { QuarterSecondTick.Invoke(null, EventArgs.Empty); } internal static void InvokeHalfSecondTick() { HalfSecondTick.Invoke(null, EventArgs.Empty); } internal static void InvokeOneSecondTick() { OneSecondTick.Invoke(null, EventArgs.Empty); } internal static void InvokeFirstUpdateTick() { FirstUpdateTick.Invoke(null, EventArgs.Empty); } } }