public static void Postfix(ushort buildingID, ref Building buildingData, ref Building.Frame frameData) { // Update problems ConstructionAI.ProcessBuildingConstruction(buildingID, ref buildingData, ref frameData); if (!buildingData.m_flags.IsFlagSet(Building.Flags.Completed)) { if (MainDataStore.constructionResourceBuffer[buildingID] >= 8000) { Notification.Problem problem = Notification.RemoveProblems(buildingData.m_problems, Notification.Problem.NoResources); buildingData.m_problems = problem; } else { if (RealConstruction.debugMode) { if (buildingData.m_problems == Notification.Problem.None) { Notification.Problem problem = Notification.AddProblems(buildingData.m_problems, Notification.Problem.NoResources); buildingData.m_problems = problem; } } } } else { Notification.Problem problem = Notification.RemoveProblems(buildingData.m_problems, Notification.Problem.NoResources); buildingData.m_problems = problem; } }
public static void Postfix(ushort buildingID, ref Building buildingData, ref Building.Frame frameData) { // Update problems if (CustomPlayerBuildingAI.CanOperation(buildingID, ref buildingData) && buildingData.m_flags.IsFlagSet(Building.Flags.Completed) && (RealConstruction.operationConsumption != 2)) { OperationAI.ProcessPlayerBuildingOperation(buildingID, ref buildingData); if (MainDataStore.operationResourceBuffer[buildingID] > 100) { if (buildingData.Info.m_class.m_service == ItemClass.Service.PlayerIndustry) { if (buildingData.Info.m_class.m_subService == ItemClass.SubService.PlayerIndustryFarming) { if (RealConstruction.operationConsumption == 1) { MainDataStore.operationResourceBuffer[buildingID] -= 5; } else { MainDataStore.operationResourceBuffer[buildingID] -= 10; } } else if (buildingData.Info.m_class.m_subService == ItemClass.SubService.PlayerIndustryForestry) { if (RealConstruction.operationConsumption == 1) { MainDataStore.operationResourceBuffer[buildingID] -= 10; } else { MainDataStore.operationResourceBuffer[buildingID] -= 20; } } else if (buildingData.Info.m_class.m_subService == ItemClass.SubService.PlayerIndustryOre) { if (RealConstruction.operationConsumption == 1) { MainDataStore.operationResourceBuffer[buildingID] -= 15; } else { MainDataStore.operationResourceBuffer[buildingID] -= 30; } } else if (buildingData.Info.m_class.m_subService == ItemClass.SubService.PlayerIndustryOil) { if (RealConstruction.operationConsumption == 1) { MainDataStore.operationResourceBuffer[buildingID] -= 20; } else { MainDataStore.operationResourceBuffer[buildingID] -= 40; } } else { if (RealConstruction.operationConsumption == 1) { MainDataStore.operationResourceBuffer[buildingID] -= 25; } else { MainDataStore.operationResourceBuffer[buildingID] -= 50; } } } else { if (RealConstruction.operationConsumption == 1) { MainDataStore.operationResourceBuffer[buildingID] -= 50; } else { MainDataStore.operationResourceBuffer[buildingID] -= 100; } } if (CustomPlayerBuildingAI.CanRemoveNoResource(buildingID, ref buildingData)) { Notification.Problem problem = Notification.RemoveProblems(buildingData.m_problems, Notification.Problem.NoResources); buildingData.m_problems = problem; } } else { MainDataStore.operationResourceBuffer[buildingID] = 0; if (RealConstruction.debugMode) { if (buildingData.m_problems == Notification.Problem.None) { Notification.Problem problem = Notification.AddProblems(buildingData.m_problems, Notification.Problem.NoResources); buildingData.m_problems = problem; } } else { if (CustomPlayerBuildingAI.CanRemoveNoResource(buildingID, ref buildingData)) { Notification.Problem problem = Notification.RemoveProblems(buildingData.m_problems, Notification.Problem.NoResources); buildingData.m_problems = problem; } } } } else { if (CustomPlayerBuildingAI.CanRemoveNoResource(buildingID, ref buildingData)) { Notification.Problem problem = Notification.RemoveProblems(buildingData.m_problems, Notification.Problem.NoResources); buildingData.m_problems = problem; } } if (CustomPlayerBuildingAI.CanConstruction(buildingID, ref buildingData)) { if (!buildingData.m_flags.IsFlagSet(Building.Flags.Completed)) { ConstructionAI.ProcessBuildingConstruction(buildingID, ref buildingData, ref frameData); if (MainDataStore.constructionResourceBuffer[buildingID] >= 8000) { Notification.Problem problem = Notification.RemoveProblems(buildingData.m_problems, Notification.Problem.NoResources); buildingData.m_problems = problem; } else { if (RealConstruction.debugMode) { if (buildingData.m_problems == Notification.Problem.None) { Notification.Problem problem = Notification.AddProblems(buildingData.m_problems, Notification.Problem.NoResources); buildingData.m_problems = problem; } } } } } // if (ResourceBuildingAI.IsSpecialBuilding((ushort)buildingID)) { if (buildingData.m_flags.IsFlagSet(Building.Flags.Completed)) { ResourceBuildingAI.ProcessCityResourceDepartmentBuildingGoods(buildingID, ref buildingData); ResourceBuildingAI.ProcessCityResourceDepartmentBuildingOutgoing(buildingID, ref buildingData); ResourceBuildingAI.ProcessCityResourceDepartmentBuildingIncoming(buildingID, ref buildingData); } } }