Moved pond query menu patch to its own class
parent
07fcc94296
commit
af0ec1ab8d
|
@ -179,7 +179,7 @@ namespace stardew_access
|
||||||
|
|
||||||
harmony.Patch(
|
harmony.Patch(
|
||||||
original: AccessTools.Method(typeof(PondQueryMenu), nameof(PondQueryMenu.draw), new Type[] { typeof(SpriteBatch) }),
|
original: AccessTools.Method(typeof(PondQueryMenu), nameof(PondQueryMenu.draw), new Type[] { typeof(SpriteBatch) }),
|
||||||
postfix: new HarmonyMethod(typeof(MenuPatches), nameof(MenuPatches.PondQueryMenuPatch))
|
postfix: new HarmonyMethod(typeof(PondQueryMenuPatch), nameof(PondQueryMenuPatch.DrawPatch))
|
||||||
);
|
);
|
||||||
|
|
||||||
harmony.Patch(
|
harmony.Patch(
|
||||||
|
|
|
@ -308,7 +308,7 @@ namespace stardew_access.Patches
|
||||||
}
|
}
|
||||||
else if (menu is PondQueryMenu)
|
else if (menu is PondQueryMenu)
|
||||||
{
|
{
|
||||||
MenuPatches.pondQueryMenuQuery = " ";
|
PondQueryMenuPatch.Cleanup();
|
||||||
}
|
}
|
||||||
else if (menu is GeodeMenu)
|
else if (menu is GeodeMenu)
|
||||||
{
|
{
|
||||||
|
|
|
@ -11,65 +11,9 @@ namespace stardew_access.Patches
|
||||||
{
|
{
|
||||||
internal static string currentLevelUpTitle = " ";
|
internal static string currentLevelUpTitle = " ";
|
||||||
internal static bool firstTimeInNamingMenu = true;
|
internal static bool firstTimeInNamingMenu = true;
|
||||||
internal static bool isNarratingPondInfo = false;
|
|
||||||
internal static string tailoringMenuQuery = " ";
|
internal static string tailoringMenuQuery = " ";
|
||||||
internal static string pondQueryMenuQuery = " ";
|
|
||||||
internal static int prevSlotIndex = -999;
|
internal static int prevSlotIndex = -999;
|
||||||
|
|
||||||
internal static void PondQueryMenuPatch(PondQueryMenu __instance, StardewValley.Object ____fishItem, FishPond ____pond, string ____statusText, bool ___confirmingEmpty)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
int x = Game1.getMouseX(true), y = Game1.getMouseY(true); // Mouse x and y position
|
|
||||||
bool isPrimaryInfoKeyPressed = MainClass.Config.PrimaryInfoKey.JustPressed();
|
|
||||||
string toSpeak = " ", extra = "";
|
|
||||||
|
|
||||||
if (___confirmingEmpty)
|
|
||||||
{
|
|
||||||
if (__instance.yesButton != null && __instance.yesButton.containsPoint(x, y))
|
|
||||||
toSpeak = "Confirm button";
|
|
||||||
else if (__instance.noButton != null && __instance.noButton.containsPoint(x, y))
|
|
||||||
toSpeak = "Cancel button";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (isPrimaryInfoKeyPressed && !isNarratingPondInfo)
|
|
||||||
{
|
|
||||||
string pond_name_text = Game1.content.LoadString("Strings\\UI:PondQuery_Name", ____fishItem.DisplayName);
|
|
||||||
string population_text = Game1.content.LoadString("Strings\\UI:PondQuery_Population", string.Concat(____pond.FishCount), ____pond.maxOccupants.Value);
|
|
||||||
bool has_unresolved_needs = ____pond.neededItem.Value != null && ____pond.HasUnresolvedNeeds() && !____pond.hasCompletedRequest.Value;
|
|
||||||
string bring_text = "";
|
|
||||||
|
|
||||||
if (has_unresolved_needs && ____pond.neededItem.Value != null)
|
|
||||||
bring_text = Game1.content.LoadString("Strings\\UI:PondQuery_StatusRequest_Bring") + $": {____pond.neededItemCount} {____pond.neededItem.Value.DisplayName}";
|
|
||||||
|
|
||||||
extra = $"{pond_name_text} {population_text} {bring_text} Status: {____statusText}";
|
|
||||||
pondQueryMenuQuery = " ";
|
|
||||||
|
|
||||||
isNarratingPondInfo = true;
|
|
||||||
Task.Delay(200).ContinueWith(_ => { isNarratingPondInfo = false; });
|
|
||||||
}
|
|
||||||
|
|
||||||
if (__instance.okButton != null && __instance.okButton.containsPoint(x, y))
|
|
||||||
toSpeak = "Ok button";
|
|
||||||
else if (__instance.changeNettingButton != null && __instance.changeNettingButton.containsPoint(x, y))
|
|
||||||
toSpeak = "Change netting button";
|
|
||||||
else if (__instance.emptyButton != null && __instance.emptyButton.containsPoint(x, y))
|
|
||||||
toSpeak = "Empty pond button";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pondQueryMenuQuery != toSpeak)
|
|
||||||
{
|
|
||||||
pondQueryMenuQuery = toSpeak;
|
|
||||||
MainClass.ScreenReader.Say(extra + " \n\t" + toSpeak, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (System.Exception e)
|
|
||||||
{
|
|
||||||
MainClass.ErrorLog($"Unable to narrate Text:\n{e.Message}\n{e.StackTrace}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal static void TailoringMenuPatch(TailoringMenu __instance)
|
internal static void TailoringMenuPatch(TailoringMenu __instance)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|
|
@ -0,0 +1,72 @@
|
||||||
|
using StardewValley;
|
||||||
|
using StardewValley.Buildings;
|
||||||
|
using StardewValley.Menus;
|
||||||
|
|
||||||
|
namespace stardew_access.Patches
|
||||||
|
{
|
||||||
|
internal class PondQueryMenuPatch
|
||||||
|
{
|
||||||
|
private static string pondQueryMenuQuery = "";
|
||||||
|
private static bool isNarratingPondInfo = false;
|
||||||
|
|
||||||
|
internal static void DrawPatch(PondQueryMenu __instance, StardewValley.Object ____fishItem, FishPond ____pond, string ____statusText, bool ___confirmingEmpty)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int x = Game1.getMouseX(true), y = Game1.getMouseY(true); // Mouse x and y position
|
||||||
|
bool isPrimaryInfoKeyPressed = MainClass.Config.PrimaryInfoKey.JustPressed();
|
||||||
|
string toSpeak = "", extra = "";
|
||||||
|
|
||||||
|
if (___confirmingEmpty)
|
||||||
|
{
|
||||||
|
if (__instance.yesButton != null && __instance.yesButton.containsPoint(x, y))
|
||||||
|
toSpeak = "Confirm button";
|
||||||
|
else if (__instance.noButton != null && __instance.noButton.containsPoint(x, y))
|
||||||
|
toSpeak = "Cancel button";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (isPrimaryInfoKeyPressed && !isNarratingPondInfo)
|
||||||
|
{
|
||||||
|
string pond_name_text = Game1.content.LoadString("Strings\\UI:PondQuery_Name", ____fishItem.DisplayName);
|
||||||
|
string population_text = Game1.content.LoadString("Strings\\UI:PondQuery_Population", string.Concat(____pond.FishCount), ____pond.maxOccupants.Value);
|
||||||
|
bool has_unresolved_needs = ____pond.neededItem.Value != null && ____pond.HasUnresolvedNeeds() && !____pond.hasCompletedRequest.Value;
|
||||||
|
string bring_text = "";
|
||||||
|
|
||||||
|
if (has_unresolved_needs && ____pond.neededItem.Value != null)
|
||||||
|
bring_text = Game1.content.LoadString("Strings\\UI:PondQuery_StatusRequest_Bring") + $": {____pond.neededItemCount} {____pond.neededItem.Value.DisplayName}";
|
||||||
|
|
||||||
|
extra = $"{pond_name_text} {population_text} {bring_text} Status: {____statusText}";
|
||||||
|
pondQueryMenuQuery = "";
|
||||||
|
|
||||||
|
isNarratingPondInfo = true;
|
||||||
|
Task.Delay(200).ContinueWith(_ => { isNarratingPondInfo = false; });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (__instance.okButton != null && __instance.okButton.containsPoint(x, y))
|
||||||
|
toSpeak = "Ok button";
|
||||||
|
else if (__instance.changeNettingButton != null && __instance.changeNettingButton.containsPoint(x, y))
|
||||||
|
toSpeak = "Change netting button";
|
||||||
|
else if (__instance.emptyButton != null && __instance.emptyButton.containsPoint(x, y))
|
||||||
|
toSpeak = "Empty pond button";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pondQueryMenuQuery != toSpeak)
|
||||||
|
{
|
||||||
|
pondQueryMenuQuery = toSpeak;
|
||||||
|
MainClass.ScreenReader.Say(extra + " \n\t" + toSpeak, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (System.Exception e)
|
||||||
|
{
|
||||||
|
MainClass.ErrorLog($"Unable to narrate Text:\n{e.Message}\n{e.StackTrace}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static void Cleanup()
|
||||||
|
{
|
||||||
|
pondQueryMenuQuery = "";
|
||||||
|
isNarratingPondInfo = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue