private void SetupCopyButtons() { Inputs.Add(UIUtils.CreateButton(this, "Copy Options", (component, value) => { if (!ServiceRestrictTool.instance.CustomServiceBuildingOptions.TryGetValue( ServiceRestrictTool.instance.SelectedBuildingID, out var options)) { return; } Clipboard.CopyOptions(options, ServiceRestrictTool.instance.SelectedBuildingID); }, 0.6f)); var copyButton = Inputs.Find(x => x.name == "Copy OptionsButton"); if (!ServiceRestrictTool.instance.CustomServiceBuildingOptions.TryGetValue( ServiceRestrictTool.instance.SelectedBuildingID, out var _)) { copyButton.isEnabled = false; copyButton.tooltip = "No Options are present on this building."; } copyButton.tooltip = "Copies the existing options to the clipboard." + Environment.NewLine + "This will overwrite any previous copied settings on the clipboard."; Inputs.Add(UIUtils.CreateButton(this, "Paste Options", (component, param) => { if (Clipboard.CopiedOptions == null) { return; } if (!ServiceRestrictTool.instance.CustomServiceBuildingOptions.TryGetValue( ServiceRestrictTool.instance.SelectedBuildingID, out var _)) { ServiceBuildingOptions newOptions = Clipboard.PasteOptions(); ServiceRestrictTool.instance.CustomServiceBuildingOptions.Add( ServiceRestrictTool.instance.SelectedBuildingID, newOptions); } else { var tempOptions = Clipboard.PasteOptions(); ServiceRestrictTool.instance.CustomServiceBuildingOptions[ ServiceRestrictTool.instance.SelectedBuildingID] = tempOptions; } foreach (var input in Inputs) { if (input is UICheckBox checkbox) { switch (checkbox.name) { case "Areas without a district.": { checkbox.isChecked = ServiceRestrictTool.instance.CustomServiceBuildingOptions.TryGetValue( ServiceRestrictTool.instance.SelectedBuildingID, out var props) && props.CoveredDistricts.Contains(0); } break; case "aaThisDistrictOnly": { checkbox.isChecked = ServiceRestrictTool.instance.CustomServiceBuildingOptions.TryGetValue( ServiceRestrictTool.instance.SelectedBuildingID, out var props) && props.CoveredDistricts.Contains(DistrictHelper.RetrieveDistrictIDFromName( DistrictManager.instance.GetDistrictName( DistrictManager.instance.GetDistrict(BuildingManager.instance.m_buildings .m_buffer[ServiceRestrictTool.instance.SelectedBuildingID] .m_position)))); } break; default: { checkbox.isChecked = ServiceRestrictTool.instance.CustomServiceBuildingOptions.TryGetValue( ServiceRestrictTool.instance.SelectedBuildingID, out var props) && props.CoveredDistricts.Contains( DistrictHelper.RetrieveDistrictIDFromName(checkbox.name)); } break; } } } }, 0.6f)); var pasteButton = Inputs.Find(x => x.name == "Paste OptionsButton"); if (Clipboard.CopiedOptions == null) { pasteButton.isEnabled = false; pasteButton.tooltip = "No Options have been copied yet."; } pasteButton.tooltip = $"Pastes the copied settings from {CustomizeItExtendedCompatibility.RetrieveBuildingName(Clipboard.CopiedBuildingID)} onto this building." + Environment.NewLine + "This will overwrite this buildings current settings."; }