From bc32650f25cac9469a691048a6945eba66a85116 Mon Sep 17 00:00:00 2001
From: Mohammad Shoaib <shoaib.khan20@outlook.com>
Date: Thu, 3 Feb 2022 17:34:13 +0530
Subject: [PATCH] Added upgrade to buildsel

---
 stardew-access/CustomCommands.cs               |  2 +-
 .../Patches/BuildingNAnimalMenuPatches.cs      | 18 ++++++++++++++++--
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/stardew-access/CustomCommands.cs b/stardew-access/CustomCommands.cs
index d337e66..b336cfd 100644
--- a/stardew-access/CustomCommands.cs
+++ b/stardew-access/CustomCommands.cs
@@ -397,7 +397,7 @@ namespace stardew_access
 
                 if (BuildingNAnimalMenuPatches.isConstructing) { }
                 else if (BuildingNAnimalMenuPatches.isDemolishing) { BuildingNAnimalMenuPatches.Demolish(BuildingNAnimalMenuPatches.availableBuildings[index]); }
-                else if (BuildingNAnimalMenuPatches.isUpgrading) { }
+                else if (BuildingNAnimalMenuPatches.isUpgrading) { BuildingNAnimalMenuPatches.Upgrade(BuildingNAnimalMenuPatches.availableBuildings[index]); }
                 else if (BuildingNAnimalMenuPatches.isMoving) { }
                 else if (BuildingNAnimalMenuPatches.isPainting) { }
             });
diff --git a/stardew-access/Patches/BuildingNAnimalMenuPatches.cs b/stardew-access/Patches/BuildingNAnimalMenuPatches.cs
index f0ea8bf..70552c9 100644
--- a/stardew-access/Patches/BuildingNAnimalMenuPatches.cs
+++ b/stardew-access/Patches/BuildingNAnimalMenuPatches.cs
@@ -322,9 +322,23 @@ namespace stardew_access.Patches
 
         }
 
-        public static void Upgrade(Building toUpgrade)
+        public static void Upgrade(Building? toUpgrade)
         {
-
+            // This code is taken from the game's code (CarpenterMenu.cs::775)
+            if (toUpgrade != null && carpenterMenu.CurrentBlueprint.name != null && toUpgrade.buildingType.Equals(carpenterMenu.CurrentBlueprint.nameOfBuildingToUpgrade))
+            {
+                carpenterMenu.CurrentBlueprint.consumeResources();
+                toUpgrade.daysUntilUpgrade.Value = 2;
+                toUpgrade.showUpgradeAnimation(Game1.getFarm());
+                Game1.playSound("axe");
+                DelayedAction.functionAfterDelay(carpenterMenu.returnToCarpentryMenuAfterSuccessfulBuild, 1500);
+                // freeze = true;
+                // Game1.multiplayer.globalChatInfoMessage("BuildingBuild", Game1.player.Name, Utility.AOrAn(carpenterMenu.CurrentBlueprint.displayName), carpenterMenu.CurrentBlueprint.displayName, Game1.player.farmName);
+            }
+            else if (toUpgrade != null)
+            {
+                Game1.addHUDMessage(new HUDMessage(Game1.content.LoadString("Strings\\UI:Carpenter_CantUpgrade_BuildingType"), Color.Red, 3500f));
+            }
         }
 
         public static void Paint(Building toPaint)