public static void UpdateSliders() { UIPanel budgetPanel = getBudgetPanel(); if (budgetPanel != null) { SimulationManager sm = Singleton <SimulationManager> .instance; AutobudgetObjectsContainer c = Singleton <AutobudgetManager> .instance.container; freezeUI = true; foreach (AutobudgetBase obj in c.AllAutobudgetObjects) { UIComponent budgetItem = budgetPanel.Find(obj.GetBudgetItemName()); if (budgetItem != null) { UISlider slider = budgetItem.Find <UISlider>(sm.m_isNightTime ? "NightSlider" : "DaySlider"); int updatedValue = Singleton <EconomyManager> .instance.GetBudget(obj.GetService(), obj.GetSubService(), sm.m_isNightTime); if (slider.value != updatedValue) { slider.value = updatedValue; } } } freezeUI = false; } }
private static void removeControls() { UITabContainer economyContainer = ToolsModifierControl.economyPanel.component.Find <UITabContainer>("EconomyContainer"); if (economyContainer != null) { UIPanel budgetPanel = economyContainer.Find <UIPanel>("Budget"); if (budgetPanel != null) { AutobudgetObjectsContainer c = Singleton <AutobudgetManager> .instance.container; foreach (AutobudgetBase obj in c.AllAutobudgetObjects) { UIPanel container = budgetPanel.Find <UIPanel>(obj.GetEconomyPanelContainerName()); if (container != null) { UIPanel budgetItem = container.Find <UIPanel>(obj.GetBudgetItemName()); if (budgetItem != null) { string controlName = AutobudgetItemPanel.GetControlNameFromItemName(obj.GetBudgetItemName()); AutobudgetItemPanel autobudgetItemControl = budgetItem.Find <AutobudgetItemPanel>(controlName); if (autobudgetItemControl != null) { budgetItem.RemoveUIComponent(autobudgetItemControl); Component.Destroy(autobudgetItemControl); } } } } } } }
public void TotalAutobudgetOptionsUpdateUI() { if (UI_Electricity_Enabled == null) { return; } AutobudgetObjectsContainer c = Singleton <AutobudgetManager> .instance.container; freezeUI = true; UI_Electricity_Enabled.isChecked = c.AutobudgetElectricity.Enabled; UI_Electricity_Buffer.value = c.AutobudgetElectricity.AutobudgetBuffer; UI_Electricity_MaxBudget.value = c.AutobudgetElectricity.BudgetMaxValue; UI_Electricity_AutoPause.isChecked = c.AutobudgetElectricity.PauseWhenBudgetTooHigh; UI_Water_Enabled.isChecked = c.AutobudgetWater.Enabled; UI_Water_Buffer.value = c.AutobudgetWater.AutobudgetBuffer; UI_Water_MaxBudget.value = c.AutobudgetWater.BudgetMaxValue; UI_Water_AutoPause.isChecked = c.AutobudgetWater.PauseWhenBudgetTooHigh; UI_Water_StorageAmount.value = c.AutobudgetWater.TargetWaterStorageRatio; UI_Water_UseHeating.isChecked = c.AutobudgetWater.UseHeatingAutobudget; UI_Water_MaxHeatingBudget.value = c.AutobudgetWater.HeatingBudgetMaxValue; UI_Garbage_Enabled.isChecked = c.AutobudgetGarbage.Enabled; UI_Garbage_MaxBudget.value = c.AutobudgetGarbage.BudgetMaxValue; UI_Garbage_MaxAmount.value = c.AutobudgetGarbage.MaximumGarbageAmount; UI_Healthcare_Enabled.isChecked = c.AutobudgetHealthcare.Enabled; UI_Healthcare_MinBudget.value = c.AutobudgetHealthcare.BudgetMinValue; UI_Healthcare_MaxBudget.value = c.AutobudgetHealthcare.BudgetMaxValue; UI_Education_Enabled.isChecked = c.AutobudgetEducation.Enabled; UI_Education_ElementaryRate.value = c.AutobudgetEducation.ElementaryEducationTargetRate; UI_Education_HighRate.value = c.AutobudgetEducation.HighEducationTargetRate; UI_Education_MaxBudget.value = c.AutobudgetEducation.BudgetMaxValue; UI_Police_Enabled.isChecked = c.AutobudgetPolice.Enabled; UI_Police_MinBudget.value = c.AutobudgetPolice.BudgetMinValue; UI_Police_MaxBudget.value = c.AutobudgetPolice.BudgetMaxValue; UI_Fire_Enabled.isChecked = c.AutobudgetFire.Enabled; UI_Fire_MinBudget.value = c.AutobudgetFire.BudgetMinValue; UI_Fire_MaxBudget.value = c.AutobudgetFire.BudgetMaxValue; UI_Fire_TrucksExcessNum.value = c.AutobudgetFire.FireTrucksExcessNum; UI_Road_Enabled.isChecked = c.AutobudgetRoad.Enabled; UI_Road_MinBudget.value = c.AutobudgetRoad.BudgetMinValue; UI_Road_MaxBudget.value = c.AutobudgetRoad.BudgetMaxValue; UI_Post_Enabled.isChecked = c.AutobudgetPost.Enabled; UI_Post_MaxBudget.value = c.AutobudgetPost.BudgetMaxValue; UI_Taxi_Enabled.isChecked = c.AutobudgetTaxi.Enabled; UI_Taxi_MaxBudget.value = c.AutobudgetTaxi.BudgetMaxValue; UI_Taxi_DepotVehiclesExcessNum.value = c.AutobudgetTaxi.TargetNumberOfVehiclesWaitingAtDepot; UI_Taxi_StandVehiclesExcessNum.value = c.AutobudgetTaxi.TargetNumberOfVehiclesWaitingAtStand; freezeUI = false; }
public void ReadValuesFromFile() { container = AutobudgetObjectsContainer.CreateFromFile(); if (container == null) { container = new AutobudgetObjectsContainer(); } container.InitObjects(); }
protected override void setAutobudget() { DistrictManager dm = Singleton <DistrictManager> .instance; int capacity = dm.m_districts.m_buffer[0].GetElectricityCapacity(); // No electricity if (capacity <= 0) { return; } int consumption = dm.m_districts.m_buffer[0].GetElectricityConsumption(); // No changes from the previous state if (capacity == capacity_prev && consumption == consumption_prev) { return; } capacity_prev = capacity; consumption_prev = consumption; int electricityFromGarbage = getGarbageElectricityProduction(); //Debug.Log(string.Format("capacity = {0}, consumption = {1}, getGarbageElectricityProduction = {2}", capacity, consumption, getGarbageElectricityProduction())); AutobudgetObjectsContainer o = Singleton <AutobudgetManager> .instance.container; EconomyManager em = Singleton <EconomyManager> .instance; SimulationManager sm = Singleton <SimulationManager> .instance; int budget = em.GetBudget(ItemClass.Service.Electricity, ItemClass.SubService.None, sm.m_isNightTime); int newBudget = calculateNewBudget(capacity - electricityFromGarbage, consumption - electricityFromGarbage, budget, getBufferCoefficient(AutobudgetBuffer)); newBudget = Math.Min(newBudget, BudgetMaxValue); if (newBudget == BudgetMaxValue && PauseWhenBudgetTooHigh && !isPausedRecently) { SetPause(); isPausedRecently = true; Singleton <InfoManager> .instance.SetCurrentMode(InfoManager.InfoMode.Electricity, InfoManager.SubInfoMode.Default); } if (newBudget < BudgetMaxValue) { isPausedRecently = false; } setBudget(newBudget); }
public static void UpdateControls() { UIPanel budgetPanel = getBudgetPanel(); if (budgetPanel != null) { AutobudgetObjectsContainer c = Singleton <AutobudgetManager> .instance.container; freezeUI = true; foreach (AutobudgetBase obj in c.AllAutobudgetObjects) { updateCheckBox(budgetPanel, obj.GetBudgetItemName(), obj.Enabled); } freezeUI = false; } }
public static AutobudgetObjectsContainer CreateFromFile() { string path = getOptionsFilePath(); if (!File.Exists(path)) { return(null); } try { XmlSerializer ser = new XmlSerializer(typeof(AutobudgetObjectsContainer)); TextReader reader = new StreamReader(path); AutobudgetObjectsContainer instance = (AutobudgetObjectsContainer)ser.Deserialize(reader); reader.Close(); return(instance); } catch { return(null); } }
private static void createControls() { UITabContainer economyContainer = ToolsModifierControl.economyPanel.component.Find <UITabContainer>("EconomyContainer"); if (economyContainer != null) { UIPanel budgetPanel = economyContainer.Find <UIPanel>("Budget"); if (budgetPanel != null) { AutobudgetObjectsContainer c = Singleton <AutobudgetManager> .instance.container; foreach (AutobudgetBase obj in c.AllAutobudgetObjects) { UIPanel container = budgetPanel.Find <UIPanel>(obj.GetEconomyPanelContainerName()); if (container != null) { UIPanel budgetItem = container.Find <UIPanel>(obj.GetBudgetItemName()); if (budgetItem != null) { AutobudgetItemPanel autobudgetPanel = budgetItem.AddUIComponent <AutobudgetItemPanel>(); autobudgetPanel.SetName(obj.GetBudgetItemName()); autobudgetPanel.isChecked = obj.Enabled; autobudgetPanel.SetCheckCallback(delegate(bool isChecked) { if (!freezeUI) { obj.Enabled = isChecked; Mod.UpdateUI(); } }); } } } } } }
public void ResetToDefaultValues() { container = new AutobudgetObjectsContainer(); container.InitObjects(); }
protected override void setAutobudget() { DistrictManager dm = Singleton <DistrictManager> .instance; // Water int waterCapacity = dm.m_districts.m_buffer[0].GetWaterCapacity(); int waterConsumption = dm.m_districts.m_buffer[0].GetWaterConsumption(); // Sewage int sewageCapacity = dm.m_districts.m_buffer[0].GetSewageCapacity(); int sewageAccumulation = dm.m_districts.m_buffer[0].GetSewageAccumulation(); // No water and no sewage if (waterCapacity <= 0 && sewageCapacity <= 0) { return; } int waterStorageCapacity = dm.m_districts.m_buffer[0].GetWaterStorageCapacity(); int waterStorageAmount = dm.m_districts.m_buffer[0].GetWaterStorageAmount(); int waterStorageRatio = waterStorageCapacity == 0 ? 0 : waterStorageAmount * 100 / waterStorageCapacity; AutobudgetObjectsContainer o = Singleton <AutobudgetManager> .instance.container; EconomyManager em = Singleton <EconomyManager> .instance; SimulationManager sm = Singleton <SimulationManager> .instance; int budget = em.GetBudget(ItemClass.Service.Water, ItemClass.SubService.None, sm.m_isNightTime); float buffer = getBufferCoefficient(AutobudgetBuffer); int newWaterBudget = waterStorageRatio > TargetWaterStorageRatio ? 50 : calculateNewBudget(waterCapacity, waterConsumption, budget, buffer); int newSewageBudget = calculateNewBudget(sewageCapacity, sewageAccumulation, budget, buffer); int newBudget = Math.Max(newWaterBudget, newSewageBudget); newBudget = Math.Min(newBudget, BudgetMaxValue); if (newBudget == BudgetMaxValue && PauseWhenBudgetTooHigh && !isPausedRecently) { SetPause(); isPausedRecently = true; Singleton <InfoManager> .instance.SetCurrentMode(InfoManager.InfoMode.Water, InfoManager.SubInfoMode.Default); } if (newBudget < BudgetMaxValue) { isPausedRecently = false; } // Heating autobudget if (UseHeatingAutobudget && newBudget < HeatingBudgetMaxValue) { if (heatingCounter-- <= 0) { heatingCounter = heatingRefreshCount; if (currentHeatingBudget < newBudget) { currentHeatingBudget = newBudget; } int heatingProblemCount = 0; int allBldCount = 0; BuildingManager bm = Singleton <BuildingManager> .instance; for (int n = 0; n <= (255 + 1) * 192 - 1; n++) { Building.Flags flags = bm.m_buildings.m_buffer[n].m_flags; if ((flags & Building.Flags.Created) != Building.Flags.None) { if (bm.m_buildings.m_buffer[n].m_heatingProblemTimer > 0) { heatingProblemCount++; } allBldCount++; } } if (allBldCount > 0) { if (heatingProblemCount > 0) { currentHeatingBudget += 1 + heatingProblemCount * 20 / allBldCount; } else { currentHeatingBudget -= 1; } } } if (currentHeatingBudget > HeatingBudgetMaxValue) { currentHeatingBudget = HeatingBudgetMaxValue; } if (currentHeatingBudget > newBudget) { newBudget = currentHeatingBudget; } } setBudget(newBudget); }