Exemplo n.º 1
0
        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.";
        }