using System; using StardewModdingAPI.Events; namespace StardewModdingAPI.Framework.Events { /// Events raised when something changes in the world. public class ModWorldEvents : IWorldEvents { /********* ** Properties *********/ /// The underlying event manager. private readonly EventManager EventManager; /// The mod which uses this instance. private readonly IModMetadata Mod; /********* ** Accessors *********/ /// Raised after a game location is added or removed. public event EventHandler LocationListChanged { add => this.EventManager.World_LocationListChanged.Add(value, this.Mod); remove => this.EventManager.World_LocationListChanged.Remove(value); } /// Raised after buildings are added or removed in a location. public event EventHandler BuildingListChanged { add => this.EventManager.World_BuildingListChanged.Add(value, this.Mod); remove => this.EventManager.World_BuildingListChanged.Remove(value); } /// Raised after objects are added or removed in a location. public event EventHandler ObjectListChanged { add => this.EventManager.World_ObjectListChanged.Add(value); remove => this.EventManager.World_ObjectListChanged.Remove(value); } /********* ** Public methods *********/ /// Construct an instance. /// The mod which uses this instance. /// The underlying event manager. internal ModWorldEvents(IModMetadata mod, EventManager eventManager) { this.Mod = mod; this.EventManager = eventManager; } } }