public static (bool completed, string message) ApplyUpgrade(ChipDigger digger, DiggerUpgradeItem item) { if (item is ChipsHopperUpgradeItem) { var testResult = TestHopperUpgrade(digger, item as ChipsHopperUpgradeItem); if (!testResult.passed) { return(testResult); } digger.UpgradeHopper(((ChipsHopperUpgradeItem)item).GetUpgrade()); return(true, "Hopper upgraded to Large_Hopper"); } if (item is BitUpgradeItem) { var testResult = TestBitUpgrade(digger, item as BitUpgradeItem); if (!testResult.passed) { return(testResult); } digger.UpgradeBit(((BitUpgradeItem)item).GetUpgrade()); } return(true, "Upgrade Applied"); }