/// <summary> /// Forces a building to upgrade. /// </summary> /// <param name="buildingID">Building instance ID</param> internal static void TriggerLevelUp(ushort buildingID) { // Don't force upgrade if building is already upgrading. if (Singleton <BuildingManager> .instance.m_buildings.m_buffer[buildingID].m_flags.IsFlagSet(Building.Flags.Upgrading)) { return; } // Don't force upgrade if building is already at maximum level. // Note GetMaxLevel is 1-based, m_level is 0-based, so +1 for difference. if (Singleton <BuildingManager> .instance.m_buildings.m_buffer[buildingID].m_level + 1 >= GetMaxLevel(buildingID)) { return; } // Get building AI and force upgrade. PrivateBuildingAI buildingAI = Singleton <BuildingManager> .instance.m_buildings.m_buffer[buildingID].Info?.GetAI() as PrivateBuildingAI; if (buildingAI == null) { Logging.Error("couldn't get AI for building ", buildingID.ToString()); } else { // Only upgrade if we've got a valid upgrade target. if (buildingAI.GetUpgradeInfo(buildingID, ref Singleton <BuildingManager> .instance.m_buildings.m_buffer[buildingID]) != null) { buildingAI.StartUpgrading(buildingID, ref Singleton <BuildingManager> .instance.m_buildings.m_buffer[buildingID]); } } }