private void RefreshDisplayData() { if (refeshOnce || (MainDataStore.lastBuildingID != WorldInfoPanel.GetCurrentInstanceID().Building)) { if (base.isVisible) { MainDataStore.lastBuildingID = WorldInfoPanel.GetCurrentInstanceID().Building; Building buildingData = Singleton <BuildingManager> .instance.m_buildings.m_buffer[MainDataStore.lastBuildingID]; if (ResourceBuildingAI.IsSpecialBuilding(MainDataStore.lastBuildingID) == true) { this.food.text = string.Format(Localization.Get("FOOD_STORED") + " [{0}]", MainDataStore.foodBuffer[MainDataStore.lastBuildingID]); this.lumber.text = string.Format(Localization.Get("LUMBER_STORED") + " [{0}]", MainDataStore.lumberBuffer[MainDataStore.lastBuildingID]); this.coal.text = string.Format(Localization.Get("COAL_STORED") + " [{0}]", MainDataStore.coalBuffer[MainDataStore.lastBuildingID]); this.petrol.text = string.Format(Localization.Get("PETROL_STORED") + " [{0}]", MainDataStore.petrolBuffer[MainDataStore.lastBuildingID]); this.operationResource.text = string.Format(Localization.Get("OPERATION_RESOURCE") + " [{0}]", MainDataStore.operationResourceBuffer[MainDataStore.lastBuildingID]); this.constructionResource.text = string.Format(Localization.Get("CONSTRUCTION_RESOURCE") + " [{0}]", MainDataStore.constructionResourceBuffer[MainDataStore.lastBuildingID]); buildingType.text = Localization.Get("BUILDING_TYPE"); buildingTypeDD.items = new string[] { Localization.Get("NORMAL_BUILDING"), Localization.Get("GENERATE_BOTH_RESOURCES"), Localization.Get("GENERATE_CONSTRUCTION_RESOURCES"), Localization.Get("GENERATE_OPERATION_RESOURCES"), Localization.Get("NONEED_RESOURCE") }; if (buildingTypeDD.selectedIndex != MainDataStore.resourceCategory[MainDataStore.lastBuildingID]) { buildingTypeDD.selectedIndex = MainDataStore.resourceCategory[MainDataStore.lastBuildingID]; } } else { this.food.text = ""; this.lumber.text = ""; this.coal.text = ""; this.petrol.text = ""; this.constructionResource.text = ""; this.operationResource.text = string.Format(Localization.Get("OPERATION_RESOURCE_LEFT") + " [{0}]", MainDataStore.operationResourceBuffer[MainDataStore.lastBuildingID]); buildingType.text = Localization.Get("BUILDING_TYPE"); buildingTypeDD.items = new string[] { Localization.Get("NORMAL_BUILDING"), Localization.Get("GENERATE_BOTH_RESOURCES"), Localization.Get("GENERATE_CONSTRUCTION_RESOURCES"), Localization.Get("GENERATE_OPERATION_RESOURCES"), Localization.Get("NONEED_RESOURCE") }; if (buildingTypeDD.selectedIndex != MainDataStore.resourceCategory[MainDataStore.lastBuildingID]) { buildingTypeDD.selectedIndex = MainDataStore.resourceCategory[MainDataStore.lastBuildingID]; } } refeshOnce = false; this.BringToFront(); if (!CustomPlayerBuildingAI.CanOperation(MainDataStore.lastBuildingID, ref buildingData, false) && !ResourceBuildingAI.IsSpecialBuilding(MainDataStore.lastBuildingID)) { this.Hide(); } } else { this.Hide(); } } }
public static bool Prefix(ushort buildingID, ref Building buildingData, ref int __result) { ushort eventIndex = buildingData.m_eventIndex; if (eventIndex != 0) { EventManager instance = Singleton <EventManager> .instance; EventInfo info = instance.m_events.m_buffer[eventIndex].Info; __result = info.m_eventAI.GetBudget(eventIndex, ref instance.m_events.m_buffer[eventIndex]); } if (MainDataStore.operationResourceBuffer[buildingID] < 1000 && CustomPlayerBuildingAI.CanOperation(buildingID, ref buildingData) && (RealConstruction.operationConsumption != 2)) { __result = 10; } else { __result = Singleton <EconomyManager> .instance.GetBudget(buildingData.Info.m_class); } return(false); }
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); } } }