Formatting and code cleanup; added documentation and some clarifying comments.
This commit is contained in:
		| @@ -8,9 +8,14 @@ using stardew_access.Features; | |||||||
|  |  | ||||||
| namespace stardew_access.Features | namespace stardew_access.Features | ||||||
| { | { | ||||||
|  |  | ||||||
|  |     /// <summary> | ||||||
|  |     /// Allows browsing of the map and snapping mouse to tiles with the arrow keys | ||||||
|  |     /// </summary> | ||||||
|     public class TileViewer |     public class TileViewer | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  |         //None of these positions take viewport into account; other functions are responsible later | ||||||
|         private Vector2 ViewingOffset = Vector2.Zero; |         private Vector2 ViewingOffset = Vector2.Zero; | ||||||
|         private Vector2 relativeOffsetLockPosition = Vector2.Zero; |         private Vector2 relativeOffsetLockPosition = Vector2.Zero; | ||||||
|         private Boolean relativeOffsetLock = false; |         private Boolean relativeOffsetLock = false; | ||||||
| @@ -46,7 +51,11 @@ namespace stardew_access.Features | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         private Vector2 getTileCursorPosition() |         /// <summary> | ||||||
|  |         /// Return the position of the tile cursor in pixels from the upper-left corner of the map. | ||||||
|  |         /// </summary> | ||||||
|  |         /// <returns>Vector2</returns> | ||||||
|  |         public Vector2 GetTileCursorPosition() | ||||||
|         { |         { | ||||||
|             Vector2 target = this.PlayerPosition; |             Vector2 target = this.PlayerPosition; | ||||||
|             if (this.relativeOffsetLock) |             if (this.relativeOffsetLock) | ||||||
| @@ -60,6 +69,19 @@ namespace stardew_access.Features | |||||||
|             return target; |             return target; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         /// <summary> | ||||||
|  |         /// Return the tile at the position of the tile cursor. | ||||||
|  |         /// </summary> | ||||||
|  |         /// <returns>Vector2</returns> | ||||||
|  |         public Vector2 GetViewingTile() | ||||||
|  |         { | ||||||
|  |             Vector2 position = this.GetTileCursorPosition(); | ||||||
|  |             return new Vector2((int)position.X / Game1.tileSize, (int)position.Y / Game1.tileSize); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         /// <summary> | ||||||
|  |         /// Handle keyboard input related to the tile viewer. | ||||||
|  |         /// </summary> | ||||||
|         public void HandleInput() |         public void HandleInput() | ||||||
|         { |         { | ||||||
|             if (MainClass.Config.ToggleRelativeCursorLockKey.JustPressed()) |             if (MainClass.Config.ToggleRelativeCursorLockKey.JustPressed()) | ||||||
| @@ -68,12 +90,14 @@ namespace stardew_access.Features | |||||||
|                 if (this.relativeOffsetLock) |                 if (this.relativeOffsetLock) | ||||||
|                 { |                 { | ||||||
|                     this.relativeOffsetLockPosition = this.PlayerFacingVector + this.ViewingOffset; |                     this.relativeOffsetLockPosition = this.PlayerFacingVector + this.ViewingOffset; | ||||||
|                 } else {  |                 } | ||||||
|  |                 else | ||||||
|  |                 { | ||||||
|                     this.relativeOffsetLockPosition = Vector2.Zero; |                     this.relativeOffsetLockPosition = Vector2.Zero; | ||||||
|                 } |                 } | ||||||
|                 MainClass.ScreenReader.Say("Relative cursor lock " + (this.relativeOffsetLock ? "enabled" : "disabled") + ".", true); |                 MainClass.ScreenReader.Say("Relative cursor lock " + (this.relativeOffsetLock ? "enabled" : "disabled") + ".", true); | ||||||
|             } |             } | ||||||
|                     else if (MainClass.Config.TileCursorPreciseUpKey.JustPressed()) |             else if (MainClass.Config.TileCursorPreciseUpKey.JustPressed()) | ||||||
|             { |             { | ||||||
|                 this.cursorMoveInput(new Vector2(0, -MainClass.Config.TileCursorPreciseMovementDistance), true); |                 this.cursorMoveInput(new Vector2(0, -MainClass.Config.TileCursorPreciseMovementDistance), true); | ||||||
|             } |             } | ||||||
| @@ -109,16 +133,18 @@ namespace stardew_access.Features | |||||||
|  |  | ||||||
|         private void cursorMoveInput(Vector2 delta, Boolean precise = false) |         private void cursorMoveInput(Vector2 delta, Boolean precise = false) | ||||||
|         { |         { | ||||||
|                         if (!tryMoveTileView(delta)) return; |             if (!tryMoveTileView(delta)) return; | ||||||
|             Vector2 position = this.getTileCursorPosition(); |             Vector2 position = this.GetTileCursorPosition(); | ||||||
|             Vector2 tile = new Vector2((float)Math.Floor(position.X / Game1.tileSize), (float)Math.Floor(position.Y / Game1.tileSize)); |             Vector2 tile = this.GetViewingTile(); | ||||||
|             String ?name = TileInfo.getNameAtTile(tile); |             String? name = TileInfo.getNameAtTile(tile); | ||||||
|             if (name == null) |             if (name == null) | ||||||
|             { |             { | ||||||
|  |                 // Report if a tile is empty or blocked if there is nothing on it | ||||||
|                 if (TileInfo.isCollidingAtTile((int)tile.X, (int)tile.Y)) |                 if (TileInfo.isCollidingAtTile((int)tile.X, (int)tile.Y)) | ||||||
|                 { |                 { | ||||||
|                     name = "blocked"; |                     name = "blocked"; | ||||||
|                 } else |                 } | ||||||
|  |                 else | ||||||
|                 { |                 { | ||||||
|                     name = "empty"; |                     name = "empty"; | ||||||
|                 } |                 } | ||||||
| @@ -135,14 +161,18 @@ namespace stardew_access.Features | |||||||
|  |  | ||||||
|         private bool tryMoveTileView(Vector2 delta) |         private bool tryMoveTileView(Vector2 delta) | ||||||
|         { |         { | ||||||
|             Vector2 dest = this.getTileCursorPosition() + delta; |             Vector2 dest = this.GetTileCursorPosition() + delta; | ||||||
|             if (!isPositionOnMap(dest)) return false; |             if (!isPositionOnMap(dest)) return false; | ||||||
|             if ((MainClass.Config.LimitTileCursorToScreen && Utility.isOnScreen(dest, 0)) || !MainClass.Config.LimitTileCursorToScreen) |             if ((MainClass.Config.LimitTileCursorToScreen && Utility.isOnScreen(dest, 0)) || !MainClass.Config.LimitTileCursorToScreen) | ||||||
|             { |             { | ||||||
|                 if (this.relativeOffsetLock) |                 if (this.relativeOffsetLock) | ||||||
|  |                 { | ||||||
|                     this.relativeOffsetLockPosition += delta; |                     this.relativeOffsetLockPosition += delta; | ||||||
|  |                 } | ||||||
|                 else |                 else | ||||||
|  |                 { | ||||||
|                     this.ViewingOffset += delta; |                     this.ViewingOffset += delta; | ||||||
|  |                 } | ||||||
|                 return true; |                 return true; | ||||||
|             } |             } | ||||||
|             return false; |             return false; | ||||||
| @@ -150,11 +180,15 @@ namespace stardew_access.Features | |||||||
|  |  | ||||||
|         private void SnapMouseToPlayer() |         private void SnapMouseToPlayer() | ||||||
|         { |         { | ||||||
|             Vector2 cursorPosition = this.getTileCursorPosition(); |             Vector2 cursorPosition = this.GetTileCursorPosition(); | ||||||
|                         if (allowMouseSnap(cursorPosition)) |             if (allowMouseSnap(cursorPosition)) | ||||||
|  |                 // Must account for viewport here | ||||||
|                 Game1.setMousePosition((int)cursorPosition.X - Game1.viewport.X, (int)cursorPosition.Y - Game1.viewport.Y); |                 Game1.setMousePosition((int)cursorPosition.X - Game1.viewport.X, (int)cursorPosition.Y - Game1.viewport.Y); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         /// <summary> | ||||||
|  |         /// Handle tile viewer logic. | ||||||
|  |         /// </summary> | ||||||
|         public void update() |         public void update() | ||||||
|         { |         { | ||||||
|             //Reset the viewing cursor to the player when they turn or move. This will not reset the locked offset relative cursor position. |             //Reset the viewing cursor to the player when they turn or move. This will not reset the locked offset relative cursor position. | ||||||
| @@ -170,11 +204,13 @@ namespace stardew_access.Features | |||||||
|  |  | ||||||
|         private static bool allowMouseSnap(Vector2 point) |         private static bool allowMouseSnap(Vector2 point) | ||||||
|         { |         { | ||||||
|  |             // Utility.isOnScreen treats a vector as a pixel position, not a tile position | ||||||
|             if (!Utility.isOnScreen(point, 0)) return false; |             if (!Utility.isOnScreen(point, 0)) return false; | ||||||
|  |  | ||||||
|             //prevent mousing over the toolbar or any other UI component with the tile cursor |             //prevent mousing over the toolbar or any other UI component with the tile cursor | ||||||
|             foreach (IClickableMenu menu in Game1.onScreenMenus) |             foreach (IClickableMenu menu in Game1.onScreenMenus) | ||||||
|             { |             { | ||||||
|  |                 //must account for viewport here | ||||||
|                 if (menu.isWithinBounds((int)point.X - Game1.viewport.X, (int)point.Y - Game1.viewport.Y)) return false; |                 if (menu.isWithinBounds((int)point.X - Game1.viewport.X, (int)point.Y - Game1.viewport.Y)) return false; | ||||||
|             } |             } | ||||||
|             return true; |             return true; | ||||||
| @@ -182,6 +218,7 @@ namespace stardew_access.Features | |||||||
|  |  | ||||||
|         private static bool isPositionOnMap(Vector2 position) |         private static bool isPositionOnMap(Vector2 position) | ||||||
|         { |         { | ||||||
|  |             //position does not take viewport into account since the entire map needs to be checked. | ||||||
|             Map map = Game1.currentLocation.map; |             Map map = Game1.currentLocation.map; | ||||||
|             if (position.X < 0 || position.X > map.Layers[0].DisplayWidth) return false; |             if (position.X < 0 || position.X > map.Layers[0].DisplayWidth) return false; | ||||||
|             if (position.Y < 0 || position.Y > map.Layers[0].DisplayHeight) return false; |             if (position.Y < 0 || position.Y > map.Layers[0].DisplayHeight) return false; | ||||||
|   | |||||||
| @@ -66,7 +66,7 @@ namespace stardew_access | |||||||
|  |  | ||||||
|         public static TileViewer TileViewer |         public static TileViewer TileViewer | ||||||
|         { |         { | ||||||
| get |             get | ||||||
|             { |             { | ||||||
|                 if (tileViewer == null) |                 if (tileViewer == null) | ||||||
|                     tileViewer = new TileViewer(); |                     tileViewer = new TileViewer(); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user