/// <summary> /// Removes and deletes a custom override. /// </summary> private void DeleteOverride() { // Hide message. messageLabel.isVisible = false; // Don't do anything with invalid entries. if (currentSelection == null || currentSelection.name == null) { return; } Logging.Message("deleting custom override for ", currentSelection.name); // Remove any and all overrides. FloorData.instance.DeleteOverride(currentSelection); PopData.instance.DeleteOverride(currentSelection); // Update panel override. BuildingDetailsPanel.Panel.OverrideFloors = null; // Homes or jobs? if (currentSelection.GetService() == ItemClass.Service.Residential) { // Residential building - remove any legacy settings to avoid conflicts. OverrideUtils.RemoveResidential(currentSelection); // Update CitizenUnits for existing instances of this building. CitizenUnitUtils.UpdateCitizenUnits(currentSelection.name, currentSelection.GetService(), currentSelection.GetSubService(), false); } else { // Employment building - remove any legacy settings to avoid conflicts. OverrideUtils.RemoveWorker(currentSelection); } // Refresh the display so that all panels reflect the updated settings. BuildingDetailsPanel.Panel.Refresh(); homeJobsCount.textField.text = string.Empty; }
/// <summary> /// Refreshes a prefab's population settings to reflect changes. /// </summary> /// <param name="prefab">Prefab to refresh</param> protected void RefreshPrefab(BuildingInfo prefab) { // Clear out any cached calculations for households.workplaces (depending on whether or not this is residential). if (prefab.GetService() == ItemClass.Service.Residential) { // Remove from household cache. PopData.instance.householdCache.Remove(prefab); } else { // Remove from workplace cache. PopData.instance.workplaceCache.Remove(prefab); // Force RICO refresh, if we're using Ploppable RICO Revisited. if (ModUtils.ricoClearWorkplace != null) { ModUtils.ricoClearWorkplace.Invoke(null, new object[] { prefab }); } } // Update CitizenUnits for existing instances of this building. CitizenUnitUtils.UpdateCitizenUnits(prefab.name, ItemClass.Service.None, prefab.GetSubService(), false); }
/// <summary> /// Saves and applies settings - save button event handler. /// </summary> private void SaveAndApply() { // Hide message. messageLabel.isVisible = false; // Don't do anything with invalid entries. if (currentSelection == null || currentSelection.name == null) { return; } // Are we doing population overrides? if (popCheck.isChecked) { // Read total floor count textfield if possible; ignore zero values if (int.TryParse(homeJobsCount.textField.text, out int homesJobs) && homesJobs != 0) { // Minimum value of 1. if (homesJobs < 1) { // Print warning message in red. messageLabel.textColor = new Color32(255, 0, 0, 255); messageLabel.text = Translations.Translate("RPR_ERR_ZERO"); messageLabel.isVisible = true; } else { // Set overide. PopData.instance.SetOverride(currentSelection, homesJobs); // Update CitizenUnits for existing building instances. CitizenUnitUtils.UpdateCitizenUnits(currentSelection.name, ItemClass.Service.None, currentSelection.GetSubService(), false); // Repopulate field with parsed value. homeJobLabel.text = homesJobs.ToString(); } } else { // TryParse couldn't parse any data; print warning message in red. messageLabel.textColor = new Color32(255, 0, 0, 255); messageLabel.text = Translations.Translate("RPR_ERR_INV"); messageLabel.isVisible = true; } } else { // Population override checkbox wasn't checked; remove any custom settings. PopData.instance.DeleteOverride(currentSelection); // Remove any legacy file settings to avoid conflicts. OverrideUtils.RemoveResidential(currentSelection); OverrideUtils.RemoveWorker(currentSelection); } // Are we doing floor overrides? if (floorCheck.isChecked) { // Attempt to parse values into override floor pack. FloorDataPack overrideFloors = TryParseFloors(); // Were we successful?. if (overrideFloors != null) { // Successful parsing - add override. FloorData.instance.SetOverride(currentSelection, overrideFloors); // Save configuration. ConfigUtils.SaveSettings(); // Update panel override. BuildingDetailsPanel.Panel.OverrideFloors = overrideFloors; // Repopulate fields with parsed values. UpdateFloorTextFields(overrideFloors.firstFloorMin.ToString(), overrideFloors.floorHeight.ToString()); } else { // Couldn't parse values; print warning message in red. messageLabel.textColor = new Color32(255, 0, 0, 255); messageLabel.text = Translations.Translate("RPR_ERR_INV"); messageLabel.isVisible = true; } } else { // Floor override checkbox wasn't checked; remove any floor override. FloorData.instance.DeleteOverride(currentSelection); } // Refresh the display so that all panels reflect the updated settings. BuildingDetailsPanel.Panel.Refresh(); }