using System;
namespace StardewModdingAPI.Events
{
///
///
///
public static class GraphicsEvents
{
///
/// Occurs when the form (game) is resized.
///
public static event EventHandler Resize = delegate { };
///
/// Occurs before anything is drawn.
///
public static event EventHandler OnPreRenderEvent = delegate { };
///
/// Occurs before the GUI is drawn.
///
public static event EventHandler OnPreRenderGuiEvent = delegate { };
///
/// Occurs after the GUI is drawn.
///
public static event EventHandler OnPostRenderGuiEvent = delegate { };
///
/// Occurs before the HUD is drawn.
///
public static event EventHandler OnPreRenderHudEvent = delegate { };
///
/// Occurs after the HUD is drawn.
///
public static event EventHandler OnPostRenderHudEvent = delegate { };
///
/// Occurs after everything is drawn.
///
public static event EventHandler OnPostRenderEvent = delegate { };
///
/// Draws when SGame.Debug is true. F3 toggles this.
/// Game1.spriteBatch.Begin() is pre-called.
/// Do not make end or begin calls to the spritebatch.
/// If you are only trying to add debug information, use SGame.DebugMessageQueue in your Update loop.
///
public static event EventHandler DrawDebug = delegate { };
internal static void InvokeDrawDebug(object sender, EventArgs e)
{
DrawDebug.Invoke(sender, e);
}
internal static void InvokeOnPreRenderEvent(object sender, EventArgs e)
{
OnPreRenderEvent.Invoke(sender, e);
}
internal static void InvokeOnPreRenderGuiEvent(object sender, EventArgs e)
{
OnPreRenderGuiEvent.Invoke(sender, e);
}
internal static void InvokeOnPostRenderGuiEvent(object sender, EventArgs e)
{
OnPostRenderGuiEvent.Invoke(sender, e);
}
internal static void InvokeOnPreRenderHudEvent(object sender, EventArgs e)
{
OnPreRenderHudEvent.Invoke(sender, e);
}
internal static void InvokeOnPostRenderHudEvent(object sender, EventArgs e)
{
OnPostRenderHudEvent.Invoke(sender, e);
}
internal static void InvokeOnPostRenderEvent(object sender, EventArgs e)
{
OnPostRenderEvent.Invoke(sender, e);
}
internal static void InvokeResize(object sender, EventArgs e)
{
Resize.Invoke(sender, e);
}
#region To Remove
[Obsolete("Use the other Pre/Post render events instead.")]
public static event EventHandler DrawTick = delegate { };
[Obsolete("Use the other Pre/Post render events instead. All of them will automatically be drawn into the render target if needed.")]
public static event EventHandler DrawInRenderTargetTick = delegate { };
[Obsolete("Should not be used.")]
public static void InvokeDrawTick()
{
try
{
DrawTick.Invoke(null, EventArgs.Empty);
}
catch (Exception ex)
{
Log.AsyncR("An exception occured in a Mod's DrawTick: " + ex);
}
}
[Obsolete("Should not be used.")]
public static void InvokeDrawInRenderTargetTick()
{
DrawInRenderTargetTick.Invoke(null, EventArgs.Empty);
}
#endregion
}
}