Added farm types and gender to charachter customization menu

master
shoaib11120 2021-12-31 19:03:33 +05:30
parent cb8a28fa46
commit 2e96464b8d
3 changed files with 157 additions and 17 deletions

View File

@ -489,7 +489,7 @@ namespace stardew_access
int index = Game1.currentLocation.Map.GetLayer("Buildings").Tiles[x, y].TileIndex;
if (index == 173 || index == 174)
toSpeak = "Door";
toSpeak = "Ladder";
}
#endregion
}

View File

@ -113,7 +113,7 @@ namespace stardew_access.Patches
try
{
// Fix for delete button hover text not narrating
if (Game1.activeClickableMenu is LoadGameMenu || Game1.activeClickableMenu is TitleMenu)
if (Game1.activeClickableMenu is TitleMenu && !((Game1.activeClickableMenu as TitleMenu).GetChildMenu() is CharacterCustomization))
return;
if (Game1.activeClickableMenu is LetterViewerMenu || Game1.activeClickableMenu is QuestLog)

View File

@ -15,6 +15,7 @@ namespace stardew_access.Patches
private static string currentLetterText = " ";
private static string currentDailyQuestText = " ";
private static string currentLevelUpTitle = " ";
private const int MAX_COMPONENTS = 18;
internal static void ConfirmationDialogPatch(ConfirmationDialog __instance, string ___message)
{
@ -630,11 +631,14 @@ namespace stardew_access.Patches
}
}
internal static void NewGameMenuPatch(CharacterCustomization __instance, TextBox ___nameBox, TextBox ___farmnameBox, TextBox ___favThingBox, ClickableTextureComponent ___skipIntroButton, ClickableTextureComponent ___okButton, ClickableComponent ___backButton)
internal static void NewGameMenuPatch(CharacterCustomization __instance, TextBox ___nameBox, TextBox ___farmnameBox,
TextBox ___favThingBox, ClickableTextureComponent ___skipIntroButton, ClickableTextureComponent ___okButton,
ClickableComponent ___backButton, ClickableTextureComponent ___randomButton, List<ClickableComponent> ___genderButtons,
List<ClickableTextureComponent> ___farmTypeButtons, ClickableTextureComponent ___farmTypeNextPageButton, ClickableTextureComponent ___farmTypePreviousPageButton)
{
try
{
if (__instance.source != CharacterCustomization.Source.NewGame)
if (__instance.source != CharacterCustomization.Source.NewGame && __instance.source != CharacterCustomization.Source.HostNewFarm)
return;
@ -643,11 +647,17 @@ namespace stardew_access.Patches
if (isNextArrowPressed && !isRunning)
{
_ = CycleThroughItems(true, ___nameBox, ___farmnameBox, ___favThingBox, ___skipIntroButton, ___okButton, ___backButton);
_ = CycleThroughItems(true, ___nameBox, ___farmnameBox, ___favThingBox,
___skipIntroButton, ___okButton, ___backButton,
___randomButton, ___genderButtons, ___farmTypeButtons,
___farmTypeNextPageButton, ___farmTypePreviousPageButton);
}
else if (isPrevArrowPressed && !isRunning)
{
_ = CycleThroughItems(false, ___nameBox, ___farmnameBox, ___favThingBox, ___skipIntroButton, ___okButton, ___backButton);
_ = CycleThroughItems(false, ___nameBox, ___farmnameBox, ___favThingBox,
___skipIntroButton, ___okButton, ___backButton, ___randomButton,
___genderButtons, ___farmTypeButtons,
___farmTypeNextPageButton, ___farmTypePreviousPageButton);
}
}
catch (Exception e)
@ -656,20 +666,23 @@ namespace stardew_access.Patches
}
}
private static async Task CycleThroughItems(bool increase, TextBox ___nameBox, TextBox ___farmnameBox, TextBox ___favThingBox, ClickableTextureComponent ___skipIntroButton, ClickableTextureComponent ___okButton, ClickableComponent ___backButton)
private static async Task CycleThroughItems(bool increase, TextBox ___nameBox, TextBox ___farmnameBox,
TextBox ___favThingBox, ClickableTextureComponent ___skipIntroButton, ClickableTextureComponent ___okButton,
ClickableComponent ___backButton, ClickableTextureComponent ___randomButton, List<ClickableComponent> ___genderButtons,
List<ClickableTextureComponent> ___farmTypeButtons, ClickableTextureComponent ___farmTypeNextPageButton, ClickableTextureComponent ___farmTypePreviousPageButton)
{
isRunning = true;
if (increase)
{
saveGameIndex++;
if (saveGameIndex > 6)
if (saveGameIndex > MAX_COMPONENTS)
saveGameIndex = 0;
}
else
{
saveGameIndex--;
if (saveGameIndex < 0)
saveGameIndex = 6;
saveGameIndex = MAX_COMPONENTS;
}
await Task.Delay(200);
@ -680,7 +693,7 @@ namespace stardew_access.Patches
{
Rectangle bounds = new Rectangle(___nameBox.X, ___nameBox.Y, ___nameBox.Width, ___nameBox.Height);
Game1.input.SetMousePosition(bounds.Center.X, bounds.Center.Y);
ScreenReader.say("Enter Farmer's Name", true);
ScreenReader.say("Enter Farmer's Name", false);
}
break;
@ -688,32 +701,132 @@ namespace stardew_access.Patches
{
Rectangle bounds = new Rectangle(___farmnameBox.X, ___farmnameBox.Y, ___farmnameBox.Width, ___farmnameBox.Height);
Game1.input.SetMousePosition(bounds.Center.X, bounds.Center.Y);
ScreenReader.say("Enter Farm's Name", true);
ScreenReader.say("Enter Farm's Name", false);
}
break;
case 3:
{
Rectangle bounds = new Rectangle(___favThingBox.X, ___favThingBox.Y, ___favThingBox.Width, ___favThingBox.Height);
Game1.input.SetMousePosition(bounds.Center.X, bounds.Center.Y);
ScreenReader.say("Enter Favourite Thing", true);
ScreenReader.say("Enter Favourite Thing", false);
}
break;
case 4:
{
___skipIntroButton.snapMouseCursor();
ScreenReader.say("Skip Intro Button", true);
ScreenReader.say("Skip Intro Button", false);
}
break;
case 5:
{
___okButton.snapMouseCursor();
ScreenReader.say("Ok Button", true);
}
___randomButton.snapMouseCursor();
ScreenReader.say("Random Skin Button", false);
break;
}
case 6:
{
___genderButtons[0].snapMouseCursor();
ScreenReader.say("Gender Male Button", false);
break;
}
case 7:
{
___genderButtons[1].snapMouseCursor();
ScreenReader.say("Gender Female Button", false);
break;
}
case 8:
{
___farmTypeButtons[0].snapMouseCursor();
ScreenReader.say(getFarmHoverText(___farmTypeButtons[0]), false);
break;
}
case 9:
{
___farmTypeButtons[1].snapMouseCursor();
ScreenReader.say(getFarmHoverText(___farmTypeButtons[1]), false);
break;
}
case 10:
{
___farmTypeButtons[2].snapMouseCursor();
ScreenReader.say(getFarmHoverText(___farmTypeButtons[2]), false);
break;
}
case 11:
{
___farmTypeButtons[3].snapMouseCursor();
ScreenReader.say(getFarmHoverText(___farmTypeButtons[3]), false);
break;
}
case 12:
{
___farmTypeButtons[4].snapMouseCursor();
ScreenReader.say(getFarmHoverText(___farmTypeButtons[4]), false);
break;
}
case 13:
{
___farmTypeButtons[5].snapMouseCursor();
ScreenReader.say(getFarmHoverText(___farmTypeButtons[5]), false);
break;
}
case 14:
{
___farmTypeButtons[6].snapMouseCursor();
ScreenReader.say(getFarmHoverText(___farmTypeButtons[6]), false);
break;
}
case 15:
{
if (___farmTypeNextPageButton == null)
{
if (increase)
{
++saveGameIndex;
goto case 16;
}
else
{
--saveGameIndex;
goto case 14;
}
}
___farmTypeNextPageButton.snapMouseCursor();
ScreenReader.say("Next Farm Type Page Button", false);
break;
}
case 16:
{
if (___farmTypePreviousPageButton == null)
{
if (increase)
{
++saveGameIndex;
goto case 17;
}
else
{
--saveGameIndex;
goto case 15;
}
}
___farmTypePreviousPageButton.snapMouseCursor();
ScreenReader.say("Previous Farm Type Page Button", false);
break;
}
case 17:
{
___okButton.snapMouseCursor();
ScreenReader.say("Ok Button", false);
}
break;
case 18:
{
___backButton.snapMouseCursor();
ScreenReader.say("Back Button", true);
ScreenReader.say("Back Button", false);
}
break;
}
@ -721,6 +834,33 @@ namespace stardew_access.Patches
isRunning = false;
}
private static string getFarmHoverText(ClickableTextureComponent farm)
{
string hoverTitle = " ", hoverText = " ";
if (!farm.name.Contains("Gray"))
{
if (farm.hoverText.Contains('_'))
{
hoverTitle = farm.hoverText.Split('_')[0];
hoverText = farm.hoverText.Split('_')[1];
}
else
{
hoverTitle = null;
hoverText = farm.hoverText;
}
}
else
{
if (farm.name.Contains("Gray"))
{
hoverText = "Reach level 10 " + Game1.content.LoadString("Strings\\UI:Character_" + farm.name.Split('_')[1]) + " to unlock.";
}
}
return $"{hoverTitle}: {hoverText}";
}
internal static void ExitPagePatch(ExitPage __instance)
{
try