Initial refactor of mouse handling.

master
bradjrenshaw 2022-05-06 19:47:11 -04:00
parent f9fbbc4181
commit bd29fae9ca
3 changed files with 63 additions and 27 deletions

View File

@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using StardewValley;
namespace stardew_access.Features
{
public class MouseHandler
{
public Vector2 ViewingOffset { get; set; } = Vector2.Zero;
public Vector2 PlayerFacingVector
{
get
{
switch (Game1.player.FacingDirection)
{
case 0:
return new Vector2(0, - Game1.tileSize);
case 1:
return new Vector2(Game1.tileSize, 0);
case 2:
return new Vector2(0, Game1.tileSize);
case 3:
return new Vector2(-Game1.tileSize, 0);
default:
return Vector2.Zero;
}
}
}
public Vector2 PlayerPosition
{
get
{
int x = Game1.player.GetBoundingBox().Center.X - Game1.viewport.X;
int y = Game1.player.GetBoundingBox().Center.Y - Game1.viewport.Y;
return new Vector2(x, y);
}
}
public void SnapMouseToPlayer()
{
Vector2 snapPosition = this.PlayerPosition + this.PlayerFacingVector + this.ViewingOffset;
if (Utility.isOnScreen(snapPosition, 0))
Game1.setMousePosition((int)snapPosition.X, (int)snapPosition.Y);
}
}
}

View File

@ -41,32 +41,6 @@ namespace stardew_access.Features
MainClass.ScreenReader.Say($"{currentLocation.Name} Entered", true); MainClass.ScreenReader.Say($"{currentLocation.Name} Entered", true);
} }
public static void SnapMouseToPlayer()
{
int x = Game1.player.GetBoundingBox().Center.X - Game1.viewport.X;
int y = Game1.player.GetBoundingBox().Center.Y - Game1.viewport.Y;
int offset = 64;
switch (Game1.player.FacingDirection)
{
case 0:
y -= offset;
break;
case 1:
x += offset;
break;
case 2:
y += offset;
break;
case 3:
x -= offset;
break;
}
Game1.setMousePosition(x, y);
}
public static void narrateHudMessages() public static void narrateHudMessages()
{ {
try try

View File

@ -20,6 +20,7 @@ namespace stardew_access
private static StaticTiles? sTiles; private static StaticTiles? sTiles;
private static IScreenReader? screenReader; private static IScreenReader? screenReader;
private static IModHelper? modHelper; private static IModHelper? modHelper;
private static MouseHandler? mouse;
internal static ModConfig Config { get => config; set => config = value; } internal static ModConfig Config { get => config; set => config = value; }
public static IModHelper? ModHelper { get => modHelper; } public static IModHelper? ModHelper { get => modHelper; }
@ -62,6 +63,17 @@ namespace stardew_access
set => screenReader = value; set => screenReader = value;
} }
public static MouseHandler Mouse
{
get
{
if (mouse == null)
mouse = new MouseHandler();
return mouse;
}
}
#endregion #endregion
/********* /*********
@ -131,7 +143,7 @@ namespace stardew_access
Other.narrateCurrentLocation(); Other.narrateCurrentLocation();
if (Config.SnapMouse) if (Config.SnapMouse)
Other.SnapMouseToPlayer(); Mouse.SnapMouseToPlayer();
if (!ReadTile.isReadingTile && Config.ReadTile) if (!ReadTile.isReadingTile && Config.ReadTile)
{ {