Added animal narration | Bug fix in location narration

master
shoaib11120 2022-01-20 19:07:21 +05:30
parent 29cd44f31f
commit e916e27427
3 changed files with 64 additions and 2 deletions

View File

@ -99,6 +99,12 @@ namespace stardew_access.Game
playSoundAt(position, npc.displayName, typeof(NPC)); playSoundAt(position, npc.displayName, typeof(NPC));
} }
} }
// Check for animals
else if (ReadTile.getFarmAnimalAt(Game1.currentLocation, (int)position.X, (int)position.Y) != null && !exclusions.Contains("animals"))
{
string name = ReadTile.getFarmAnimalAt(Game1.currentLocation, (int)position.X, (int)position.Y, onlyName: true);
playSoundAt(position, name, typeof(FarmAnimal));
}
// Check for water // Check for water
else if (Game1.currentLocation.isWaterTile((int)position.X, (int)position.Y) && !exclusions.Contains("water")) else if (Game1.currentLocation.isWaterTile((int)position.X, (int)position.Y) && !exclusions.Contains("water"))
{ {
@ -247,6 +253,8 @@ namespace stardew_access.Game
if(soundType == typeof(Farmer)) // Villagers and farmers if(soundType == typeof(Farmer)) // Villagers and farmers
soundName = $"npc{soundName}"; soundName = $"npc{soundName}";
if (soundType == typeof(FarmAnimal)) // Farm Animals
soundName = $"npc{soundName}";
else if(soundType == typeof(NPC)) // Other npcs, also includes enemies else if(soundType == typeof(NPC)) // Other npcs, also includes enemies
soundName = $"obj{soundName}"; soundName = $"obj{soundName}";
else if(soundType == typeof(WaterTiles)) // Water tiles else if(soundType == typeof(WaterTiles)) // Water tiles

View File

@ -2,6 +2,7 @@
using StardewModdingAPI; using StardewModdingAPI;
using StardewValley; using StardewValley;
using StardewValley.Locations; using StardewValley.Locations;
using StardewValley.Objects;
using StardewValley.TerrainFeatures; using StardewValley.TerrainFeatures;
namespace stardew_access.Game namespace stardew_access.Game
@ -44,6 +45,10 @@ namespace stardew_access.Game
NPC npc = Game1.currentLocation.isCharacterAtTile(gt); NPC npc = Game1.currentLocation.isCharacterAtTile(gt);
toSpeak = npc.displayName; toSpeak = npc.displayName;
} }
else if(getFarmAnimalAt(Game1.currentLocation, x, y) != null)
{
toSpeak = getFarmAnimalAt(Game1.currentLocation, x, y);
}
else if (Game1.currentLocation.isWaterTile(x, y)) else if (Game1.currentLocation.isWaterTile(x, y))
{ {
toSpeak = "Water"; toSpeak = "Water";
@ -99,6 +104,45 @@ namespace stardew_access.Game
isReadingTile = false; isReadingTile = false;
} }
public static string? getFarmAnimalAt(GameLocation? location, int x, int y, bool onlyName = false)
{
if (location == null)
return null;
if (location is not Farm && location is not AnimalHouse)
return null;
List<FarmAnimal>? farmAnimals = null;
if(location is Farm)
farmAnimals = (location as Farm).getAllFarmAnimals();
else if(location is AnimalHouse)
farmAnimals = (location as AnimalHouse).animals.Values.ToList();
if (farmAnimals == null || farmAnimals.Count <= 0)
return null;
for(int i = 0; i < farmAnimals.Count; i++)
{
int fx = farmAnimals[i].getTileX();
int fy = farmAnimals[i].getTileY();
if (fx.Equals(x) && fy.Equals(y))
{
string name = farmAnimals[i].displayName;
int age = farmAnimals[i].age.Value;
string type = farmAnimals[i].displayType;
if (onlyName)
return name;
return $"{name}, {type}, age {age}";
}
}
return null;
}
public static string? getBuildingAtTile(int x, int y) public static string? getBuildingAtTile(int x, int y)
{ {
string? toReturn = null; string? toReturn = null;
@ -106,7 +150,10 @@ namespace stardew_access.Game
// It throws error if it can't find the index, do something else to fix this // It throws error if it can't find the index, do something else to fix this
try try
{ {
int? index = Game1.currentLocation.Map.GetLayer("Buildings").Tiles[x, y].TileIndex; int? index = null;
if (Game1.currentLocation.Map.GetLayer("Buildings").Tiles[x, y]!=null)
index = Game1.currentLocation.Map.GetLayer("Buildings").Tiles[x, y].TileIndex;
/* Add More /* Add More
MainClass.monitor.Log(index.ToString(), LogLevel.Debug); MainClass.monitor.Log(index.ToString(), LogLevel.Debug);
*/ */
@ -465,6 +512,13 @@ namespace stardew_access.Game
} }
} }
if(obj is Chest)
{
Chest chest = (Chest)obj;
toReturn = chest.Type;
toReturn = chest.DisplayName;
}
return toReturn; return toReturn;
} }

View File

@ -39,7 +39,7 @@ namespace stardew_access.Game
return; return;
previousLocation = currentLocation; previousLocation = currentLocation;
ScreenReader.say($"{currentLocation.NameOrUniqueName} Entered",true); ScreenReader.say($"{currentLocation.Name} Entered",true);
} }
} }
} }