fix cursor position not updated in edge case
This commit is contained in:
parent
e627a8a5e5
commit
11c080962b
|
@ -14,6 +14,7 @@
|
|||
* Fixed `Constants.SaveFolderName` and `CurrentSavePath` not available during early load stages when using `Specialised.LoadStageChanged` event.
|
||||
* Fixed `LoadStage.SaveParsed` raised before the parsed save data is available.
|
||||
* Fixed 'unknown mod' deprecation warnings showing the wrong stack trace.
|
||||
* Fixed `e.Cursor` in input events showing wrong grab tile when player using a controller moves without moving the viewpoint.
|
||||
|
||||
## 2.10.1
|
||||
Released 30 December 2018 for Stardew Valley 1.3.32.
|
||||
|
|
|
@ -20,6 +20,9 @@ namespace StardewModdingAPI.Framework.Input
|
|||
/// <summary>The cursor position on the screen adjusted for the zoom level.</summary>
|
||||
private CursorPosition CursorPositionImpl;
|
||||
|
||||
/// <summary>The player's last known tile position.</summary>
|
||||
private Vector2? LastPlayerTile;
|
||||
|
||||
|
||||
/*********
|
||||
** Accessors
|
||||
|
@ -83,13 +86,14 @@ namespace StardewModdingAPI.Framework.Input
|
|||
MouseState realMouse = Mouse.GetState();
|
||||
var activeButtons = this.DeriveStatuses(this.ActiveButtons, realKeyboard, realMouse, realController);
|
||||
Vector2 cursorAbsolutePos = new Vector2(realMouse.X + Game1.viewport.X, realMouse.Y + Game1.viewport.Y);
|
||||
Vector2? playerTilePos = Context.IsPlayerFree ? Game1.player.getTileLocation() : (Vector2?)null;
|
||||
|
||||
// update real states
|
||||
this.ActiveButtons = activeButtons;
|
||||
this.RealController = realController;
|
||||
this.RealKeyboard = realKeyboard;
|
||||
this.RealMouse = realMouse;
|
||||
if (this.CursorPositionImpl?.AbsolutePixels != cursorAbsolutePos)
|
||||
if (cursorAbsolutePos != this.CursorPositionImpl?.AbsolutePixels || playerTilePos != this.LastPlayerTile)
|
||||
this.CursorPositionImpl = this.GetCursorPosition(realMouse, cursorAbsolutePos);
|
||||
|
||||
// update suppressed states
|
||||
|
|
Loading…
Reference in New Issue