Added more(all) dialogue options
parent
24a5c906b8
commit
3591c2cec6
|
@ -16,7 +16,7 @@ namespace stardew_access.Game
|
|||
player = Game1.player;
|
||||
}
|
||||
|
||||
public static int getHealth()
|
||||
internal static int getHealth()
|
||||
{
|
||||
if(player == null)
|
||||
initPlayer();
|
||||
|
@ -28,7 +28,7 @@ namespace stardew_access.Game
|
|||
return healthPercentage;
|
||||
}
|
||||
|
||||
public static int getStamina()
|
||||
internal static int getStamina()
|
||||
{
|
||||
if (player == null)
|
||||
initPlayer();
|
||||
|
@ -41,7 +41,7 @@ namespace stardew_access.Game
|
|||
return staminaPercentage;
|
||||
}
|
||||
|
||||
public static int getPositionX()
|
||||
internal static int getPositionX()
|
||||
{
|
||||
if (player == null)
|
||||
initPlayer();
|
||||
|
@ -50,7 +50,7 @@ namespace stardew_access.Game
|
|||
return x;
|
||||
}
|
||||
|
||||
public static int getPositionY()
|
||||
internal static int getPositionY()
|
||||
{
|
||||
if (player == null)
|
||||
initPlayer();
|
||||
|
|
|
@ -35,12 +35,17 @@ namespace stardew_access
|
|||
|
||||
harmony.Patch(
|
||||
original: AccessTools.Method(typeof(DialogueBox), nameof(DialogueBox.draw), new Type[] { typeof(SpriteBatch) }),
|
||||
postfix: new HarmonyMethod(typeof(DialoguePatch), nameof(DialoguePatch.CharachterDialoguePatch))
|
||||
postfix: new HarmonyMethod(typeof(DialoguePatcher), nameof(DialoguePatcher.DialoguePatch))
|
||||
);
|
||||
|
||||
harmony.Patch(
|
||||
original: AccessTools.Method(typeof(DialogueBox), nameof(DialogueBox.receiveLeftClick)),
|
||||
postfix: new HarmonyMethod(typeof(DialoguePatcher), nameof(DialoguePatcher.ClearDialogueString))
|
||||
);
|
||||
|
||||
harmony.Patch(
|
||||
original: AccessTools.Method(typeof(IClickableMenu), nameof(IClickableMenu.drawHoverText), new Type[] { typeof(SpriteBatch), typeof(string), typeof(SpriteFont), typeof(int), typeof(int), typeof(int), typeof(string), typeof(int), typeof(string[]), typeof(Item), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(float), typeof(CraftingRecipe), typeof(IList<Item>) }),
|
||||
postfix: new HarmonyMethod(typeof(DialoguePatch), nameof(DialoguePatch.HoverTextPatch))
|
||||
postfix: new HarmonyMethod(typeof(DialoguePatcher), nameof(DialoguePatcher.HoverTextPatch))
|
||||
);
|
||||
|
||||
harmony.Patch(
|
||||
|
@ -59,6 +64,7 @@ namespace stardew_access
|
|||
);
|
||||
|
||||
#endregion
|
||||
|
||||
helper.Events.Input.ButtonPressed += this.OnButtonPressed;
|
||||
}
|
||||
|
||||
|
|
|
@ -6,12 +6,20 @@ using System.Text;
|
|||
|
||||
namespace stardew_access.Patches
|
||||
{
|
||||
internal class DialoguePatch
|
||||
internal class DialoguePatcher
|
||||
{
|
||||
public static void CharachterDialoguePatch(DialogueBox __instance, SpriteBatch b)
|
||||
private static string currentDialogue = " ";
|
||||
|
||||
internal static void DialoguePatch(DialogueBox __instance, SpriteBatch b)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (__instance.transitioning)
|
||||
return;
|
||||
|
||||
if (__instance.characterDialogue != null)
|
||||
{
|
||||
// For Normal Character dialogues
|
||||
Dialogue dialogue = __instance.characterDialogue;
|
||||
string speakerName = dialogue.speaker.Name;
|
||||
List<string> dialogues = dialogue.dialogues;
|
||||
|
@ -19,8 +27,42 @@ namespace stardew_access.Patches
|
|||
MainClass.monitor.Log("" + dialogue.isCurrentStringContinuedOnNextScreen, LogLevel.Debug);
|
||||
string toSpeak = $"{speakerName} said, {dialogues[dialogueIndex]}";
|
||||
|
||||
if (currentDialogue != toSpeak)
|
||||
{
|
||||
currentDialogue = toSpeak;
|
||||
ScreenReader.say(toSpeak, false);
|
||||
}
|
||||
}
|
||||
else if (__instance.isQuestion)
|
||||
{
|
||||
// For Dialogues with responses/answers like the dialogue when we click on tv
|
||||
string toSpeak = " ";
|
||||
|
||||
if (currentDialogue != __instance.getCurrentString()) {
|
||||
toSpeak = __instance.getCurrentString();
|
||||
currentDialogue = toSpeak;
|
||||
}
|
||||
|
||||
for (int i = 0; i < __instance.responses.Count; i++)
|
||||
{
|
||||
if (i == __instance.selectedResponse)
|
||||
{
|
||||
toSpeak += $" \t\n Selected response: {__instance.responses[i].responseText}";
|
||||
}
|
||||
}
|
||||
|
||||
ScreenReader.sayWithChecker(toSpeak, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Basic dialogues like `No mails in the mail box`
|
||||
if (currentDialogue != __instance.getCurrentString())
|
||||
{
|
||||
currentDialogue = __instance.getCurrentString();
|
||||
ScreenReader.say(__instance.getCurrentString(), false);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
MainClass.monitor.Log($"Unable to narrate dialog:\n{e.StackTrace}", LogLevel.Error);
|
||||
|
@ -28,8 +70,13 @@ namespace stardew_access.Patches
|
|||
|
||||
}
|
||||
|
||||
internal static void ClearDialogueString()
|
||||
{
|
||||
// CLears the currentDialogue string on closing dialog
|
||||
currentDialogue = " ";
|
||||
}
|
||||
|
||||
public static void HoverTextPatch(string? text, int moneyAmountToDisplayAtBottom = -1, string? boldTitleText = null, string[]? buffIconsToDisplay = null, Item? hoveredItem = null, CraftingRecipe? craftingIngredients = null)
|
||||
internal static void HoverTextPatch(string? text, int moneyAmountToDisplayAtBottom = -1, string? boldTitleText = null, string[]? buffIconsToDisplay = null, Item? hoveredItem = null, CraftingRecipe? craftingIngredients = null)
|
||||
{
|
||||
try
|
||||
{
|
|
@ -7,7 +7,7 @@ namespace stardew_access.Patches
|
|||
internal class MenuPatch
|
||||
{
|
||||
|
||||
public static void TitleMenuPatch(TitleMenu __instance)
|
||||
internal static void TitleMenuPatch(TitleMenu __instance)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -58,7 +58,7 @@ namespace stardew_access.Patches
|
|||
}
|
||||
}
|
||||
|
||||
public static void LoadGameMenuPatch(LoadGameMenu.SaveFileSlot __instance, LoadGameMenu ___menu, int i)
|
||||
internal static void LoadGameMenuPatch(LoadGameMenu.SaveFileSlot __instance, LoadGameMenu ___menu, int i)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -94,6 +94,8 @@ namespace stardew_access.Patches
|
|||
}
|
||||
|
||||
internal static void ExitPagePatch(ExitPage __instance)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (__instance.exitToTitle.visible &&
|
||||
__instance.exitToTitle.containsPoint(Game1.getMousePosition(true).X, Game1.getMousePosition(true).Y))
|
||||
|
@ -106,5 +108,11 @@ namespace stardew_access.Patches
|
|||
ScreenReader.sayWithChecker("Exit to Desktop Button", true);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
MainClass.monitor.Log($"Unable to narrate Text:\n{e.Message}\n{e.StackTrace}", LogLevel.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue