using StardewModdingAPI.Events;
namespace StardewModdingAPI.Framework.Events
{
/// Manages access to events raised by SMAPI.
internal class ModEvents : IModEvents
{
/*********
** Accessors
*********/
/// Events related to UI and drawing to the screen.
public IDisplayEvents Display { get; }
/// Events linked to the game's update loop. The update loop runs roughly ≈60 times/second to run game logic like state changes, action handling, etc. These can be useful, but you should consider more semantic events like if possible.
public IGameLoopEvents GameLoop { get; }
/// Events raised when the player provides input using a controller, keyboard, or mouse.
public IInputEvents Input { get; }
/// Events raised for multiplayer messages and connections.
public IMultiplayerEvents Multiplayer { get; }
/// Events raised when the player data changes.
public IPlayerEvents Player { get; }
/// Events raised when something changes in the world.
public IWorldEvents World { get; }
/// Events serving specialized edge cases that shouldn't be used by most mods.
public ISpecializedEvents Specialized { get; }
/*********
** Public methods
*********/
/// Construct an instance.
/// The mod which uses this instance.
/// The underlying event manager.
public ModEvents(IModMetadata mod, EventManager eventManager)
{
this.Display = new ModDisplayEvents(mod, eventManager);
this.GameLoop = new ModGameLoopEvents(mod, eventManager);
this.Input = new ModInputEvents(mod, eventManager);
this.Multiplayer = new ModMultiplayerEvents(mod, eventManager);
this.Player = new ModPlayerEvents(mod, eventManager);
this.World = new ModWorldEvents(mod, eventManager);
this.Specialized = new ModSpecializedEvents(mod, eventManager);
}
}
}