diff --git a/BetterRanching/BetterRanching.cs b/BetterRanching/BetterRanching.cs index 866c8b1..1a90040 100644 --- a/BetterRanching/BetterRanching.cs +++ b/BetterRanching/BetterRanching.cs @@ -8,6 +8,7 @@ using StardewValley; using StardewValley.Characters; using StardewValley.GameData.FarmAnimals; +using StardewValley.Tools; namespace BetterRanching { @@ -139,11 +140,11 @@ private void OnButtonPressed(object sender, ButtonPressedEventArgs e) toolRect); OverrideRanching(Game1.currentLocation, (int)who.GetToolLocation().X, (int)who.GetToolLocation().Y, who, - e.Button, who.CurrentTool?.Name); + e.Button, who.CurrentTool); } private void OverrideRanching(GameLocation currentLocation, int x, int y, Farmer who, SButton button, - string toolName) + Tool tool) { AnimalBeingRanched = null; FarmAnimal animal = null; @@ -151,16 +152,16 @@ private void OverrideRanching(GameLocation currentLocation, int x, int y, Farmer var ranchActionPresent = string.Empty; var ranchProduct = string.Empty; - if (toolName == null) return; + if (tool == null) return; - switch (toolName) + switch (tool) { - case GameConstants.Tools.MilkPail: + case MilkPail: ranchAction = Helper.Translation.Get("action.unable.milk"); ranchActionPresent = Helper.Translation.Get("action.out_of_range.milk"); ranchProduct = Helper.Translation.Get("product.milk"); break; - case GameConstants.Tools.Shears: + case Shears: ranchAction = Helper.Translation.Get("action.unable.shear"); ranchActionPresent = Helper.Translation.Get("action.out_of_range.shear"); ranchProduct = Helper.Translation.Get("product.wool"); @@ -178,14 +179,14 @@ private void OverrideRanching(GameLocation currentLocation, int x, int y, Farmer FarmAnimalData animalData = animal.GetAnimalData(); - if (animal.CanBeRanched(toolName)) + if (animal.CanBeRanched(tool)) { if (who.couldInventoryAcceptThisItem(animal.currentProduce.Value, (!animal.hasEatenAnimalCracker.Value) ? 1 : 2, animal.produceQuality.Value)) AnimalBeingRanched = animal; else Helper.Input.OverwriteState(button, Helper.Translation.Get("notification.inventory_full")); } - else if (animal.isBaby() && animalData.HarvestTool == toolName) + else if (animal.isBaby() && animal.CanGetProduceWithTool(tool)) { Helper.Input.OverwriteState(button); DelayedAction.showDialogueAfterDelay( @@ -215,4 +216,4 @@ private void OnRenderedWorld(object sender, RenderedWorldEventArgs e) () => !pet.lastPetDay.TryGetValue(Game1.player.UniqueMultiplayerID, out var lastValue) || lastValue != Game1.Date.TotalDays); } } -} \ No newline at end of file +} diff --git a/BetterRanching/BetterRanchingApi.cs b/BetterRanching/BetterRanchingApi.cs index d7d32ab..b028b14 100644 --- a/BetterRanching/BetterRanchingApi.cs +++ b/BetterRanching/BetterRanchingApi.cs @@ -5,6 +5,7 @@ using StardewValley; using StardewValley.Characters; using StardewValley.GameData.Pets; +using StardewValley.GameData.FarmAnimals; using StardewValley.ItemTypeDefinitions; namespace BetterRanching @@ -65,8 +66,7 @@ public void DrawItemBubble(SpriteBatch spriteBatch, FarmAnimal animal, bool ranc animal.GetSpriteWidthForPositioning() * (animal.buildingTypeILiveIn.Contains("Coop") && animal.isAdult() ? -1 : 1), animal.buildingTypeILiveIn.Contains("Coop") && animal.isAdult(), produceId, - () => !ranchingInProgress && (animal.CanBeRanched(GameConstants.Tools.MilkPail) || - animal.CanBeRanched(GameConstants.Tools.Shears)), + () => !ranchingInProgress && animal.currentProduce.Value != null && animal.isAdult() && animal.GetHarvestType() == FarmAnimalHarvestType.HarvestWithTool, () => !animal.wasPet.Value, true, false, @@ -164,4 +164,4 @@ public void DrawItemBubble(SpriteBatch spriteBatch, float xPosition, float yPosi false, false, -1); } } -} \ No newline at end of file +} diff --git a/BetterRanching/GameExtensions.cs b/BetterRanching/GameExtensions.cs index 51b8e3c..9d65a2c 100644 --- a/BetterRanching/GameExtensions.cs +++ b/BetterRanching/GameExtensions.cs @@ -5,6 +5,7 @@ using StardewModdingAPI; using StardewValley; using StardewValley.TerrainFeatures; +using StardewValley.Tools; using xTile.Dimensions; using xTile.Tiles; @@ -12,10 +13,10 @@ namespace BetterRanching { public static class GameExtensions { - public static bool CanBeRanched(this FarmAnimal animal, string toolName) + public static bool CanBeRanched(this FarmAnimal animal, Tool tool) { return animal.currentProduce.Value != null && animal.isAdult() && - animal.GetAnimalData().HarvestTool == toolName; + animal.CanGetProduceWithTool(tool); } public static void OverwriteState(this IInputHelper input, SButton button, string message = null) @@ -50,4 +51,4 @@ public static bool PlayerCanGrabSomething() return Utility.canGrabSomethingFromHere((int)position.X, (int)position.Y, Game1.player); } } -} \ No newline at end of file +}