diff --git a/stardew-access/CustomCommands.cs b/stardew-access/CustomCommands.cs
index 70bef73..d907636 100644
--- a/stardew-access/CustomCommands.cs
+++ b/stardew-access/CustomCommands.cs
@@ -286,7 +286,7 @@ namespace stardew_access
#endregion
#region Tile marking
- helper.ConsoleCommands.Add("mark", "Marks the player's position for use in building cunstruction in Carpenter Menu.", (string commmand, string[] args) =>
+ helper.ConsoleCommands.Add("mark", "Marks the player's position for use in building construction in Carpenter Menu.", (string commmand, string[] args) =>
{
if (Game1.currentLocation is not Farm)
{
diff --git a/stardew-access/ModEntry.cs b/stardew-access/ModEntry.cs
index 78adf22..0c35bf9 100644
--- a/stardew-access/ModEntry.cs
+++ b/stardew-access/ModEntry.cs
@@ -82,7 +82,7 @@ namespace stardew_access
/// Returns the Screen Reader class for other mods to use.
public override object GetApi()
{
- return new ScreenReaderController().Initialize();
+ return new ScreenReaderAPI();
}
private void onUpdateTicked(object? sender, UpdateTickedEventArgs? e)
diff --git a/stardew-access/Patches/BuildingNAnimalMenuPatches.cs b/stardew-access/Patches/BuildingNAnimalMenuPatches.cs
index 513e453..5a3e4ae 100644
--- a/stardew-access/Patches/BuildingNAnimalMenuPatches.cs
+++ b/stardew-access/Patches/BuildingNAnimalMenuPatches.cs
@@ -209,7 +209,7 @@ namespace stardew_access.Patches
if (__instance.okButton != null && __instance.okButton.containsPoint(x, y))
{
- string toSpeak = "Cunstruct Building" + (___blueprints[___currentBlueprintIndex].doesFarmerHaveEnoughResourcesToBuild() ? "" : ", cannot cunstrut building, not enough resources to build.");
+ string toSpeak = "Construct Building" + (___blueprints[___currentBlueprintIndex].doesFarmerHaveEnoughResourcesToBuild() ? "" : ", cannot cunstrut building, not enough resources to build.");
if (carpenterMenuQuery != toSpeak)
{
carpenterMenuQuery = toSpeak;
@@ -511,7 +511,7 @@ namespace stardew_access.Patches
if ((int)buildingToMove.daysOfConstructionLeft > 0)
{
buildingToMove = null;
- return "Building under cunstruction, cannot move";
+ return "Building under construction, cannot move";
}
if (!carpenterMenu.hasPermissionsToMove(buildingToMove))
{
diff --git a/stardew-access/Patches/MenuPatches.cs b/stardew-access/Patches/MenuPatches.cs
index f204cf3..eee71ad 100644
--- a/stardew-access/Patches/MenuPatches.cs
+++ b/stardew-access/Patches/MenuPatches.cs
@@ -135,13 +135,17 @@ namespace stardew_access.Patches
}
}
- internal static void LevelUpMenuPatch(LevelUpMenu __instance, List ___professionsToChoose, List ___leftProfessionDescription, List ___rightProfessionDescription, List ___extraInfoForLevel, List ___newCraftingRecipes, string ___title)
+ internal static void LevelUpMenuPatch(LevelUpMenu __instance, List ___professionsToChoose, List ___leftProfessionDescription, List ___rightProfessionDescription, List ___extraInfoForLevel, List ___newCraftingRecipes, string ___title, bool ___isActive, bool ___isProfessionChooser)
{
try
{
int x = Game1.getMouseX(), y = Game1.getMouseY();
string leftProfession = " ", rightProfession = " ", extraInfo = " ", newCraftingRecipe = " ", toSpeak = " ";
+ bool isOpenBracketPressed = Game1.input.GetKeyboardState().IsKeyDown(Microsoft.Xna.Framework.Input.Keys.OemOpenBrackets); // for left click
+ bool isLeftCtrlPressed = Game1.input.GetKeyboardState().IsKeyDown(Microsoft.Xna.Framework.Input.Keys.LeftControl);
+ bool isEnterPressed = Game1.input.GetKeyboardState().IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Enter);
+
if (!__instance.informationUp)
{
return;
@@ -162,10 +166,38 @@ namespace stardew_access.Patches
}
if (__instance.leftProfession.containsPoint(x, y))
+ {
+ if (isOpenBracketPressed || (isLeftCtrlPressed && isEnterPressed && __instance.readyToClose()))
+ {
+ Game1.player.professions.Add(___professionsToChoose[0]);
+ __instance.getImmediateProfessionPerk(___professionsToChoose[0]);
+ ___isActive = false;
+ __instance.informationUp = false;
+ ___isProfessionChooser = false;
+ __instance.RemoveLevelFromLevelList();
+ __instance.exitThisMenu();
+ return;
+ }
+
toSpeak = $"Selected: {leftProfession} Left click to choose.";
+ }
if (__instance.rightProfession.containsPoint(x, y))
+ {
+ if (isOpenBracketPressed || (isLeftCtrlPressed && isEnterPressed && __instance.readyToClose()))
+ {
+ Game1.player.professions.Add(___professionsToChoose[1]);
+ __instance.getImmediateProfessionPerk(___professionsToChoose[1]);
+ ___isActive = false;
+ __instance.informationUp = false;
+ ___isProfessionChooser = false;
+ __instance.RemoveLevelFromLevelList();
+ __instance.exitThisMenu();
+ return;
+ }
+
toSpeak = $"Selected: {rightProfession} Left click to choose.";
+ }
}
else
{
@@ -180,11 +212,14 @@ namespace stardew_access.Patches
newCraftingRecipe += $"{message}, ";
}
+ }
- if (__instance.okButton.containsPoint(x, y))
- {
- toSpeak = $"{___title} {extraInfo} {newCraftingRecipe}. Left click to close.";
- }
+ if (__instance.okButton.containsPoint(x, y))
+ {
+ if (isOpenBracketPressed || (isLeftCtrlPressed && isEnterPressed))
+ __instance.okButtonClicked();
+
+ toSpeak = $"{___title} {extraInfo} {newCraftingRecipe}. Left click to close.";
}
if (toSpeak != " ")
@@ -205,12 +240,21 @@ namespace stardew_access.Patches
{
try
{
+ bool isLeftControlPressed = Game1.input.GetKeyboardState().IsKeyDown(Microsoft.Xna.Framework.Input.Keys.LeftControl);
+ bool isOpenBracketPressed = Game1.input.GetKeyboardState().IsKeyDown(Microsoft.Xna.Framework.Input.Keys.OemOpenBrackets); // for left click
+ bool isEnterPressed = Game1.input.GetKeyboardState().IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Enter);
+
if (__instance.currentPage == -1)
{
int total = ___categoryTotals[5];
string toSpeak;
if (__instance.okButton.containsPoint(Game1.getMouseX(), Game1.getMouseY()))
{
+ // Perform Left Click
+ if (isOpenBracketPressed || (isLeftControlPressed && isEnterPressed))
+ {
+ Game1.activeClickableMenu.receiveLeftClick(Game1.getMouseX(true), Game1.getMouseY(true));
+ }
toSpeak = $"{total}g in total. Press left mouse button to save.";
MainClass.ScreenReader.SayWithChecker(toSpeak, true);
}
diff --git a/stardew-access/ScreenReader/ScreenReaderAPI.cs b/stardew-access/ScreenReader/ScreenReaderAPI.cs
new file mode 100644
index 0000000..b0841e2
--- /dev/null
+++ b/stardew-access/ScreenReader/ScreenReaderAPI.cs
@@ -0,0 +1,59 @@
+namespace stardew_access.ScreenReader
+{
+ public class ScreenReaderAPI
+ {
+
+ public ScreenReaderAPI()
+ {
+ }
+
+ public void CloseScreenReader()
+ {
+ if (MainClass.ScreenReader == null)
+ return;
+
+ MainClass.ScreenReader.CloseScreenReader();
+ }
+
+ public void Say(String text, Boolean interrupt)
+ {
+ if (MainClass.ScreenReader == null)
+ return;
+
+ MainClass.ScreenReader.Say(text, interrupt);
+ }
+
+ public void SayWithChecker(String text, Boolean interrupt)
+ {
+ if (MainClass.ScreenReader == null)
+ return;
+
+ MainClass.ScreenReader.SayWithChecker(text, interrupt);
+ }
+
+ public void SayWithMenuChecker(String text, Boolean interrupt)
+ {
+ if (MainClass.ScreenReader == null)
+ return;
+
+ MainClass.ScreenReader.SayWithMenuChecker(text, interrupt);
+ }
+
+ public void SayWithChatChecker(String text, Boolean interrupt)
+ {
+ if (MainClass.ScreenReader == null)
+ return;
+
+ MainClass.ScreenReader.SayWithChatChecker(text, interrupt);
+ }
+
+ public void SayWithTileQuery(String text, int x, int y, Boolean interrupt)
+ {
+ if (MainClass.ScreenReader == null)
+ return;
+
+ MainClass.ScreenReader.SayWithTileQuery(text, x, y, interrupt);
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/stardew-access/manifest.json b/stardew-access/manifest.json
index 8eada81..ba7bd79 100644
--- a/stardew-access/manifest.json
+++ b/stardew-access/manifest.json
@@ -1,7 +1,7 @@
{
"Name": "Stardew Access",
"Author": "Mohammad Shoaib",
- "Version": "1.0.22-beta",
+ "Version": "1.0.23-beta",
"Description": "An accessibility mod with screen reader support!",
"UniqueID": "shoaib.stardewaccess",
"EntryDll": "stardew-access.dll",