Added categories in read tile and added it to api
parent
16def31766
commit
84c22868d7
|
@ -1,3 +1,6 @@
|
||||||
|
using Microsoft.Xna.Framework;
|
||||||
|
using stardew_access.Features;
|
||||||
|
|
||||||
namespace stardew_access.ScreenReader
|
namespace stardew_access.ScreenReader
|
||||||
{
|
{
|
||||||
public class API
|
public class API
|
||||||
|
@ -7,6 +10,16 @@ namespace stardew_access.ScreenReader
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public (string?, string?) GetNameWithCategoryNameAtTile(Vector2 tile)
|
||||||
|
{
|
||||||
|
return ReadTile.getNameWithCategoryNameAtTile(tile);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string? GetNameAtTile(Vector2 tile)
|
||||||
|
{
|
||||||
|
return ReadTile.getNameAtTile(tile);
|
||||||
|
}
|
||||||
|
|
||||||
public void Say(String text, Boolean interrupt)
|
public void Say(String text, Boolean interrupt)
|
||||||
{
|
{
|
||||||
if (MainClass.GetScreenReader() == null)
|
if (MainClass.GetScreenReader() == null)
|
||||||
|
|
|
@ -1,21 +1,20 @@
|
||||||
using StardewValley;
|
using StardewValley;
|
||||||
using StardewModdingAPI;
|
|
||||||
using Microsoft.Xna.Framework;
|
using Microsoft.Xna.Framework;
|
||||||
|
|
||||||
namespace stardew_access.Game
|
namespace stardew_access.Features
|
||||||
{
|
{
|
||||||
internal class CurrentPlayer
|
internal class CurrentPlayer
|
||||||
{
|
{
|
||||||
|
|
||||||
public static int getHealth()
|
public static int getHealth()
|
||||||
{
|
{
|
||||||
if(Game1.player == null)
|
if (Game1.player == null)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
int maxHealth = Game1.player.maxHealth;
|
int maxHealth = Game1.player.maxHealth;
|
||||||
int currentHealth = Game1.player.health;
|
int currentHealth = Game1.player.health;
|
||||||
|
|
||||||
int healthPercentage = (int) (currentHealth * 100)/maxHealth;
|
int healthPercentage = (int)(currentHealth * 100) / maxHealth;
|
||||||
return healthPercentage;
|
return healthPercentage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,7 +56,7 @@ namespace stardew_access.Game
|
||||||
int minutes = timeOfDay % 100;
|
int minutes = timeOfDay % 100;
|
||||||
int hours = timeOfDay / 100;
|
int hours = timeOfDay / 100;
|
||||||
string amOrpm = "A M";
|
string amOrpm = "A M";
|
||||||
if(hours>=12)
|
if (hours >= 12)
|
||||||
{
|
{
|
||||||
amOrpm = "P M";
|
amOrpm = "P M";
|
||||||
if (hours > 12)
|
if (hours > 12)
|
||||||
|
@ -84,7 +83,7 @@ namespace stardew_access.Game
|
||||||
|
|
||||||
public static int getMoney()
|
public static int getMoney()
|
||||||
{
|
{
|
||||||
if(Game1.player == null)
|
if (Game1.player == null)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
return Game1.player.Money;
|
return Game1.player.Money;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
using StardewValley;
|
using StardewValley;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace stardew_access.Game
|
namespace stardew_access.Features
|
||||||
{
|
{
|
||||||
internal class Other
|
internal class Other
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,7 +3,7 @@ using StardewValley;
|
||||||
using StardewValley.Objects;
|
using StardewValley.Objects;
|
||||||
using StardewValley.TerrainFeatures;
|
using StardewValley.TerrainFeatures;
|
||||||
|
|
||||||
namespace stardew_access.Game
|
namespace stardew_access.Features
|
||||||
{
|
{
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -28,12 +28,16 @@ namespace stardew_access.Game
|
||||||
public static CATEGORY NPCs = new CATEGORY("npc");
|
public static CATEGORY NPCs = new CATEGORY("npc");
|
||||||
public static CATEGORY Furnitures = new CATEGORY("furniture");
|
public static CATEGORY Furnitures = new CATEGORY("furniture");
|
||||||
public static CATEGORY Flooring = new CATEGORY("flooring");
|
public static CATEGORY Flooring = new CATEGORY("flooring");
|
||||||
public static CATEGORY Grass = new CATEGORY("grass");
|
public static CATEGORY Debris = new CATEGORY("debris");
|
||||||
public static CATEGORY Crops = new CATEGORY("crop");
|
public static CATEGORY Crops = new CATEGORY("crop");
|
||||||
public static CATEGORY Trees = new CATEGORY("tree");
|
public static CATEGORY Trees = new CATEGORY("tree");
|
||||||
|
public static CATEGORY Bush = new CATEGORY("bush");
|
||||||
public static CATEGORY Buildings = new CATEGORY("building");
|
public static CATEGORY Buildings = new CATEGORY("building");
|
||||||
public static CATEGORY MineItems = new CATEGORY("mine item");
|
public static CATEGORY MineItems = new CATEGORY("mine item");
|
||||||
|
public static CATEGORY ResourceClumps = new CATEGORY("resource clump");
|
||||||
public static CATEGORY Chests = new CATEGORY("chest");
|
public static CATEGORY Chests = new CATEGORY("chest");
|
||||||
|
public static CATEGORY JunimoBundle = new CATEGORY("bundle");
|
||||||
|
public static CATEGORY Doors = new CATEGORY("door"); // Also includes ladders and elevators
|
||||||
public static CATEGORY Others = new CATEGORY("other");
|
public static CATEGORY Others = new CATEGORY("other");
|
||||||
public static CATEGORY WaterTiles = new CATEGORY("water");
|
public static CATEGORY WaterTiles = new CATEGORY("water");
|
||||||
|
|
||||||
|
@ -176,33 +180,11 @@ namespace stardew_access.Game
|
||||||
{
|
{
|
||||||
Dictionary<Vector2, Netcode.NetRef<TerrainFeature>> terrainFeature = Game1.currentLocation.terrainFeatures.FieldDict;
|
Dictionary<Vector2, Netcode.NetRef<TerrainFeature>> terrainFeature = Game1.currentLocation.terrainFeatures.FieldDict;
|
||||||
|
|
||||||
// Check for npcs
|
if (Game1.currentLocation.isObjectAtTile((int)position.X, (int)position.Y))
|
||||||
if (Game1.currentLocation.isCharacterAtTile(position) != null)
|
|
||||||
{
|
{
|
||||||
NPC npc = Game1.currentLocation.isCharacterAtTile(position);
|
(string?, CATEGORY) objDetails = ReadTile.getObjectAtTile((int)position.X, (int)position.Y);
|
||||||
if (!npcs.Contains(npc))
|
string? objectName = objDetails.Item1;
|
||||||
{
|
CATEGORY category = objDetails.Item2;
|
||||||
if (npc.isVillager() || npc.CanSocialize)
|
|
||||||
PlaySoundAt(position, npc.displayName, CATEGORY.Farmers); // Villager
|
|
||||||
else
|
|
||||||
PlaySoundAt(position, npc.displayName, CATEGORY.NPCs);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Check for animals
|
|
||||||
else if (ReadTile.getFarmAnimalAt(Game1.currentLocation, (int)position.X, (int)position.Y) != null)
|
|
||||||
{
|
|
||||||
string name = $"{ReadTile.getFarmAnimalAt(Game1.currentLocation, (int)position.X, (int)position.Y, onlyName: true)}";
|
|
||||||
PlaySoundAt(position, name, CATEGORY.FarmAnimals);
|
|
||||||
}
|
|
||||||
// Check for water
|
|
||||||
else if (Game1.currentLocation.isWaterTile((int)position.X, (int)position.Y))
|
|
||||||
{
|
|
||||||
PlaySoundAt(position, "water", CATEGORY.WaterTiles);
|
|
||||||
}
|
|
||||||
// Check for objects
|
|
||||||
else if (Game1.currentLocation.isObjectAtTile((int)position.X, (int)position.Y))
|
|
||||||
{
|
|
||||||
string? objectName = ReadTile.getObjectNameAtTile((int)position.X, (int)position.Y);
|
|
||||||
StardewValley.Object obj = Game1.currentLocation.getObjectAtTile((int)position.X, (int)position.Y);
|
StardewValley.Object obj = Game1.currentLocation.getObjectAtTile((int)position.X, (int)position.Y);
|
||||||
|
|
||||||
if (objectName != null)
|
if (objectName != null)
|
||||||
|
@ -214,108 +196,24 @@ namespace stardew_access.Game
|
||||||
if (!furnitures.Contains((Furniture)obj))
|
if (!furnitures.Contains((Furniture)obj))
|
||||||
{
|
{
|
||||||
furnitures.Add((Furniture)obj);
|
furnitures.Add((Furniture)obj);
|
||||||
PlaySoundAt(position, objectName, CATEGORY.Furnitures);
|
PlaySoundAt(position, objectName, category);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (obj is Chest)
|
|
||||||
{
|
|
||||||
PlaySoundAt(position, objectName, CATEGORY.Chests);
|
|
||||||
}
|
|
||||||
else if (obj is not Furniture && obj is not Chest)
|
|
||||||
{
|
|
||||||
bool isMineItem = false;
|
|
||||||
|
|
||||||
if (objectName.Contains("node") || objectName.Contains("mystic stone") || objectName.Contains("jade stone"))
|
|
||||||
isMineItem = true;
|
|
||||||
else if (objectName.Contains("geode") || objectName.Contains("mine stone") || objectName.Contains("barrel") || objectName.Contains("item box"))
|
|
||||||
isMineItem = true;
|
|
||||||
|
|
||||||
if (isMineItem)
|
|
||||||
PlaySoundAt(position, objectName, CATEGORY.MineItems);
|
|
||||||
else
|
else
|
||||||
PlaySoundAt(position, objectName, CATEGORY.Others);
|
PlaySoundAt(position, objectName, category);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
// Check for terrain features
|
|
||||||
else if (terrainFeature.ContainsKey(position))
|
|
||||||
{
|
{
|
||||||
Netcode.NetRef<TerrainFeature> tr = terrainFeature[position];
|
(string?, CATEGORY?) tileDetail = ReadTile.getNameWithCategoryAtTile(position);
|
||||||
string? terrain = ReadTile.getTerrainFeatureAtTile(tr);
|
if (tileDetail.Item1 != null)
|
||||||
if (terrain != null)
|
|
||||||
{
|
{
|
||||||
if (tr.Get() is HoeDirt)
|
if (tileDetail.Item2 == null)
|
||||||
{
|
tileDetail.Item2 = CATEGORY.Others;
|
||||||
PlaySoundAt(position, terrain, CATEGORY.Crops);
|
|
||||||
|
PlaySoundAt(position, tileDetail.Item1, tileDetail.Item2);
|
||||||
}
|
}
|
||||||
else if (tr.Get() is GiantCrop)
|
|
||||||
{
|
|
||||||
PlaySoundAt(position, terrain, CATEGORY.Crops);
|
|
||||||
}
|
|
||||||
else if (tr.Get() is Bush)
|
|
||||||
{
|
|
||||||
PlaySoundAt(position, terrain, CATEGORY.Others);
|
|
||||||
}
|
|
||||||
else if (tr.Get() is CosmeticPlant)
|
|
||||||
{
|
|
||||||
PlaySoundAt(position, terrain, CATEGORY.Furnitures);
|
|
||||||
}
|
|
||||||
else if (tr.Get() is Flooring)
|
|
||||||
{
|
|
||||||
PlaySoundAt(position, terrain, CATEGORY.Flooring);
|
|
||||||
}
|
|
||||||
else if (tr.Get() is FruitTree)
|
|
||||||
{
|
|
||||||
PlaySoundAt(position, terrain, CATEGORY.Trees);
|
|
||||||
}
|
|
||||||
else if (tr.Get() is Grass)
|
|
||||||
{
|
|
||||||
PlaySoundAt(position, terrain, CATEGORY.Grass);
|
|
||||||
}
|
|
||||||
else if (tr.Get() is Tree)
|
|
||||||
{
|
|
||||||
PlaySoundAt(position, terrain, CATEGORY.Trees);
|
|
||||||
}
|
|
||||||
else if (tr.Get() is Quartz)
|
|
||||||
{
|
|
||||||
PlaySoundAt(position, terrain, CATEGORY.Others);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Check for Mine ladders
|
|
||||||
else if (ReadTile.isMineDownLadderAtTile((int)position.X, (int)position.Y))
|
|
||||||
{
|
|
||||||
PlaySoundAt(position, "ladder", CATEGORY.Buildings);
|
|
||||||
}
|
|
||||||
else if (ReadTile.isMineUpLadderAtTile((int)position.X, (int)position.Y))
|
|
||||||
{
|
|
||||||
PlaySoundAt(position, "ladder", CATEGORY.Buildings);
|
|
||||||
}
|
|
||||||
else if (ReadTile.isElevatorAtTile((int)position.X, (int)position.Y))
|
|
||||||
{
|
|
||||||
PlaySoundAt(position, "ladder", CATEGORY.Buildings);
|
|
||||||
}
|
|
||||||
// Check for doors
|
|
||||||
else if (ReadTile.getDoorAtTile((int)position.X, (int)position.Y) != null)
|
|
||||||
{
|
|
||||||
PlaySoundAt(position, "door", CATEGORY.Buildings);
|
|
||||||
}
|
|
||||||
// Check for buildings on maps
|
|
||||||
else if (ReadTile.getTileInfo((int)position.X, (int)position.Y).Item2 != null)
|
|
||||||
{
|
|
||||||
(CATEGORY?, string?) item = ReadTile.getTileInfo((int)position.X, (int)position.Y);
|
|
||||||
if (item.Item2 != null && item.Item1 != null)
|
|
||||||
PlaySoundAt(position, item.Item2, item.Item1);
|
|
||||||
}
|
|
||||||
// Check for resource clumps
|
|
||||||
else if (ReadTile.getResourceClumpAtTile((int)position.X, (int)position.Y) != null)
|
|
||||||
{
|
|
||||||
PlaySoundAt(position, "resource clump", CATEGORY.MineItems);
|
|
||||||
}
|
|
||||||
// Check for junimo bundle
|
|
||||||
else if (ReadTile.getJunimoBundleAt((int)position.X, (int)position.Y) != null)
|
|
||||||
{
|
|
||||||
PlaySoundAt(position, "junimo bundle", CATEGORY.Chests);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
@ -431,7 +329,7 @@ namespace stardew_access.Game
|
||||||
soundName = $"obj{soundName}";
|
soundName = $"obj{soundName}";
|
||||||
else if (category == CATEGORY.Chests) // Chests
|
else if (category == CATEGORY.Chests) // Chests
|
||||||
soundName = $"obj{soundName}";
|
soundName = $"obj{soundName}";
|
||||||
else if (category == CATEGORY.Grass) // Grass
|
else if (category == CATEGORY.Debris) // Grass and debris
|
||||||
soundName = $"obj{soundName}";
|
soundName = $"obj{soundName}";
|
||||||
else if (category == CATEGORY.Flooring) // Flooring
|
else if (category == CATEGORY.Flooring) // Flooring
|
||||||
soundName = $"obj{soundName}";
|
soundName = $"obj{soundName}";
|
||||||
|
|
|
@ -6,7 +6,7 @@ using StardewValley.Locations;
|
||||||
using StardewValley.Objects;
|
using StardewValley.Objects;
|
||||||
using StardewValley.TerrainFeatures;
|
using StardewValley.TerrainFeatures;
|
||||||
|
|
||||||
namespace stardew_access.Game
|
namespace stardew_access.Features
|
||||||
{
|
{
|
||||||
public class ReadTile
|
public class ReadTile
|
||||||
{
|
{
|
||||||
|
@ -71,6 +71,117 @@ namespace stardew_access.Game
|
||||||
isReadingTile = false;
|
isReadingTile = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///<summary>Returns the name of the object at tile alongwith it's category's name</summary>
|
||||||
|
public static (string?, string?) getNameWithCategoryNameAtTile(Vector2 tile)
|
||||||
|
{
|
||||||
|
(string?, CATEGORY?) tileDetail = getNameWithCategoryAtTile(tile);
|
||||||
|
|
||||||
|
if (tileDetail.Item2 == null)
|
||||||
|
tileDetail.Item2 = CATEGORY.Others;
|
||||||
|
|
||||||
|
return (tileDetail.Item1, tileDetail.Item2.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
///<summary>Returns the name of the object at tile alongwith it's category</summary>
|
||||||
|
public static (string?, CATEGORY?) getNameWithCategoryAtTile(Vector2 tile)
|
||||||
|
{
|
||||||
|
int x = (int)tile.X;
|
||||||
|
int y = (int)tile.Y;
|
||||||
|
string? toReturn = "";
|
||||||
|
CATEGORY? category = CATEGORY.Others;
|
||||||
|
|
||||||
|
bool isColliding = isCollidingAtTile(x, y);
|
||||||
|
Dictionary<Vector2, Netcode.NetRef<TerrainFeature>> terrainFeature = Game1.currentLocation.terrainFeatures.FieldDict;
|
||||||
|
string? door = getDoorAtTile(x, y);
|
||||||
|
(CATEGORY?, string?) tileInfo = getTileInfo(x, y);
|
||||||
|
string? junimoBundle = getJunimoBundleAt(x, y);
|
||||||
|
string? resourceClump = getResourceClumpAtTile(x, y);
|
||||||
|
string? farmAnimal = getFarmAnimalAt(Game1.currentLocation, x, y);
|
||||||
|
|
||||||
|
if (Game1.currentLocation.isCharacterAtTile(tile) != null)
|
||||||
|
{
|
||||||
|
NPC npc = Game1.currentLocation.isCharacterAtTile(tile);
|
||||||
|
toReturn = npc.displayName;
|
||||||
|
if (npc.isVillager() || npc.CanSocialize)
|
||||||
|
category = CATEGORY.Farmers;
|
||||||
|
else
|
||||||
|
category = CATEGORY.NPCs;
|
||||||
|
}
|
||||||
|
else if (farmAnimal != null)
|
||||||
|
{
|
||||||
|
toReturn = farmAnimal;
|
||||||
|
category = CATEGORY.FarmAnimals;
|
||||||
|
}
|
||||||
|
else if (Game1.currentLocation.isWaterTile(x, y) && isColliding)
|
||||||
|
{
|
||||||
|
toReturn = "Water";
|
||||||
|
category = CATEGORY.WaterTiles;
|
||||||
|
}
|
||||||
|
else if (Game1.currentLocation.isObjectAtTile(x, y))
|
||||||
|
{
|
||||||
|
(string?, CATEGORY?) obj = getObjectAtTile(x, y);
|
||||||
|
toReturn = obj.Item1;
|
||||||
|
category = obj.Item2;
|
||||||
|
}
|
||||||
|
else if (terrainFeature.ContainsKey(tile))
|
||||||
|
{
|
||||||
|
(string?, CATEGORY) tf = getTerrainFeatureAtTile(terrainFeature[tile]);
|
||||||
|
string? terrain = tf.Item1;
|
||||||
|
if (terrain != null)
|
||||||
|
{
|
||||||
|
toReturn = terrain;
|
||||||
|
category = tf.Item2;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (Game1.currentLocation.getLargeTerrainFeatureAt(x, y) != null)
|
||||||
|
{
|
||||||
|
toReturn = getBushAtTile(x, y);
|
||||||
|
category = CATEGORY.Bush;
|
||||||
|
}
|
||||||
|
else if (resourceClump != null)
|
||||||
|
{
|
||||||
|
toReturn = resourceClump;
|
||||||
|
category = CATEGORY.ResourceClumps;
|
||||||
|
}
|
||||||
|
else if (door != null)
|
||||||
|
{
|
||||||
|
toReturn = door;
|
||||||
|
category = CATEGORY.Doors;
|
||||||
|
}
|
||||||
|
else if (isMineDownLadderAtTile(x, y))
|
||||||
|
{
|
||||||
|
toReturn = "Ladder";
|
||||||
|
category = CATEGORY.Doors;
|
||||||
|
}
|
||||||
|
else if (isMineUpLadderAtTile(x, y))
|
||||||
|
{
|
||||||
|
toReturn = "Up Ladder";
|
||||||
|
category = CATEGORY.Doors;
|
||||||
|
}
|
||||||
|
else if (isElevatorAtTile(x, y))
|
||||||
|
{
|
||||||
|
toReturn = "Elevator";
|
||||||
|
category = CATEGORY.Doors;
|
||||||
|
}
|
||||||
|
else if (tileInfo.Item2 != null)
|
||||||
|
{
|
||||||
|
toReturn = tileInfo.Item2;
|
||||||
|
category = tileInfo.Item1;
|
||||||
|
}
|
||||||
|
else if (junimoBundle != null)
|
||||||
|
{
|
||||||
|
toReturn = junimoBundle;
|
||||||
|
category = CATEGORY.JunimoBundle;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (toReturn == "")
|
||||||
|
return (null, category);
|
||||||
|
|
||||||
|
return (toReturn, category);
|
||||||
|
}
|
||||||
|
|
||||||
|
///<summary>Returns the name of the object at tile</summary>
|
||||||
public static string? getNameAtTile(Vector2 tile)
|
public static string? getNameAtTile(Vector2 tile)
|
||||||
{
|
{
|
||||||
int x = (int)tile.X;
|
int x = (int)tile.X;
|
||||||
|
@ -100,11 +211,11 @@ namespace stardew_access.Game
|
||||||
}
|
}
|
||||||
else if (Game1.currentLocation.isObjectAtTile(x, y))
|
else if (Game1.currentLocation.isObjectAtTile(x, y))
|
||||||
{
|
{
|
||||||
toReturn = getObjectNameAtTile(x, y);
|
toReturn = getObjectAtTile(x, y).Item1;
|
||||||
}
|
}
|
||||||
else if (terrainFeature.ContainsKey(tile))
|
else if (terrainFeature.ContainsKey(tile))
|
||||||
{
|
{
|
||||||
string? terrain = getTerrainFeatureAtTile(terrainFeature[tile]);
|
string? terrain = getTerrainFeatureAtTile(terrainFeature[tile]).Item1;
|
||||||
if (terrain != null)
|
if (terrain != null)
|
||||||
toReturn = terrain;
|
toReturn = terrain;
|
||||||
}
|
}
|
||||||
|
@ -230,7 +341,8 @@ namespace stardew_access.Game
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Game1.currentLocation is Woods && getStumpsInWoods(x, y) != null)
|
||||||
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -337,11 +449,14 @@ namespace stardew_access.Game
|
||||||
return (null, null);
|
return (null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string? getTerrainFeatureAtTile(Netcode.NetRef<TerrainFeature> terrain)
|
public static (string?, CATEGORY) getTerrainFeatureAtTile(Netcode.NetRef<TerrainFeature> terrain)
|
||||||
{
|
{
|
||||||
string? toReturn = null;
|
string? toReturn = null;
|
||||||
|
CATEGORY category = CATEGORY.Others;
|
||||||
|
|
||||||
if (terrain.Get() is HoeDirt)
|
if (terrain.Get() is HoeDirt)
|
||||||
{
|
{
|
||||||
|
category = CATEGORY.Crops;
|
||||||
HoeDirt dirt = (HoeDirt)terrain.Get();
|
HoeDirt dirt = (HoeDirt)terrain.Get();
|
||||||
if (dirt.crop != null)
|
if (dirt.crop != null)
|
||||||
{
|
{
|
||||||
|
@ -376,6 +491,7 @@ namespace stardew_access.Game
|
||||||
}
|
}
|
||||||
else if (terrain.Get() is GiantCrop)
|
else if (terrain.Get() is GiantCrop)
|
||||||
{
|
{
|
||||||
|
category = CATEGORY.Crops;
|
||||||
int whichCrop = ((GiantCrop)terrain.Get()).which.Value;
|
int whichCrop = ((GiantCrop)terrain.Get()).which.Value;
|
||||||
switch (whichCrop)
|
switch (whichCrop)
|
||||||
{
|
{
|
||||||
|
@ -392,6 +508,7 @@ namespace stardew_access.Game
|
||||||
}
|
}
|
||||||
else if (terrain.Get() is CosmeticPlant)
|
else if (terrain.Get() is CosmeticPlant)
|
||||||
{
|
{
|
||||||
|
category = CATEGORY.Furnitures;
|
||||||
CosmeticPlant cosmeticPlant = (CosmeticPlant)terrain.Get();
|
CosmeticPlant cosmeticPlant = (CosmeticPlant)terrain.Get();
|
||||||
toReturn = cosmeticPlant.textureName().ToLower();
|
toReturn = cosmeticPlant.textureName().ToLower();
|
||||||
|
|
||||||
|
@ -403,6 +520,7 @@ namespace stardew_access.Game
|
||||||
}
|
}
|
||||||
else if (terrain.Get() is Flooring)
|
else if (terrain.Get() is Flooring)
|
||||||
{
|
{
|
||||||
|
category = CATEGORY.Flooring;
|
||||||
Flooring flooring = (Flooring)terrain.Get();
|
Flooring flooring = (Flooring)terrain.Get();
|
||||||
bool isPathway = flooring.isPathway.Get();
|
bool isPathway = flooring.isPathway.Get();
|
||||||
bool isSteppingStone = flooring.isSteppingStone.Get();
|
bool isSteppingStone = flooring.isSteppingStone.Get();
|
||||||
|
@ -417,22 +535,26 @@ namespace stardew_access.Game
|
||||||
}
|
}
|
||||||
else if (terrain.Get() is FruitTree)
|
else if (terrain.Get() is FruitTree)
|
||||||
{
|
{
|
||||||
|
category = CATEGORY.Trees;
|
||||||
toReturn = getFruitTree((FruitTree)terrain.Get());
|
toReturn = getFruitTree((FruitTree)terrain.Get());
|
||||||
}
|
}
|
||||||
else if (terrain.Get() is Grass)
|
else if (terrain.Get() is Grass)
|
||||||
{
|
{
|
||||||
|
category = CATEGORY.Debris;
|
||||||
toReturn = "Grass";
|
toReturn = "Grass";
|
||||||
}
|
}
|
||||||
else if (terrain.Get() is Tree)
|
else if (terrain.Get() is Tree)
|
||||||
{
|
{
|
||||||
|
category = CATEGORY.Trees;
|
||||||
toReturn = getTree((Tree)terrain.Get());
|
toReturn = getTree((Tree)terrain.Get());
|
||||||
}
|
}
|
||||||
else if (terrain.Get() is Quartz)
|
else if (terrain.Get() is Quartz)
|
||||||
{
|
{
|
||||||
|
category = CATEGORY.MineItems;
|
||||||
toReturn = "Quartz";
|
toReturn = "Quartz";
|
||||||
}
|
}
|
||||||
|
|
||||||
return toReturn;
|
return (toReturn, category);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string getFruitTree(FruitTree fruitTree)
|
public static string getFruitTree(FruitTree fruitTree)
|
||||||
|
@ -517,7 +639,7 @@ namespace stardew_access.Game
|
||||||
return seedName;
|
return seedName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string? getObjectNameAtTile(int x, int y)
|
public static (string?, CATEGORY) getObjectAtTile(int x, int y)
|
||||||
{
|
{
|
||||||
string? toReturn = null;
|
string? toReturn = null;
|
||||||
|
|
||||||
|
@ -545,17 +667,17 @@ namespace stardew_access.Game
|
||||||
case 784:
|
case 784:
|
||||||
case 785:
|
case 785:
|
||||||
case 786:
|
case 786:
|
||||||
return "Weed";
|
return ("Weed", CATEGORY.Debris);
|
||||||
case 792:
|
case 792:
|
||||||
case 793:
|
case 793:
|
||||||
case 794:
|
case 794:
|
||||||
return "Fertile weed";
|
return ("Fertile weed", CATEGORY.Debris);
|
||||||
case 319:
|
case 319:
|
||||||
case 320:
|
case 320:
|
||||||
case 321:
|
case 321:
|
||||||
return "Ice crystal";
|
return ("Ice crystal", CATEGORY.Debris);
|
||||||
case 75:
|
case 75:
|
||||||
return "Geode";
|
return ("Geode", CATEGORY.MineItems);
|
||||||
case 32:
|
case 32:
|
||||||
case 34:
|
case 34:
|
||||||
case 36:
|
case 36:
|
||||||
|
@ -568,28 +690,28 @@ namespace stardew_access.Game
|
||||||
case 54:
|
case 54:
|
||||||
case 56:
|
case 56:
|
||||||
case 58:
|
case 58:
|
||||||
return "Coloured stone";
|
return ("Coloured stone", CATEGORY.Debris);
|
||||||
case 668:
|
case 668:
|
||||||
case 670:
|
case 670:
|
||||||
case 845:
|
case 845:
|
||||||
case 846:
|
case 846:
|
||||||
case 847:
|
case 847:
|
||||||
return "Mine stone";
|
return ("Mine stone", CATEGORY.MineItems);
|
||||||
case 818:
|
case 818:
|
||||||
return "Clay stone";
|
return ("Clay stone", CATEGORY.Debris);
|
||||||
case 816:
|
case 816:
|
||||||
case 817:
|
case 817:
|
||||||
return "Fossil stone";
|
return ("Fossil stone", CATEGORY.Debris);
|
||||||
case 118:
|
case 118:
|
||||||
case 120:
|
case 120:
|
||||||
case 122:
|
case 122:
|
||||||
case 124:
|
case 124:
|
||||||
return "Barrel";
|
return ("Barrel", CATEGORY.MineItems);
|
||||||
case 119:
|
case 119:
|
||||||
case 121:
|
case 121:
|
||||||
case 123:
|
case 123:
|
||||||
case 125:
|
case 125:
|
||||||
return "Item box";
|
return ("Item box", CATEGORY.MineItems);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Game1.currentLocation is Mine or MineShaft)
|
if (Game1.currentLocation is Mine or MineShaft)
|
||||||
|
@ -597,61 +719,67 @@ namespace stardew_access.Game
|
||||||
switch (index)
|
switch (index)
|
||||||
{
|
{
|
||||||
case 76:
|
case 76:
|
||||||
return "Frozen geode";
|
return ("Frozen geode", CATEGORY.MineItems);
|
||||||
case 77:
|
case 77:
|
||||||
return "Magma geode";
|
return ("Magma geode", CATEGORY.MineItems);
|
||||||
case 8:
|
case 8:
|
||||||
case 66:
|
case 66:
|
||||||
return "Amethyst node";
|
return ("Amethyst node", CATEGORY.MineItems);
|
||||||
case 14:
|
case 14:
|
||||||
case 62:
|
case 62:
|
||||||
return "Aquamarine node";
|
return ("Aquamarine node", CATEGORY.MineItems);
|
||||||
case 843:
|
case 843:
|
||||||
case 844:
|
case 844:
|
||||||
return "Cinder shard node";
|
return ("Cinder shard node", CATEGORY.MineItems);
|
||||||
case 2:
|
case 2:
|
||||||
case 72:
|
case 72:
|
||||||
return "Diamond node";
|
return ("Diamond node", CATEGORY.MineItems);
|
||||||
case 12:
|
case 12:
|
||||||
case 60:
|
case 60:
|
||||||
return "Emerald node";
|
return ("Emerald node", CATEGORY.MineItems);
|
||||||
case 44:
|
case 44:
|
||||||
return "Gem node";
|
return ("Gem node", CATEGORY.MineItems);
|
||||||
case 6:
|
case 6:
|
||||||
case 70:
|
case 70:
|
||||||
return "Jade node";
|
return ("Jade node", CATEGORY.MineItems);
|
||||||
case 46:
|
case 46:
|
||||||
return "Mystic stone";
|
return ("Mystic stone", CATEGORY.MineItems);
|
||||||
case 74:
|
case 74:
|
||||||
return "Prismatic node";
|
return ("Prismatic node", CATEGORY.MineItems);
|
||||||
case 4:
|
case 4:
|
||||||
case 64:
|
case 64:
|
||||||
return "Ruby node";
|
return ("Ruby node", CATEGORY.MineItems);
|
||||||
case 10:
|
case 10:
|
||||||
case 68:
|
case 68:
|
||||||
return "Topaz node";
|
return ("Topaz node", CATEGORY.MineItems);
|
||||||
case 819:
|
case 819:
|
||||||
return "Omni geode node";
|
return ("Omni geode node", CATEGORY.MineItems);
|
||||||
case 751:
|
case 751:
|
||||||
case 849:
|
case 849:
|
||||||
return "Copper node";
|
return ("Copper node", CATEGORY.MineItems);
|
||||||
case 764:
|
case 764:
|
||||||
return "Gold node";
|
return ("Gold node", CATEGORY.MineItems);
|
||||||
case 765:
|
case 765:
|
||||||
return "Iridium node";
|
return ("Iridium node", CATEGORY.MineItems);
|
||||||
case 290:
|
case 290:
|
||||||
case 850:
|
case 850:
|
||||||
return "Iron node";
|
return ("Iron node", CATEGORY.MineItems);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj is Chest)
|
if (obj is Chest)
|
||||||
{
|
{
|
||||||
Chest chest = (Chest)obj;
|
Chest chest = (Chest)obj;
|
||||||
toReturn = chest.DisplayName;
|
return (chest.DisplayName, CATEGORY.Chests);
|
||||||
}
|
}
|
||||||
|
|
||||||
return toReturn;
|
if (obj is Furniture)
|
||||||
|
return (toReturn, CATEGORY.Furnitures);
|
||||||
|
|
||||||
|
if (toReturn != null)
|
||||||
|
return (toReturn, CATEGORY.Others);
|
||||||
|
|
||||||
|
return (null, CATEGORY.Others);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool isMineDownLadderAtTile(int x, int y)
|
public static bool isMineDownLadderAtTile(int x, int y)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using stardew_access.Game;
|
using stardew_access.Features;
|
||||||
using StardewModdingAPI;
|
using StardewModdingAPI;
|
||||||
using StardewModdingAPI.Events;
|
using StardewModdingAPI.Events;
|
||||||
using StardewValley;
|
using StardewValley;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
using Microsoft.Xna.Framework;
|
using Microsoft.Xna.Framework;
|
||||||
using stardew_access.Game;
|
using stardew_access.Features;
|
||||||
using StardewModdingAPI;
|
using StardewModdingAPI;
|
||||||
using StardewValley;
|
using StardewValley;
|
||||||
using StardewValley.Menus;
|
using StardewValley.Menus;
|
||||||
|
|
Loading…
Reference in New Issue