add mouse scroll event (#310)
This commit is contained in:
parent
74971f5328
commit
90f55a6921
|
@ -13,5 +13,8 @@ namespace StardewModdingAPI.Events
|
||||||
|
|
||||||
/// <summary>Raised after the player moves the in-game cursor.</summary>
|
/// <summary>Raised after the player moves the in-game cursor.</summary>
|
||||||
event EventHandler<InputCursorMovedArgsInput> CursorMoved;
|
event EventHandler<InputCursorMovedArgsInput> CursorMoved;
|
||||||
|
|
||||||
|
/// <summary>Raised after the player scrolls the mouse wheel.</summary>
|
||||||
|
event EventHandler<InputMouseWheelScrolledEventArgs> MouseWheelScrolled;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace StardewModdingAPI.Events
|
||||||
|
{
|
||||||
|
/// <summary>Event arguments when the player scrolls the mouse wheel.</summary>
|
||||||
|
public class InputMouseWheelScrolledEventArgs : EventArgs
|
||||||
|
{
|
||||||
|
/*********
|
||||||
|
** Accessors
|
||||||
|
*********/
|
||||||
|
/// <summary>The cursor position.</summary>
|
||||||
|
public ICursorPosition Position { get; }
|
||||||
|
|
||||||
|
/// <summary>The old scroll value.</summary>
|
||||||
|
public int OldValue { get; }
|
||||||
|
|
||||||
|
/// <summary>The new scroll value.</summary>
|
||||||
|
public int NewValue { get; }
|
||||||
|
|
||||||
|
/// <summary>The amount by which the scroll value changed.</summary>
|
||||||
|
public int Delta => this.NewValue - this.OldValue;
|
||||||
|
|
||||||
|
|
||||||
|
/*********
|
||||||
|
** Public methods
|
||||||
|
*********/
|
||||||
|
/// <summary>Construct an instance.</summary>
|
||||||
|
/// <param name="position">The cursor position.</param>
|
||||||
|
/// <param name="oldValue">The old scroll value.</param>
|
||||||
|
/// <param name="newValue">The new scroll value.</param>
|
||||||
|
public InputMouseWheelScrolledEventArgs(ICursorPosition position, int oldValue, int newValue)
|
||||||
|
{
|
||||||
|
this.Position = position;
|
||||||
|
this.OldValue = oldValue;
|
||||||
|
this.NewValue = newValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -44,6 +44,9 @@ namespace StardewModdingAPI.Framework.Events
|
||||||
/// <summary>Raised after the player moves the in-game cursor.</summary>
|
/// <summary>Raised after the player moves the in-game cursor.</summary>
|
||||||
public readonly ManagedEvent<InputCursorMovedArgsInput> Input_CursorMoved;
|
public readonly ManagedEvent<InputCursorMovedArgsInput> Input_CursorMoved;
|
||||||
|
|
||||||
|
/// <summary>Raised after the player scrolls the mouse wheel.</summary>
|
||||||
|
public readonly ManagedEvent<InputMouseWheelScrolledEventArgs> Input_MouseWheelScrolled;
|
||||||
|
|
||||||
|
|
||||||
/*********
|
/*********
|
||||||
** Events (old)
|
** Events (old)
|
||||||
|
@ -249,6 +252,7 @@ namespace StardewModdingAPI.Framework.Events
|
||||||
this.Input_ButtonPressed = ManageEventOf<InputButtonPressedArgsInput>(nameof(IModEvents.Input), nameof(IInputEvents.ButtonPressed));
|
this.Input_ButtonPressed = ManageEventOf<InputButtonPressedArgsInput>(nameof(IModEvents.Input), nameof(IInputEvents.ButtonPressed));
|
||||||
this.Input_ButtonReleased = ManageEventOf<InputButtonReleasedArgsInput>(nameof(IModEvents.Input), nameof(IInputEvents.ButtonReleased));
|
this.Input_ButtonReleased = ManageEventOf<InputButtonReleasedArgsInput>(nameof(IModEvents.Input), nameof(IInputEvents.ButtonReleased));
|
||||||
this.Input_CursorMoved = ManageEventOf<InputCursorMovedArgsInput>(nameof(IModEvents.Input), nameof(IInputEvents.CursorMoved));
|
this.Input_CursorMoved = ManageEventOf<InputCursorMovedArgsInput>(nameof(IModEvents.Input), nameof(IInputEvents.CursorMoved));
|
||||||
|
this.Input_MouseWheelScrolled = ManageEventOf<InputMouseWheelScrolledEventArgs>(nameof(IModEvents.Input), nameof(IInputEvents.MouseWheelScrolled));
|
||||||
|
|
||||||
this.World_BuildingListChanged = ManageEventOf<WorldBuildingListChangedEventArgs>(nameof(IModEvents.World), nameof(IWorldEvents.LocationListChanged));
|
this.World_BuildingListChanged = ManageEventOf<WorldBuildingListChangedEventArgs>(nameof(IModEvents.World), nameof(IWorldEvents.LocationListChanged));
|
||||||
this.World_LargeTerrainFeatureListChanged = ManageEventOf<WorldLargeTerrainFeatureListChangedEventArgs>(nameof(IModEvents.World), nameof(IWorldEvents.LargeTerrainFeatureListChanged));
|
this.World_LargeTerrainFeatureListChanged = ManageEventOf<WorldLargeTerrainFeatureListChangedEventArgs>(nameof(IModEvents.World), nameof(IWorldEvents.LargeTerrainFeatureListChanged));
|
||||||
|
|
|
@ -30,6 +30,13 @@ namespace StardewModdingAPI.Framework.Events
|
||||||
remove => this.EventManager.Input_CursorMoved.Remove(value);
|
remove => this.EventManager.Input_CursorMoved.Remove(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>Raised after the player scrolls the mouse wheel.</summary>
|
||||||
|
public event EventHandler<InputMouseWheelScrolledEventArgs> MouseWheelScrolled
|
||||||
|
{
|
||||||
|
add => this.EventManager.Input_MouseWheelScrolled.Add(value);
|
||||||
|
remove => this.EventManager.Input_MouseWheelScrolled.Remove(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*********
|
/*********
|
||||||
** Public methods
|
** Public methods
|
||||||
|
|
|
@ -103,6 +103,9 @@ namespace StardewModdingAPI.Framework
|
||||||
/// <summary>Tracks changes to the cursor position.</summary>
|
/// <summary>Tracks changes to the cursor position.</summary>
|
||||||
private readonly IValueWatcher<Point> CursorWatcher;
|
private readonly IValueWatcher<Point> CursorWatcher;
|
||||||
|
|
||||||
|
/// <summary>Tracks changes to the mouse wheel scroll.</summary>
|
||||||
|
private readonly IValueWatcher<int> MouseWheelScrollWatcher;
|
||||||
|
|
||||||
/// <summary>The previous content locale.</summary>
|
/// <summary>The previous content locale.</summary>
|
||||||
private LocalizedContentManager.LanguageCode? PreviousLocale;
|
private LocalizedContentManager.LanguageCode? PreviousLocale;
|
||||||
|
|
||||||
|
@ -172,6 +175,7 @@ namespace StardewModdingAPI.Framework
|
||||||
// init watchers
|
// init watchers
|
||||||
Game1.locations = new ObservableCollection<GameLocation>();
|
Game1.locations = new ObservableCollection<GameLocation>();
|
||||||
this.CursorWatcher = WatcherFactory.ForEquatable(() => this.Input.MousePosition);
|
this.CursorWatcher = WatcherFactory.ForEquatable(() => this.Input.MousePosition);
|
||||||
|
this.MouseWheelScrollWatcher = WatcherFactory.ForEquatable(() => this.Input.RealMouse.ScrollWheelValue);
|
||||||
this.SaveIdWatcher = WatcherFactory.ForEquatable(() => Game1.hasLoadedGame ? Game1.uniqueIDForThisGame : 0);
|
this.SaveIdWatcher = WatcherFactory.ForEquatable(() => Game1.hasLoadedGame ? Game1.uniqueIDForThisGame : 0);
|
||||||
this.WindowSizeWatcher = WatcherFactory.ForEquatable(() => new Point(Game1.viewport.Width, Game1.viewport.Height));
|
this.WindowSizeWatcher = WatcherFactory.ForEquatable(() => new Point(Game1.viewport.Width, Game1.viewport.Height));
|
||||||
this.TimeWatcher = WatcherFactory.ForEquatable(() => Game1.timeOfDay);
|
this.TimeWatcher = WatcherFactory.ForEquatable(() => Game1.timeOfDay);
|
||||||
|
@ -180,6 +184,7 @@ namespace StardewModdingAPI.Framework
|
||||||
this.Watchers.AddRange(new IWatcher[]
|
this.Watchers.AddRange(new IWatcher[]
|
||||||
{
|
{
|
||||||
this.CursorWatcher,
|
this.CursorWatcher,
|
||||||
|
this.MouseWheelScrollWatcher,
|
||||||
this.SaveIdWatcher,
|
this.SaveIdWatcher,
|
||||||
this.WindowSizeWatcher,
|
this.WindowSizeWatcher,
|
||||||
this.TimeWatcher,
|
this.TimeWatcher,
|
||||||
|
@ -468,6 +473,16 @@ namespace StardewModdingAPI.Framework
|
||||||
}
|
}
|
||||||
this.PreviousCursorPosition = cursor;
|
this.PreviousCursorPosition = cursor;
|
||||||
|
|
||||||
|
// raise mouse wheel scrolled
|
||||||
|
if (this.MouseWheelScrollWatcher.IsChanged)
|
||||||
|
{
|
||||||
|
int oldValue = this.MouseWheelScrollWatcher.PreviousValue;
|
||||||
|
int newValue = this.MouseWheelScrollWatcher.CurrentValue;
|
||||||
|
this.MouseWheelScrollWatcher.Reset();
|
||||||
|
|
||||||
|
this.Events.Input_MouseWheelScrolled.Raise(new InputMouseWheelScrolledEventArgs(cursor, oldValue, newValue));
|
||||||
|
}
|
||||||
|
|
||||||
// raise input button events
|
// raise input button events
|
||||||
foreach (var pair in inputState.ActiveButtons)
|
foreach (var pair in inputState.ActiveButtons)
|
||||||
{
|
{
|
||||||
|
|
|
@ -85,6 +85,7 @@
|
||||||
<Compile Include="..\..\build\GlobalAssemblyInfo.cs">
|
<Compile Include="..\..\build\GlobalAssemblyInfo.cs">
|
||||||
<Link>Properties\GlobalAssemblyInfo.cs</Link>
|
<Link>Properties\GlobalAssemblyInfo.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="Events\InputMouseWheelScrolledEventArgs.cs" />
|
||||||
<Compile Include="Events\InputCursorMovedEventArgs.cs" />
|
<Compile Include="Events\InputCursorMovedEventArgs.cs" />
|
||||||
<Compile Include="Events\InputButtonReleasedEventArgs.cs" />
|
<Compile Include="Events\InputButtonReleasedEventArgs.cs" />
|
||||||
<Compile Include="Events\InputButtonPressedEventArgs.cs" />
|
<Compile Include="Events\InputButtonPressedEventArgs.cs" />
|
||||||
|
|
Loading…
Reference in New Issue