Esempio n. 1
0
        public void AddGUIToggle()
        {
            UIMultiStateButton zoomButton = GameObject.Find("ZoomButton").GetComponent <UIMultiStateButton>();

            UIComponent bottomBar = zoomButton.parent;

            UIButton toggle = UIFactory.CreateButton(bottomBar);

            toggle.area            = new Vector4(108, 24, 38, 38);
            toggle.playAudioEvents = true;

            toggle.normalBgSprite  = "OptionBase";
            toggle.focusedBgSprite = "OptionBaseFocus";
            toggle.hoveredBgSprite = "OptionBaseHover";
            toggle.pressedBgSprite = "OptionBasePressed";

            toggle.tooltip = i18n.current["toggle_tooltip"];

            toggle.normalFgSprite = "InfoIconEntertainmentDisabled";
            toggle.scaleFactor    = 0.75f;

            toggle.eventClicked += (UIComponent component, UIMouseEventParameter eventParam) =>
            {
                bool active = !sunControlPanel.gameObject.active;


                toggle.normalBgSprite = active ? "OptionBasePressed" : "OptionBase";

                sunControlPanel.gameObject.SetActive(active);
                timeSlider.gameObject.SetActive(active);
            };
        }
Esempio n. 2
0
        public void CreateUI()
        {
            // Delete the old button, panel, and object if they're there.
            UIMultiStateButton oldButton = UIUtils.Find <UIMultiStateButton>(BUTTON_NAME);

            if (oldButton != null)
            {
                GameObject.Destroy(oldButton);
            }
            UIPanel oldPanel = UIUtils.Find <UIPanel>(PANEL_NAME);

            if (oldPanel != null)
            {
                GameObject.Destroy(oldPanel);
            }

            UIComponent roadsOptionPanel = UIUtils.Find <UIComponent>("DistrictOptionPanel");

            if (roadsOptionPanel == null)
            {
                // Listen for districts tab if it hasn't been added yet
                UITabstrip mainToolStrip = UIUtils.Find <UITabstrip>("MainToolstrip");
                if (mainToolStrip == null)
                {
                    CitiesConsole.Warning("Could not find MainToolstrip");
                    return;
                }
                mainToolStrip.eventSelectedIndexChanged += mainToolStrip_eventSelectedIndexChanged;
            }
            else
            {
                CreateButton(roadsOptionPanel);
            }
        }
Esempio n. 3
0
        public StatesButton(UIComponent component, int spriteWidth, int spriteHeight, int spriteCountHorizontal, string icons_atlas, string name, string[] tooltips)
        {
            msb = component.AddUIComponent <UIMultiStateButton> ();

            UITextureAtlas atlas = CreateTextureAtlas(icons_atlas, name, msb.atlas.material, spriteWidth, spriteHeight, spriteCountHorizontal);

            msb.name = name;

            msb.atlas = atlas;
            for (int i = 0; i < spriteCountHorizontal; i++)
            {
                msb.backgroundSprites[i].normal = name + "_" + i;
                if (i < spriteCountHorizontal - 1)
                {
                    msb.backgroundSprites.AddState();
                    msb.foregroundSprites.AddState();
                }
            }
            msb.tooltip = tooltips[0];
            if (tooltips.Length == spriteCountHorizontal)
            {
                msb.eventActiveStateIndexChanged += (component2, value) => {
                    msb.tooltip = tooltips[value];
                };
            }
            msb.width  = spriteWidth;
            msb.height = spriteHeight;
        }
Esempio n. 4
0
        private void Awake()
        {
            try
            {
                if (_tsBar == null)
                {
                    _tsBar = GameObject.Find("TSBar").GetComponent <UISlicedSprite>();
                }

                if (_bulldozerUndergroundToggle == null)
                {
                    _bulldozerUndergroundToggle = GameObject.Find("BulldozerUndergroundToggle").GetComponent <UIMultiStateButton>();
                }

                if (_happiness == null)
                {
                    _happiness = GameObject.Find("Happiness").GetComponent <UISprite>();
                }

                _textureAtlas = LoadResources();

                CreateUI();
            }
            catch (Exception e)
            {
                Debug.Log("[Bulldoze It!] Bulldozer:Awake -> Exception: " + e.Message);
            }
        }
Esempio n. 5
0
        public static void SetVanillaToggleSprites(this UIMultiStateButton multiButton, string bgPrefix, string fgPrefix)
        {
            if (!bgPrefix.IsNullOrWhiteSpace())
            {
                UIMultiStateButton.SpriteSetState _backgroundSprites = multiButton.backgroundSprites;

                if (_backgroundSprites.Count >= 2)
                {
                    _backgroundSprites[0].normal   = bgPrefix + "";
                    _backgroundSprites[0].hovered  = bgPrefix + "Hovered";
                    _backgroundSprites[0].pressed  = bgPrefix + "Pressed";
                    _backgroundSprites[0].disabled = bgPrefix + "Disabled";
                    _backgroundSprites[1].normal   = bgPrefix + "Focused";
                    _backgroundSprites[1].disabled = bgPrefix + "Disabled";
                }
            }
            if (!fgPrefix.IsNullOrWhiteSpace())
            {
                UIMultiStateButton.SpriteSetState _foregroundSprites = multiButton.foregroundSprites;

                if (_foregroundSprites.Count >= 2)
                {
                    _foregroundSprites[0].normal   = fgPrefix + "";
                    _foregroundSprites[0].hovered  = fgPrefix + "Hovered";
                    _foregroundSprites[0].pressed  = fgPrefix + "Pressed";
                    _foregroundSprites[0].disabled = fgPrefix + "Disabled";
                    _foregroundSprites[1].normal   = fgPrefix + "Focused";
                    _foregroundSprites[1].disabled = fgPrefix + "Disabled";
                }
            }
        }
Esempio n. 6
0
        public void Start()
        {
            try
            {
                _camera     = Camera.main;
                _zoomButton = GameObject.Find("ZoomButton").GetComponent <UIMultiStateButton>();
                _mainPanel  = GameObject.Find("RenderItMainPanel").GetComponent <MainPanel>();

                _postProcessingBehaviour = _camera.gameObject.GetComponent <PostProcessingBehaviour>();
                if (_postProcessingBehaviour == null)
                {
                    _postProcessingBehaviour         = _camera.gameObject.AddComponent <PostProcessingBehaviour>();
                    _postProcessingBehaviour.profile = ScriptableObject.CreateInstance <PostProcessingProfile>();
                }
                _postProcessingBehaviour.enabled = true;

                _antialiasingModel     = new AntialiasingModel();
                _ambientOcclusionModel = new AmbientOcclusionModel();
                _bloomModel            = new BloomModel();
                _colorGradingModel     = new ColorGradingModel();

                _renderItAtlas = LoadResources();
                CreateUI();
            }
            catch (Exception e)
            {
                Debug.Log("[Render It!] ModManager:Start -> Exception: " + e.Message);
            }
        }
 private void CreateUpdateButtons()
 {
     this.updateZoneButton = UIUtils.AddToggle((UIComponent)this.roadsOptionPanel, "ZoningUpdateToggle", "upgrade_zoning_icon.png", 58, 38, 31, 31, new string[5]
     {
         "Base",
         "BaseFocussed",
         "BaseHovered",
         "Icon",
         "IconFocussed"
     });
     ((UIComponent)this.updateZoneButton).set_tooltip("Toggle zoning update");
     this.updateZoneButton.get_backgroundSprites().AddState();
     this.updateZoneButton.get_foregroundSprites().AddState();
     UIUtils.setSpriteSet(this.updateZoneButton.get_backgroundSprites().get_Item(0), "Base");
     UIUtils.setSpriteSet(this.updateZoneButton.get_foregroundSprites().get_Item(0), "Icon");
     UIUtils.setSpriteSet(this.updateZoneButton.get_backgroundSprites().get_Item(1), "BaseFocussed");
     UIUtils.setSpriteSet(this.updateZoneButton.get_foregroundSprites().get_Item(1), "IconFocussed");
     this.updateZoneButton.get_backgroundSprites().get_Item(0).set_hovered("BaseHovered");
     this.updateZoneButton.get_backgroundSprites().get_Item(1).set_hovered("BaseHovered");
     // ISSUE: method pointer
     this.updateZoneButton.add_eventActiveStateIndexChanged(new PropertyChangedEventHandler <int>((object)this, __methodptr(changeToolEnabled)));
     // ISSUE: method pointer
     this.builtinModeChangedHandler = new PropertyChangedEventHandler <int>((object)this, __methodptr(\u003CCreateUpdateButtons\u003Eb__25_0));
     this.builtinTabstrip.add_eventSelectedIndexChanged(this.builtinModeChangedHandler);
 }
        /// <summary>
        /// Creates a toggle button (multi-state button) with two states: State 0 and State 1.
        /// </summary>
        /// <param name="bgPrefix0">State 0: background sprite prefix</param>
        /// <param name="bgPrefix1">State 1: background sprite prefix</param>
        /// <param name="fgPrefix0">State 0: foreground sprite prefix</param>
        /// <param name="fgPrefix1">State 1: foreground sprite prefix</param>
        /// <returns></returns>
        public static UIMultiStateButton AddAToggleButton(UIComponent parent, string name, UITextureAtlas atlas, string bgPrefix0, string bgPrefix1, string fgPrefix0, string fgPrefix1, Vector2 size)
        {
            UIMultiStateButton _button = AddAToggleButton(parent, name, atlas, bgPrefix0, bgPrefix1, fgPrefix0, fgPrefix1);

            _button.size            = size;
            _button.playAudioEvents = true;

            return(_button);
        }
        public bool CreateButtons(UIPanel uiPanel)
        {
            if (Object.op_Equality((Object)uiPanel, (Object)null))
            {
                uiPanel = UIUtils.Find <UIPanel>("RoadsOptionPanel(RoadsPanel)");
            }
            if (Object.op_Equality((Object)uiPanel, (Object)null))
            {
                Logger.Warning("Could not find RoadsOptionPanel");
                return(false);
            }
            this.roadsOptionPanel = uiPanel;
            this.builtinTabstrip  = (UITabstrip)((UIComponent)this.roadsOptionPanel).Find <UITabstrip>("ToolMode");
            this.RemoveButtons(new string[2]
            {
                "ZoningToggle",
                "ZoningUpdateToggle"
            });
            this.roadsOptionPanel.get_atlas().get_material();
            UIMultiStateButton button = UIUtils.AddToggle((UIComponent)this.roadsOptionPanel, "ZoningToggle", "togglezoning_icon.png", -38, 38, 36, 36, DeactivatableButtonWrapper.iconNames);

            this.TZWrapper = new DeactivatableButtonWrapper(button, "Toggle zoning\nRight click reset default", "Default zoning set\nRight click enable toggle");
            // ISSUE: method pointer
            this.TZWrapper.AddEventActiveStateIndexChanged(new PropertyChangedEventHandler <int>((object)this, __methodptr(handleActiveStateIndexChanged)));
            UIPanel uiPanel1 = UIUtils.Find <UIPanel>("NoPillarsPanel");

            if (Object.op_Inequality((Object)uiPanel1, (Object)null))
            {
                Logger.Info("NoPillarsPanel found");
                using (IEnumerator <UIComponent> enumerator = ((IEnumerable <UIComponent>)((UIComponent)uiPanel1).get_components()).GetEnumerator())
                {
                    while (((IEnumerator)enumerator).MoveNext())
                    {
                        UIDropDown current = enumerator.Current as UIDropDown;
                        Logger.Info("dropDown != null" + Object.op_Inequality((Object)current, (Object)null).ToString());
                        if (Object.op_Inequality((Object)current, (Object)null))
                        {
                            Logger.Info("dropDown.tooltip: '" + ((UIComponent)current).get_tooltip() + "'");
                        }
                        if (Object.op_Inequality((Object)current, (Object)null) && ((UIComponent)current).get_tooltip().Equals("Change zoning/collision mode"))
                        {
                            this.noPillarsDropDown = current;
                            // ISSUE: method pointer
                            current.add_eventSelectedIndexChanged(new PropertyChangedEventHandler <int>((object)this, __methodptr(\u003CCreateButtons\u003Eb__19_0)));
                        }
                    }
                }
            }
            Logger.Debug(string.Concat((object)OptionsWrapper.ToggleState));
            button.set_activeStateIndex((int)OptionsWrapper.ToggleState % 2);
            this.TZWrapper.active = OptionsWrapper.ToggleState != ToggleStates.deactivated;
            this.UpdateVisible(OptionsWrapper.Options.ToggleVisible);
            this.CreateUpdateButtons();
            return(true);
        }
Esempio n. 10
0
        public void HookZoomControls()
        {
            UIMultiStateButton zoomButton = GameObject.Find("ZoomButton").GetComponent <UIMultiStateButton>();

            zoomButton.tooltip         = i18n.current["zoombutton_tooltip"];
            zoomButton.eventMouseMove += MouseMoved;
            zoomButton.eventMouseUp   += MouseMoved;

            zoomButton.backgroundSprites[0].hovered = "";
            zoomButton.backgroundSprites[1].hovered = "";
        }
Esempio n. 11
0
        private static void toggleToolbarWidthButton_eventActiveStateIndexChanged(UIComponent component, int value)
        {
            Mod.Instance.Log.Debug("ToggleToolbarWidthButton activeStateIndexChanged to {0}", value);

            UITabContainer tsContainer   = GameObject.Find(GameObjectDefs.ID_TSCONTAINER).GetComponent <UITabContainer>();
            UIButton       tsCloseButton = GameObject.Find(GameObjectDefs.ID_TSCLOSEBUTTON).GetComponent <UIButton>();

            float newX     = tsContainer.absolutePosition.x;
            float newWidth = tsContainer.width;

            switch (value)
            {
            case 0:
                // Reset to normal width
                newX     = originalTSContainerX;
                newWidth = originalTSContainerWidth;
                break;

            case 1:
                // Patch to full width

                // Extend to the right
                originalTSContainerWidth = tsContainer.width;
                int extendAmount = (int)((tsCloseButton.absolutePosition.x - tsContainer.absolutePosition.x - tsContainer.width) / 109f);
                newWidth += extendAmount * 109f;

                // Extend to the left
                originalTSContainerX = tsContainer.absolutePosition.x;
                GameObject advisorButtonGameObject = GameObject.Find("AdvisorButton");
                UIPanel    optionsBar = GameObject.Find("OptionsBar").GetComponent <UIPanel>();

                float maxX = optionsBar.absolutePosition.x + optionsBar.width;
                if (advisorButtonGameObject != null)
                {
                    UIMultiStateButton advisorButton = advisorButtonGameObject.GetComponent <UIMultiStateButton>();
                    maxX = Mathf.Max(maxX, advisorButton.absolutePosition.x + advisorButton.width);
                }
                extendAmount = (int)((tsContainer.absolutePosition.x - maxX) / 109f);
                newX         = tsContainer.absolutePosition.x - extendAmount * 109f;
                newWidth    += extendAmount * 109f;

                break;
            }

            lastTSContainerX             = newX;
            lastTSContainerWidth         = newWidth;
            tsContainer.absolutePosition = new Vector2(newX, tsContainer.absolutePosition.y);
            tsContainer.width            = newWidth;

            // Save state
            Mod.Instance.Settings.State.ToolbarHasExtendedWidth = value == 1;
        }
 private void RemoveButtons(string[] oldButtons)
 {
     foreach (string oldButton in oldButtons)
     {
         UIMultiStateButton multiStateButton = (UIMultiStateButton)((UIComponent)this.roadsOptionPanel).Find <UIMultiStateButton>(oldButton);
         if (Object.op_Inequality((Object)multiStateButton, (Object)null))
         {
             ((UIComponent)multiStateButton).Hide();
             ((UIComponent)multiStateButton).get_parent().RemoveUIComponent((UIComponent)multiStateButton);
             Object.Destroy((Object)((Component)multiStateButton).get_gameObject());
         }
     }
 }
Esempio n. 13
0
        /// <summary>
        /// Removes our button to switch between the different toolbar modes.
        /// </summary>
        public static void RemoveToolbarControlBox()
        {
            ToolbarEvents.ToolbarOpened -= ToolbarEvents_ToolbarOpened;
            ToolbarEvents.ToolbarClosed -= ToolbarEvents_ToolbarClosed;

            UITabContainer tsContainer = GameObject.Find(GameObjectDefs.ID_TSCONTAINER).GetComponent <UITabContainer>();

            tsContainer.eventSizeChanged -= TSContainer_OnSizeChanged;

            UISlicedSprite tsBar = GameObject.Find(GameObjectDefs.ID_TSBAR).GetComponent <UISlicedSprite>();

            tsBar.RemoveUIComponent(toolbarControlBox);
            toolbarControlBox        = null;
            toggleToolbarWidthButton = null;
        }
Esempio n. 14
0
        public static void SetButtonPositionAndSize(
            UIMultiStateButton button,
            int x,
            int y,
            int width,
            int height)
        {
            Vector3 vector3_1;

            ((Vector3) ref vector3_1).\u002Ector((float)x, (float)y);
            Vector3 vector3_2;

            ((Vector3) ref vector3_2).\u002Ector((float)width, (float)height);
            ((UIComponent)button).set_relativePosition(vector3_1);
            ((UIComponent)button).set_size(Vector2.op_Implicit(vector3_2));
        }
 public DeactivatableButtonWrapper(
     UIMultiStateButton button,
     string tooltipActive   = "",
     string tooltipInactive = "")
 {
     this.Button          = button;
     this.tooltipActive   = tooltipActive;
     this.tooltipInactive = tooltipInactive;
     // ISSUE: method pointer
     ((UIComponent)button).add_eventMouseUp(new MouseEventHandler((object)this, __methodptr(onMouseUp)));
     this.Button.get_backgroundSprites().Clear();
     this.Button.get_foregroundSprites().Clear();
     this.Button.get_backgroundSprites().AddState();
     this.Button.get_foregroundSprites().AddState();
     this.updateButton();
 }
Esempio n. 16
0
 void DoneControls()
 {
     LocaleManager.eventLocaleChanged                     -= OnLocaleChanged;
     Destroy(btnPlay); btnPlay                             = null;
     Destroy(btnSpeed); btnSpeed                           = null;
     Destroy(lblGameTime); lblGameTime                     = null;
     Destroy(lblDayTime); lblDayTime                       = null;
     Destroy(barTime); barTime                             = null;
     Destroy(lblLocalTime); lblLocalTime                   = null;
     Destroy(lblLocalTimeA); lblLocalTimeA                 = null;
     Destroy(lblThermometer); lblThermometer               = null;
     Destroy(lblThermometerA); lblThermometerA             = null;
     Destroy(btnDayNightSwitch); btnDayNightSwitch         = null;
     Destroy(btnWeatherSwitch); btnWeatherSwitch           = null;
     Destroy(btnChirperContainer); btnChirperContainer     = null;
     Destroy(btnRadioIconContainer); btnRadioIconContainer = null;
 }
Esempio n. 17
0
        private void InitializeOpenStationDirectoryButton()
        {
            UIMultiStateButton mutebutton =
                ReflectionHelper.GetPrivateField <UIMultiStateButton>(CurrentRadioPanel, "m_muteButton");
            UIPanel radiopanel = ReflectionHelper.GetPrivateField <UIPanel>(CurrentRadioPanel, "m_radioPanel");

            m_TopOpenStationDirectory                 = radiopanel.AddUIComponent <UIButton>();
            m_TopOpenStationDirectory.position        = mutebutton.position + new Vector3((mutebutton.size.x + 5) + (m_AdditionalButtonCount++ *(mutebutton.size.y + 5)), 0);
            m_TopOpenStationDirectory.size            = new Vector2(mutebutton.size.y, mutebutton.size.y);
            m_TopOpenStationDirectory.atlas           = m_IconAtlas;
            m_TopOpenStationDirectory.normalBgSprite  = "Open";
            m_TopOpenStationDirectory.hoveredBgSprite = "Open";
            m_TopOpenStationDirectory.color           = new Color32(225, 225, 225, 255);
            m_TopOpenStationDirectory.hoveredColor    = new Color32(255, 255, 255, 255);
            m_TopOpenStationDirectory.tooltip         = "Open folder containing the radio station.";
            m_TopOpenStationDirectory.Show();

            m_TopOpenStationDirectory.eventClick += TopOpenStationDirectoryOnEventClick;
        }
Esempio n. 18
0
        private void InitializeTopNextTrackButton()
        {
            UIMultiStateButton mutebutton =
                ReflectionHelper.GetPrivateField <UIMultiStateButton>(CurrentRadioPanel, "m_muteButton");
            UIPanel radiopanel = ReflectionHelper.GetPrivateField <UIPanel>(CurrentRadioPanel, "m_radioPanel");

            m_TopNextTrack                 = radiopanel.AddUIComponent <UIButton>();
            m_TopNextTrack.position        = mutebutton.position + new Vector3((mutebutton.size.x + 5) + (m_AdditionalButtonCount++ *(mutebutton.size.y + 5)), 0);
            m_TopNextTrack.size            = new Vector2(mutebutton.size.y, mutebutton.size.y);
            m_TopNextTrack.atlas           = m_IconAtlas;
            m_TopNextTrack.normalBgSprite  = "Next";
            m_TopNextTrack.hoveredBgSprite = "Next";
            m_TopNextTrack.color           = new Color32(225, 225, 225, 255);
            m_TopNextTrack.hoveredColor    = new Color32(255, 255, 255, 255);
            m_TopNextTrack.tooltip         = "Switches to the next track.";
            m_TopNextTrack.Show();

            m_TopNextTrack.eventClick += buttonNextTrackClicked;
        }
Esempio n. 19
0
        private void InitializeShowMusicPanelButton()
        {
            UIMultiStateButton mutebutton =
                ReflectionHelper.GetPrivateField <UIMultiStateButton>(CurrentRadioPanel, "m_muteButton");
            UIPanel radiopanel = ReflectionHelper.GetPrivateField <UIPanel>(CurrentRadioPanel, "m_radioPanel");

            m_TopShowMusicList                 = radiopanel.AddUIComponent <UIButton>();
            m_TopShowMusicList.position        = mutebutton.position + new Vector3((mutebutton.size.x + 5) + (m_AdditionalButtonCount++ *(mutebutton.size.y + 5)), 0);
            m_TopShowMusicList.size            = new Vector2(mutebutton.size.y, mutebutton.size.y);
            m_TopShowMusicList.atlas           = m_IconAtlas;
            m_TopShowMusicList.normalBgSprite  = "Menu";
            m_TopShowMusicList.hoveredBgSprite = "Menu";
            m_TopShowMusicList.color           = new Color32(225, 225, 225, 255);
            m_TopShowMusicList.hoveredColor    = new Color32(255, 255, 255, 255);
            m_TopShowMusicList.tooltip         = "Shows/hides the playlist.";
            m_TopShowMusicList.Show();

            m_TopShowMusicList.eventClick += TopShowMusicListOnEventClick;
        }
Esempio n. 20
0
 public void UnHookZoomButtonControls()
 {
     if (ZoomButtonHooked)
     {
         var obj = GameObject.Find("ZoomButton");
         if (obj != null)
         {
             UIMultiStateButton zoomButton = obj.GetComponent <UIMultiStateButton>();
             if (zoomButton != null)
             {
                 zoomButton.eventMouseMove -= OnZoomButtonMouseMoved;
                 zoomButton.eventMouseUp   -= OnZoomButtonMouseMoved;
                 zoomButton.backgroundSprites[0].hovered = zoomButtonbackgroundSprite1;
                 zoomButton.backgroundSprites[1].hovered = zoomButtonbackgroundSprite2;
             }
         }
         ZoomButtonHooked = false;
     }
 }
Esempio n. 21
0
        public void HookZoomButtonControls()
        {
            if (!ZoomButtonHooked)
            {
                var obj = GameObject.Find("ZoomButton");
                if (obj != null)
                {
                    UIMultiStateButton zoomButton = obj.GetComponent <UIMultiStateButton>();

                    zoomButton.eventMouseMove += OnZoomButtonMouseMoved;
                    zoomButton.eventMouseUp   += OnZoomButtonMouseMoved;

                    zoomButtonbackgroundSprite1             = zoomButton.backgroundSprites[0].hovered;
                    zoomButtonbackgroundSprite2             = zoomButton.backgroundSprites[1].hovered;
                    zoomButton.backgroundSprites[0].hovered = "";
                    zoomButton.backgroundSprites[1].hovered = "";
                    ZoomButtonHooked = true;
                }
            }
        }
        private void InitUI()
        {
            if (toolbarTabContainer == null)
            {
                MainToolbar toolbar  = ToolsModifierControl.mainToolbar;
                UITabstrip  tabstrip = (UITabstrip)toolbar.component;
                toolbarTabContainer = tabstrip.tabContainer;
            }

            Options.eventScrollDirectionChanged += (bool value) => {
                if (expanded)
                {
                    Expand(value);
                }
            };

            if (m_expandButton == null)
            {
                UIView             view          = UIView.GetAView();
                UIMultiStateButton advisorButton = view.FindUIComponent <UIMultiStateButton>("AdvisorButton");
                m_expandButton = (UIButton)view.AddUIComponent(typeof(UIButton));
                m_expandButton.absolutePosition = advisorButton.absolutePosition + new Vector3(advisorButton.width, 0);
                var atlas = TextureLoader.CreateTextureAtlas("ExapandCollapseIcons", "ExpandCollapseIcons", TextureLoader.FileDirectory.Images, new string[] {
                    "Expand", "Collapse", "OptionBase", "OptionBaseDisabled", "OptionBaseHovered", "OptionBaseFocused"
                }, 2, 3);
                //m_expandButton.text = "+";
                m_expandButton.atlas            = atlas;
                m_expandButton.name             = "ExpandToolbarButton";
                m_expandButton.isInteractive    = true;
                m_expandButton.scaleFactor      = 0.76f;
                m_expandButton.size             = new Vector2(36, 36);
                m_expandButton.normalBgSprite   = "OptionBase";
                m_expandButton.normalFgSprite   = "Expand";
                m_expandButton.disabledBgSprite = "OptionBaseDisabled";
                m_expandButton.hoveredBgSprite  = "OptionBaseHovered";
                m_expandButton.eventClicked    += (component, eventParam) => {
                    ToggleExpand();
                };
            }
        }
        public void SetAdvisorButtonVisibility()
        {
            try
            {
                UIMultiStateButton advisorButton = UIView.Find("AdvisorButton") as UIMultiStateButton;
                if (advisorButton == null)
                {
                    return;
                }

                if (Settings.hideAdvisorButton)
                {
                    advisorButton.Hide();
                }
                else
                {
                    advisorButton.Show();
                }
            }
            catch (Exception ex)
            {
                Debugging.Message("SetAdvisorButtonVisibility() - " + ex.Message);
            }
        }
Esempio n. 24
0
        public override void Awake()
        {
            base.Awake();

            Debug.Log("[PLT] begin UIOptionPanel.Awake()");

            //old as of 161129
            //Util.LoadSprites();
            //new as of 161129
            SpriteManager.CreateAtlasPLT();

            //setup panel
            //base.width = 256;
            //base.height = 36;
            base.size                    = SIZE_DEFAULT_INGAME;
            this._panel                  = base.AddUIComponent <UIPanel>();
            this._panel.name             = "HolderPanel";
            this._panel.width            = base.width;
            this._panel.height           = base.height;
            this._panel.relativePosition = new Vector3(0f, 0f);

            //setup snapping toggle
            this._snappingToggle                  = UISimpleElems.AddAThreeStateButton(this._panel, "PLT_ToggleSnapping", SpriteManager.atlasPLT, "PLT_MultiStateZero", "PLT_MultiStateOne", "PLT_MultiStateTwo", "PLT_SnappingModeZero", "PLT_SnappingModeOne", "PLT_SnappingModeTwo");
            this._snappingToggle.height           = 36f;
            this._snappingToggle.width            = 36f;
            this._snappingToggle.relativePosition = new Vector3(0f, 0f, 0f);
            this._snappingToggle.playAudioEvents  = true;
            this._snappingToggle.tooltip          = "[PLT]: Toggle Snapping";
            if (this._snappingToggle != null)
            {
                this._snappingToggle.eventActiveStateIndexChanged += delegate(UIComponent sender, int index)
                {
                    PropLineTool.m_snapMode = this.m_snapModes[index];
                };
            }

            //setup fenceMode toggle
            this._fenceModeToggle        = UISimpleElems.AddAToggleButton(this._panel, "PLTToggleFenceMode", SpriteManager.atlasPLT, "PLT_MultiStateZero", "PLT_MultiStateOne", "PLT_FenceModeZero", "PLT_FenceModeOne");
            this._fenceModeToggle.height = 36f;
            this._fenceModeToggle.width  = 36f;
            //this._fenceModeToggle.relativePosition = new Vector3(36f, 0f, 0f);
            //new for circle draw mode
            this._fenceModeToggle.relativePosition = new Vector3(0f, 0f, 0f);
            this._fenceModeToggle.playAudioEvents  = true;
            this._fenceModeToggle.tooltip          = "[PLT]: Toggle Fence Mode";
            if (this._fenceModeToggle != null)
            {
                this._fenceModeToggle.eventActiveStateIndexChanged += delegate(UIComponent sender, int index)
                {
                    bool _fenceModeActive = false;
                    if (index >= 1)
                    {
                        _fenceModeActive = true;
                    }
                    else if (index <= 0)
                    {
                        _fenceModeActive = false;
                    }
                    PropLineTool.fenceMode = _fenceModeActive;
                };
            }

            //setup tabstrip
            this._tabstrip = this._panel.AddUIComponent <UITabstrip>();
            //this._tabstrip.relativePosition = new Vector3(72f, 0f, 0f);
            //this._tabstrip.width = 144f;
            //new for circle draw mode
            this._tabstrip.relativePosition = new Vector3(36f, 0f, 0f);
            this._tabstrip.width            = 180f;
            this._tabstrip.height           = 36f;
            this._tabstrip.padding.right    = 0;
            UIButton       componentInChildren = GameObject.Find("ToolMode").GetComponent <UITabstrip>().GetComponentInChildren <UIButton>();
            UITextureAtlas atlas = UIView.GetAView().defaultAtlas;

            for (int i = 0; i < TOOL_MODE_NAMES.Length; i++)
            {
                UIButton _button = this._tabstrip.AddTab(TOOL_MODE_NAMES[i], componentInChildren, false);
                _button.autoSize = false;

                _button.tooltip = "[PLT]: " + TOOL_MODE_NAMES[i];

                _button.height = 36f;
                _button.width  = 36f;

                if (i == 0 || i == 4)
                {
                    _button.name = i == 4 ? "PLTCircle" : "PLTSingle";

                    _button.normalFgSprite   = "";
                    _button.focusedFgSprite  = "";
                    _button.hoveredFgSprite  = "";
                    _button.pressedFgSprite  = "";
                    _button.disabledFgSprite = "";

                    _button.text              = i == 4 ? "○" : "•";
                    _button.textScale         = i == 4? 3.0f : 1.5f;
                    _button.textPadding.left  = i == 4 ? -2 : 0;
                    _button.textPadding.right = 1;
                    _button.textPadding.top   = i == 4 ? -13 : 4;
                    //_button.textPadding.bottom = i == 4? 2 : 0;
                    _button.textPadding.bottom = 0;
                    _button.textColor          = new Color32(119, 124, 126, 255);
                    _button.hoveredTextColor   = new Color32(110, 113, 114, 255);
                    _button.pressedTextColor   = new Color32(172, 175, 176, 255);
                    _button.focusedTextColor   = new Color32(187, 224, 235, 255);
                    _button.disabledTextColor  = new Color32(66, 69, 70, 255);
                }


                if (i > 0 && i < 4)
                {
                    _button.name = "PLT" + TOOL_MODE_NAMES[i];

                    string str = "RoadOption" + TOOL_MODE_NAMES[i];
                    _button.normalFgSprite   = str;
                    _button.focusedFgSprite  = str + "Focused";
                    _button.hoveredFgSprite  = str + "Hovered";
                    _button.pressedFgSprite  = str + "Pressed";
                    _button.disabledFgSprite = str + "Disabled";
                }

                _button.playAudioEvents = componentInChildren.playAudioEvents;
            }
            //setup selected index in case of re-Load from in-game
            this._tabstrip.selectedIndex = (int)PropLineTool.drawMode;
            if (this._tabstrip != null)
            {
                this._tabstrip.eventSelectedIndexChanged += delegate(UIComponent sender, int index)
                {
                    PropLineTool.drawMode = this.m_drawModes[index];
                };
            }

            //setup controlPanel toggle
            this._controlPanelToggle                  = UISimpleElems.AddAToggleButton(this._panel, "PLTToggleControlPanel", SpriteManager.atlasPLT, "PLT_ToggleCPZero", "PLT_ToggleCPOne", "", "");
            this._controlPanelToggle.height           = 36f;
            this._controlPanelToggle.width            = 36f;
            this._controlPanelToggle.relativePosition = new Vector3(216f, 0f, 0f);
            this._controlPanelToggle.playAudioEvents  = true;
            this._controlPanelToggle.tooltip          = "[PLT]: Toggle Control Panel";
            if (this._controlPanelToggle != null)
            {
                this._controlPanelToggle.eventActiveStateIndexChanged += delegate(UIComponent sender, int index)
                {
                    if (index >= 1)
                    {
                        PropLineToolMod.basicControlPanel.Show();
                    }
                    else if (index <= 0)
                    {
                        PropLineToolMod.basicControlPanel.Hide();
                    }
                };
            }



            base.FitChildren();

            //this is only important to set to zero if we call it after the _tabstrip.eventSelectedIndexChanged event subscription
            //***VERY IMPORTANT THAT THIS EQUALS ZERO***
            //so that TreeTool or PropTool can initialize before PropLineTool
            this._tabstrip.startSelectedIndex = 0;


            //fix sprites if PLTAtlas could not be created
            if (SpriteManager.atlasPLT == null)
            {
                RevertToBackupToggleButtons();
            }

            //event subscriptions
            PropLineTool.eventActiveStateChanged += PropLineTool_ActiveStateChanged;

            Debug.Log("[PLT] end UIOptionPanel.Awake()");
        }
Esempio n. 25
0
        private bool CreateButton(UIComponent districtOptionPanel)
        {
            String[] iconNames =
            {
                "RoadArrowIcon",
                "Base",
                "BaseFocused",
                "BaseHovered",
                "BasePressed",
                "BaseDisabled",
            };

            // Create Hierarchy
            view   = UIView.GetAView();
            panel  = (UIPanel)view.AddUIComponent(typeof(UIPanel));
            newGO  = new GameObject(BUTTON_NAME);
            button = newGO.AddComponent <UIMultiStateButton>();
            panel.AttachUIComponent(newGO);

            // Panel attributes
            panel.relativePosition = panelPos;
            panel.width            = panelWidth;
            panel.name             = PANEL_NAME;
            panel.isVisible        = false;

            // Button attributes
            button.relativePosition   = buttonPos;
            button.size               = buttonSize;
            button.playAudioEvents    = true;
            button.name               = BUTTON_NAME;
            button.tooltip            = "Display Zones";
            button.isTooltipLocalized = false;
            button.spritePadding      = new RectOffset();
            button.activeStateIndex   = 1;

            button.atlas = CreateTextureAtlas("icons.png", BUTTON_NAME + "Atlas", panel.atlas.material, 36, 36, iconNames);

            UIMultiStateButton.SpriteSet backgroundSpriteSet0 = button.backgroundSprites[0];
            backgroundSpriteSet0.normal   = "Base";
            backgroundSpriteSet0.disabled = "Base";
            backgroundSpriteSet0.hovered  = "BaseHovered";
            backgroundSpriteSet0.pressed  = "Base";
            backgroundSpriteSet0.focused  = "Base";

            button.backgroundSprites.AddState();
            UIMultiStateButton.SpriteSet backgroundSpriteSet1 = button.backgroundSprites[1];
            backgroundSpriteSet1.normal   = "BaseFocused";
            backgroundSpriteSet1.disabled = "BaseFocused";
            backgroundSpriteSet1.hovered  = "BaseFocused";
            backgroundSpriteSet1.pressed  = "BaseFocused";
            backgroundSpriteSet1.focused  = "BaseFocused";

            UIMultiStateButton.SpriteSet foregroundSpriteSet0 = button.foregroundSprites[0];
            foregroundSpriteSet0.normal   = "RoadArrowIcon";
            foregroundSpriteSet0.disabled = "RoadArrowIcon";
            foregroundSpriteSet0.hovered  = "RoadArrowIcon";
            foregroundSpriteSet0.pressed  = "RoadArrowIcon";
            foregroundSpriteSet0.focused  = "RoadArrowIcon";

            button.foregroundSprites.AddState();
            UIMultiStateButton.SpriteSet foregroundSpriteSet1 = button.foregroundSprites[1];
            foregroundSpriteSet1.normal   = "RoadArrowIcon";
            foregroundSpriteSet1.disabled = "RoadArrowIcon";
            foregroundSpriteSet1.hovered  = "RoadArrowIcon";
            foregroundSpriteSet1.pressed  = "RoadArrowIcon";
            foregroundSpriteSet1.focused  = "RoadArrowIcon";

            // Districts Panel Listener
            districtOptionPanel.eventVisibilityChanged += districtOptionPanel_eventVisibilityChanged;

            // Button Listener
            button.eventActiveStateIndexChanged += button_eventActiveStateIndexChanged;

            return(true);
        }
Esempio n. 26
0
        /// <summary>
        /// Creates our button to switch between the different toolbar modes.
        /// </summary>
        /// <param name="mode">The game mode.</param>
        public static void CreateToggleToolbarWidthButton(LoadMode mode)
        {
            if (toggleToolbarWidthButton != null)
            {
                // We already created it
                return;
            }

            // Initialize variables
            lastTSContainerWidth = 859f;
            switch (mode)
            {
            case LoadMode.NewGame:
            case LoadMode.LoadGame:
            case LoadMode.NewAsset:
            case LoadMode.LoadAsset:
            default:
                lastTSContainerX = 590f;
                break;

            case LoadMode.NewMap:
            case LoadMode.LoadMap:
                lastTSContainerX = 676f;
                break;
            }

            // Create button and attach it
            toggleToolbarWidthButton = toolbarControlBox.AddUIComponent <UIMultiStateButton>();

            // Set layout
            toggleToolbarWidthButton.isVisible = false;
            toggleToolbarWidthButton.size      = new Vector2(18, 18);

            // Set additional settings
            toggleToolbarWidthButton.name               = "ToggleToolbarWidthButton";
            toggleToolbarWidthButton.playAudioEvents    = true;
            toggleToolbarWidthButton.tooltip            = "Toggle between normal and extended width";
            toggleToolbarWidthButton.isTooltipLocalized = false;

            // Add atlas
            toggleToolbarWidthButton.atlas = Utils.AtlasUtils.GetUIButtonsAtlas();

            // Add background sprites
            toggleToolbarWidthButton.backgroundSprites.AddState();
            toggleToolbarWidthButton.backgroundSprites[0].normal  = "Base";
            toggleToolbarWidthButton.backgroundSprites[0].hovered = "BaseHovered";
            toggleToolbarWidthButton.backgroundSprites[0].pressed = "BasePressed";
            toggleToolbarWidthButton.backgroundSprites[1].normal  = "Base";
            toggleToolbarWidthButton.backgroundSprites[1].hovered = "BaseHovered";
            toggleToolbarWidthButton.backgroundSprites[1].pressed = "BasePressed";

            // Add foreground sprites
            toggleToolbarWidthButton.foregroundSprites.AddState();
            toggleToolbarWidthButton.foregroundSprites[0].normal = "ArrowRight";
            toggleToolbarWidthButton.foregroundSprites[1].normal = "ArrowLeft";

            // Fix some NullReferenceException for m_spritePadding
            toggleToolbarWidthButton.spritePadding = new RectOffset();

            // Hook onto various events
            toggleToolbarWidthButton.eventActiveStateIndexChanged += toggleToolbarWidthButton_eventActiveStateIndexChanged;

            // Depending on the previous state, set correct mode
            toggleToolbarWidthButton.activeStateIndex = Mod.Instance.Settings.State.ToolbarHasExtendedWidth ? 1 : 0;

            Mod.Instance.Log.Debug("Created ToggleToolbarWidthButton");
        }
Esempio n. 27
0
        public override void Start()
        {
            instance = this;

            atlas            = UIUtils.GetAtlas("Ingame");
            size             = new Vector2(41, 41);
            relativePosition = new Vector2(GetUIView().GetScreenResolution().x - 340, -41);
            name             = "MoveIt_ToolOptionPanel";

            DebugUtils.Log("ToolOptionPanel position: " + absolutePosition);

            m_followTerrain                 = AddUIComponent <UIMultiStateButton>();
            m_followTerrain.atlas           = GetFollowTerrainAtlas();
            m_followTerrain.name            = "MoveIt_Snapping";
            m_followTerrain.tooltip         = "Follow Terrain";
            m_followTerrain.playAudioEvents = true;

            m_followTerrain.size          = new Vector2(36, 36);
            m_followTerrain.spritePadding = new RectOffset();

            m_followTerrain.backgroundSprites[0].disabled = "ToggleBaseDisabled";
            m_followTerrain.backgroundSprites[0].hovered  = "ToggleBaseHovered";
            m_followTerrain.backgroundSprites[0].normal   = "ToggleBase";
            m_followTerrain.backgroundSprites[0].pressed  = "ToggleBasePressed";

            m_followTerrain.backgroundSprites.AddState();
            m_followTerrain.backgroundSprites[1].disabled = "ToggleBaseDisabled";
            m_followTerrain.backgroundSprites[1].hovered  = "";
            m_followTerrain.backgroundSprites[1].normal   = "ToggleBaseFocused";
            m_followTerrain.backgroundSprites[1].pressed  = "ToggleBasePressed";

            m_followTerrain.foregroundSprites[0].normal = "FollowTerrain_disabled";

            m_followTerrain.foregroundSprites.AddState();
            m_followTerrain.foregroundSprites[1].normal = "FollowTerrain";

            m_followTerrain.relativePosition = Vector2.zero;

            m_followTerrain.activeStateIndex = MoveItTool.followTerrain ? 1 : 0;

            m_followTerrain.eventClicked += (c, p) =>
            {
                MoveItTool.followTerrain = (m_followTerrain.activeStateIndex == 1);
            };

            m_snapping                 = AddUIComponent <UIMultiStateButton>();
            m_snapping.atlas           = UIUtils.GetAtlas("Ingame");
            m_snapping.name            = "MoveIt_Snapping";
            m_snapping.tooltip         = "Toggle Snapping";
            m_snapping.playAudioEvents = true;

            m_snapping.size          = new Vector2(36, 36);
            m_snapping.spritePadding = new RectOffset();

            m_snapping.backgroundSprites[0].disabled = "ToggleBaseDisabled";
            m_snapping.backgroundSprites[0].hovered  = "ToggleBaseHovered";
            m_snapping.backgroundSprites[0].normal   = "ToggleBase";
            m_snapping.backgroundSprites[0].pressed  = "ToggleBasePressed";

            m_snapping.backgroundSprites.AddState();
            m_snapping.backgroundSprites[1].disabled = "ToggleBaseDisabled";
            m_snapping.backgroundSprites[1].hovered  = "";
            m_snapping.backgroundSprites[1].normal   = "ToggleBaseFocused";
            m_snapping.backgroundSprites[1].pressed  = "ToggleBasePressed";

            m_snapping.foregroundSprites[0].disabled = "SnappingDisabled";
            m_snapping.foregroundSprites[0].hovered  = "SnappingHovered";
            m_snapping.foregroundSprites[0].normal   = "Snapping";
            m_snapping.foregroundSprites[0].pressed  = "SnappingPressed";

            m_snapping.foregroundSprites.AddState();
            m_snapping.foregroundSprites[1].disabled = "SnappingDisabled";
            m_snapping.foregroundSprites[1].hovered  = "";
            m_snapping.foregroundSprites[1].normal   = "SnappingFocused";
            m_snapping.foregroundSprites[1].pressed  = "SnappingPressed";

            m_snapping.relativePosition = m_followTerrain.relativePosition + new Vector3(m_followTerrain.width, 0);

            m_snapping.activeStateIndex = (MoveItTool.instance != null && MoveItTool.instance.snapping) ? 1 : 0;

            m_snapping.eventClicked += (c, p) =>
            {
                if (MoveItTool.instance != null)
                {
                    MoveItTool.instance.snapping = (m_snapping.activeStateIndex == 1);
                }
            };

            m_tabStrip      = AddUIComponent <UITabstrip>();
            m_tabStrip.size = new Vector2(36, 72);

            m_tabStrip.relativePosition = m_snapping.relativePosition + new Vector3(m_snapping.width, 0);

            m_single                 = m_tabStrip.AddTab("MoveIt_Single", null, false);
            m_single.group           = m_tabStrip;
            m_single.atlas           = UIUtils.GetAtlas("Ingame");
            m_single.tooltip         = "Single Selection";
            m_single.playAudioEvents = true;

            m_single.size = new Vector2(36, 36);

            m_single.normalBgSprite    = "OptionBase";
            m_single.focusedBgSprite   = "OptionBaseFocused";
            m_single.hoveredBgSprite   = "OptionBaseHovered";
            m_single.pressedBgSprite   = "OptionBasePressed";
            m_single.disabledBgSprite  = "OptionBaseDisabled";
            m_single.text              = "•";
            m_single.textScale         = 1.5f;
            m_single.textPadding       = new RectOffset(0, 1, 4, 0);
            m_single.textColor         = new Color32(119, 124, 126, 255);
            m_single.hoveredTextColor  = new Color32(110, 113, 114, 255);
            m_single.pressedTextColor  = new Color32(172, 175, 176, 255);
            m_single.focusedTextColor  = new Color32(187, 224, 235, 255);
            m_single.disabledTextColor = new Color32(66, 69, 70, 255);

            m_marquee                 = m_tabStrip.AddTab("MoveIt_Marquee", null, false);
            m_marquee.group           = m_tabStrip;
            m_marquee.atlas           = UIUtils.GetAtlas("Ingame");
            m_marquee.tooltip         = "Marquee Selection";
            m_marquee.playAudioEvents = true;

            m_marquee.size = new Vector2(36, 36);

            m_marquee.normalBgSprite   = "OptionBase";
            m_marquee.focusedBgSprite  = "OptionBaseFocused";
            m_marquee.hoveredBgSprite  = "OptionBaseHovered";
            m_marquee.pressedBgSprite  = "OptionBasePressed";
            m_marquee.disabledBgSprite = "OptionBaseDisabled";

            m_marquee.normalFgSprite = "ZoningOptionMarquee";

            m_marquee.relativePosition = m_single.relativePosition + new Vector3(m_single.width, 0);

            filtersPanel                  = AddUIComponent(typeof(UIPanel)) as UIPanel;
            filtersPanel.atlas            = UIUtils.GetAtlas("Ingame");
            filtersPanel.backgroundSprite = "SubcategoriesPanel";
            filtersPanel.clipChildren     = true;

            filtersPanel.size      = new Vector2(150, 140);
            filtersPanel.isVisible = false;

            MouseEventHandler OnDoubleClick = (c, p) =>
            {
                foreach (UIComponent comp in filtersPanel.components)
                {
                    UICheckBox box = comp as UICheckBox;
                    if (box != null && box != c)
                    {
                        box.isChecked = false;
                    }
                }

                ((UICheckBox)c).isChecked = true;
            };

            UICheckBox checkBox = UIUtils.CreateCheckBox(filtersPanel);

            checkBox.label.text         = "Buildings";
            checkBox.isChecked          = true;
            checkBox.eventCheckChanged += (c, p) =>
            {
                MoveItTool.filterBuildings = p;
            };

            checkBox.eventDoubleClick += OnDoubleClick;


            checkBox                    = UIUtils.CreateCheckBox(filtersPanel);
            checkBox.label.text         = "Props";
            checkBox.isChecked          = true;
            checkBox.eventCheckChanged += (c, p) =>
            {
                MoveItTool.filterProps = p;
            };

            checkBox.eventDoubleClick += OnDoubleClick;

            checkBox                    = UIUtils.CreateCheckBox(filtersPanel);
            checkBox.label.text         = "Decals";
            checkBox.isChecked          = true;
            checkBox.eventCheckChanged += (c, p) =>
            {
                MoveItTool.filterDecals = p;
            };

            checkBox.eventDoubleClick += OnDoubleClick;

            checkBox                    = UIUtils.CreateCheckBox(filtersPanel);
            checkBox.label.text         = "Trees";
            checkBox.isChecked          = true;
            checkBox.eventCheckChanged += (c, p) =>
            {
                MoveItTool.filterTrees = p;
            };

            checkBox.eventDoubleClick += OnDoubleClick;

            checkBox                    = UIUtils.CreateCheckBox(filtersPanel);
            checkBox.label.text         = "Nodes";
            checkBox.isChecked          = true;
            checkBox.eventCheckChanged += (c, p) =>
            {
                MoveItTool.filterNodes = p;
            };

            checkBox.eventDoubleClick += OnDoubleClick;

            checkBox                    = UIUtils.CreateCheckBox(filtersPanel);
            checkBox.label.text         = "Segments";
            checkBox.isChecked          = true;
            checkBox.eventCheckChanged += (c, p) =>
            {
                MoveItTool.filterSegments = p;
            };

            checkBox.eventDoubleClick += OnDoubleClick;

            filtersPanel.padding             = new RectOffset(10, 10, 10, 10);
            filtersPanel.autoLayoutDirection = LayoutDirection.Vertical;
            filtersPanel.autoLayoutPadding   = new RectOffset(0, 0, 0, 5);
            filtersPanel.autoLayout          = true;

            filtersPanel.height = 160;

            filtersPanel.absolutePosition = m_marquee.absolutePosition - new Vector3(57, filtersPanel.height + 5);

            m_marquee.eventButtonStateChanged += (c, p) =>
            {
                MoveItTool.marqueeSelection = p == UIButton.ButtonState.Focused;
                filtersPanel.isVisible      = MoveItTool.marqueeSelection;

                if (UITipsWindow.instance != null)
                {
                    UITipsWindow.instance.RefreshPosition();
                }
            };

            m_alignHeight                 = AddUIComponent <UIButton>();
            m_alignHeight.name            = "MoveIt_AlignHeight";
            m_alignHeight.group           = m_tabStrip;
            m_alignHeight.atlas           = GetIconsAtlas();
            m_alignHeight.tooltip         = "Align Heights";
            m_alignHeight.playAudioEvents = true;

            m_alignHeight.size = new Vector2(36, 36);

            m_alignHeight.normalBgSprite   = "OptionBase";
            m_alignHeight.hoveredBgSprite  = "OptionBaseHovered";
            m_alignHeight.pressedBgSprite  = "OptionBasePressed";
            m_alignHeight.disabledBgSprite = "OptionBaseDisabled";

            m_alignHeight.normalFgSprite = "AlignHeight";

            m_alignHeight.relativePosition = m_tabStrip.relativePosition + new Vector3(m_single.width + m_marquee.width, 0);

            m_alignHeight.eventClicked += (c, p) =>
            {
                if (MoveItTool.instance != null)
                {
                    MoveItTool.instance.StartAligningHeight();
                    RefreshAlignHeightButton();
                }
            };

            m_copy                 = AddUIComponent <UIButton>();
            m_copy.name            = "MoveIt_Copy";
            m_copy.group           = m_tabStrip;
            m_copy.atlas           = GetIconsAtlas();
            m_copy.tooltip         = "Copy";
            m_copy.playAudioEvents = true;

            m_copy.size = new Vector2(36, 36);

            m_copy.normalBgSprite   = "OptionBase";
            m_copy.hoveredBgSprite  = "OptionBaseHovered";
            m_copy.pressedBgSprite  = "OptionBasePressed";
            m_copy.disabledBgSprite = "OptionBaseDisabled";

            m_copy.normalFgSprite = "Copy";

            m_copy.relativePosition = m_alignHeight.relativePosition + new Vector3(m_alignHeight.width, 0);

            m_copy.eventClicked += (c, p) =>
            {
                if (MoveItTool.instance != null)
                {
                    MoveItTool.instance.StartCloning();
                }
            };

            m_bulldoze                 = AddUIComponent <UIButton>();
            m_bulldoze.name            = "MoveIt_Bulldoze";
            m_bulldoze.group           = m_tabStrip;
            m_bulldoze.atlas           = GetIconsAtlas();
            m_bulldoze.tooltip         = "Bulldoze\nWARNING: NO UNDO!";
            m_bulldoze.playAudioEvents = true;

            m_bulldoze.size = new Vector2(36, 36);

            m_bulldoze.normalBgSprite   = "OptionBase";
            m_bulldoze.hoveredBgSprite  = "OptionBaseHovered";
            m_bulldoze.pressedBgSprite  = "OptionBasePressed";
            m_bulldoze.disabledBgSprite = "OptionBaseDisabled";

            m_bulldoze.normalFgSprite = "Bulldoze";

            m_bulldoze.relativePosition = m_copy.relativePosition + new Vector3(m_copy.width, 0);

            m_bulldoze.eventClicked += (c, p) =>
            {
                if (MoveItTool.instance != null)
                {
                    MoveItTool.instance.StartBulldoze();
                }
            };
        }
Esempio n. 28
0
 public override void ClearButton()
 {
     ToggleButton = null;
 }
Esempio n. 29
0
        void InitControls()
        {
            LocaleManager.eventLocaleChanged += OnLocaleChanged;
            // 昼夜转换
            btnDayNightSwitch                  = this.AddUIComponent <UIButton>();
            btnDayNightSwitch.size             = new Vector2(18, 9);
            btnDayNightSwitch.relativePosition = new Vector3(4, 6);
            btnDayNightSwitch.normalBgSprite   = "IconSunMoon";
            btnDayNightSwitch.playAudioEvents  = true;
            //btnDayNightSwitch.tooltipLocaleID = "TIMECONTROL";
            btnDayNightSwitch.eventClick        += OnDayNightSwitchClicked;
            btnDayNightSwitch.eventMouseUp      += OnDayNightSwitchMouseUp;
            btnDayNightSwitch.opacity            = 0.5f;
            btnDayNightSwitch.isTooltipLocalized = true;
            btnDayNightSwitch.spritePadding      = new RectOffset();
            // 天气转换
            btnWeatherSwitch                  = this.AddUIComponent <UIButton>();
            btnWeatherSwitch.size             = new Vector2(13, 13);
            btnWeatherSwitch.relativePosition = new Vector3(25, 4);
            btnWeatherSwitch.normalBgSprite   = "IconPolicyOnlyElectricity";
            btnWeatherSwitch.playAudioEvents  = true;
            //btnWeatherSwitch.tooltipLocaleID = "THEME_WORLD_WEATHER";
            btnWeatherSwitch.eventClick        += OnWeatherSwitchClicked;
            btnWeatherSwitch.eventMouseUp      += OnWeatherSwitchMouseUp;
            btnWeatherSwitch.opacity            = 0.5f;
            btnWeatherSwitch.isTooltipLocalized = true;
            btnWeatherSwitch.spritePadding      = new RectOffset();
            // 啾啾显示
            btnChirperContainer                    = this.AddUIComponent <UIButton>();
            btnChirperContainer.size               = new Vector2(13, 13);
            btnChirperContainer.relativePosition   = new Vector3(42, 2);
            btnChirperContainer.normalBgSprite     = "ChirperIcon";
            btnChirperContainer.playAudioEvents    = true;
            btnChirperContainer.isTooltipLocalized = true;
            btnChirperContainer.spritePadding      = new RectOffset();
            btnChirperContainer.eventClick        += OnChirperTogglerClicked;
            btnChirperContainer.tooltipLocaleID    = "CHIRPER_NAME";
            if (ChirpPanel.instance != null)
            {
                btnChirperContainer.isVisible = true;
                btnChirperContainer.opacity   = ChirpPanel.instance.gameObject.activeSelf ? 0.5f : 0.1f;
            }
            else
            {
                btnChirperContainer.isVisible = false;
            }

            // 电台显示
            btnRadioIconContainer                    = this.AddUIComponent <UIButton>();
            btnRadioIconContainer.size               = new Vector2(13, 13);
            btnRadioIconContainer.relativePosition   = new Vector3(58, 2);
            btnRadioIconContainer.normalFgSprite     = "ADIcon";
            btnRadioIconContainer.playAudioEvents    = true;
            btnRadioIconContainer.isTooltipLocalized = true;
            btnRadioIconContainer.spritePadding      = new RectOffset();
            btnRadioIconContainer.eventClick        += OnRadioTogglerClicked;

            // 静音
            btnMuteAudioContainer                    = this.AddUIComponent <UIButton>();
            btnMuteAudioContainer.size               = new Vector2(13, 13);
            btnMuteAudioContainer.relativePosition   = new Vector3(74, 2);
            btnMuteAudioContainer.normalFgSprite     = "IconPolicyNoLoudNoisesHovered";
            btnMuteAudioContainer.playAudioEvents    = true;
            btnMuteAudioContainer.isTooltipLocalized = true;
            btnMuteAudioContainer.spritePadding      = new RectOffset();
            btnMuteAudioContainer.eventClick        += (UIComponent comp, UIMouseEventParameter p) =>
            {
                ExtendedInfoManager.AudioMuteAll           = !ExtendedInfoManager.AudioMuteAll;
                Singleton <AudioManager> .instance.MuteAll = ExtendedInfoManager.AudioMuteAll;
                btnMuteAudioContainer.opacity = Singleton <AudioManager> .instance.MuteAll ? 0.1f : 0.5f;
            };
            btnMuteAudioContainer.opacity = Singleton <AudioManager> .instance.MuteAll ? 0.1f : 0.5f;

            // 暂停按钮
            btnPlay                    = this.AddUIComponent <UIMultiStateButton>();
            btnPlay.size               = new Vector2(11, 12);
            btnPlay.relativePosition   = new Vector3(206, LINE2 + 2);
            btnPlay.isTooltipLocalized = true;
            btnPlay.tooltipLocaleID    = "MAIN_PLAYPAUSE";
            btnPlay.eventClick        += OnPlayClicked;
            btnPlay.playAudioEvents    = true;
            btnPlay.spritePadding      = new RectOffset();

            UIMultiStateButton.SpriteSet btnPlaySpriteSet0 = btnPlay.foregroundSprites[0];
            btnPlaySpriteSet0.normal  = "ButtonPause";
            btnPlaySpriteSet0.hovered = "ButtonPauseHovered";
            btnPlaySpriteSet0.pressed = "ButtonPausePressed";
            btnPlaySpriteSet0.focused = "ButtonPauseFocused";

            btnPlay.backgroundSprites.AddState();
            btnPlay.foregroundSprites.AddState();
            UIMultiStateButton.SpriteSet btnPlaySpriteSet1 = btnPlay.foregroundSprites[1];
            btnPlaySpriteSet1.normal  = "ButtonPlay";
            btnPlaySpriteSet1.hovered = "ButtonPlayHovered";
            btnPlaySpriteSet1.pressed = "ButtonPlayPressed";
            btnPlaySpriteSet1.focused = "ButtonPlayFocused";

            // 速度按钮
            btnSpeed                    = this.AddUIComponent <UIMultiStateButton>();
            btnSpeed.size               = new Vector2(28, 22);
            btnSpeed.relativePosition   = new Vector3(280, LINE2 - 4);
            btnSpeed.isTooltipLocalized = true;
            btnSpeed.tooltipLocaleID    = "MAIN_SPEED";
            btnSpeed.eventClick        += OnSpeedClicked;
            btnSpeed.playAudioEvents    = true;
            btnSpeed.spritePadding      = new RectOffset();
            UIMultiStateButton.SpriteSet btnSpeedSpriteSet0 = btnSpeed.foregroundSprites[0];
            btnSpeedSpriteSet0.normal  = "IconSpeed1Normal";
            btnSpeedSpriteSet0.hovered = "IconSpeed1Hover";
            btnSpeedSpriteSet0.pressed = "IconSpeed2Normal";

            btnSpeed.backgroundSprites.AddState();
            btnSpeed.foregroundSprites.AddState();
            UIMultiStateButton.SpriteSet btnSpeedSpriteSet1 = btnSpeed.foregroundSprites[1];
            btnSpeedSpriteSet1.normal  = "IconSpeed2Normal";
            btnSpeedSpriteSet1.hovered = "IconSpeed2Hover";
            btnSpeedSpriteSet1.pressed = "IconSpeed3Normal";

            btnSpeed.backgroundSprites.AddState();
            btnSpeed.foregroundSprites.AddState();
            UIMultiStateButton.SpriteSet btnSpeedSpriteSet2 = btnSpeed.foregroundSprites[2];
            btnSpeedSpriteSet2.normal  = "IconSpeed3Normal";
            btnSpeedSpriteSet2.hovered = "IconSpeed3Hover";
            btnSpeedSpriteSet2.pressed = "IconSpeed1Normal";

            // 时间条
            if (gameTimeSprite != null)
            {
                barTime                  = this.AddUIComponent <UISprite>();
                barTime.name             = "NewSprite";
                barTime.size             = new Vector2(140, 12);
                barTime.relativePosition = new Vector3(166, 4);
                barTime.atlas            = gameTimeSprite.atlas;
                barTime.spriteName       = gameTimeSprite.spriteName;
                barTime.fillAmount       = 0.5f;
                barTime.fillDirection    = UIFillDirection.Horizontal;
                barTime.color            = gameTimeSprite.color;
                barTime.fillAmount       = gameTimeSprite.fillAmount;
            }
            // 游戏日期标签
            lblGameTime                  = this.AddUIComponent <MUILabel>();
            lblGameTime.size             = new Vector2(120, LINEW);
            lblGameTime.relativePosition = new Vector3(170, LINE2 - 3);
            lblGameTime.textColor        = ExtendedPanel.COLOR_DARK_TEXT;
            lblGameTime.textAlignment    = UIHorizontalAlignment.Center;
            //lblGameTime.fontStyle = FontStyle.Bold;
            lblGameTime.fontSize = (int)MUISkin.UIToScreen(11f);

            // 游戏时间标签
            lblDayTimeA                  = this.AddUIComponent <UISprite>();
            lblDayTimeA.size             = new Vector2(14, 14);
            lblDayTimeA.relativePosition = new Vector3(107, 5);
            lblDayTimeA.spriteName       = "InfoIconEntertainmentFocused";
            lblDayTimeA.opacity          = 0.3f;
            lblDayTimeA.playAudioEvents  = (CityInfoDatas.TimeWarpMod_sunManager == null);
            lblDayTimeA.eventClick      += OnDayTimeClicked;

            lblDayTime                  = this.AddUIComponent <MUILabel>();
            lblDayTime.size             = new Vector2(40, LINEW);
            lblDayTime.relativePosition = new Vector3(115, LINE1);
            lblDayTime.textColor        = ExtendedPanel.COLOR_TEXT;
            lblDayTime.textAlignment    = UIHorizontalAlignment.Right;
            lblDayTime.fontStyle        = FontStyle.Bold;
            lblDayTime.fontSize         = (int)MUISkin.UIToScreen(11f);
            lblDayTime.playAudioEvents  = (CityInfoDatas.TimeWarpMod_sunManager == null);
            lblDayTime.eventClick      += OnDayTimeClicked;

            // 本地时间
            lblLocalTimeA                  = this.AddUIComponent <UISprite>();
            lblLocalTimeA.size             = new Vector2(7, 7);
            lblLocalTimeA.relativePosition = new Vector3(4, LINE2 + 5);
            lblLocalTimeA.spriteName       = "OptionBaseFocused";
            lblLocalTimeA.opacity          = 0.3f;

            lblLocalTime                  = this.AddUIComponent <MUILabel>();
            lblLocalTime.size             = new Vector2(45, LINEW);
            lblLocalTime.relativePosition = new Vector3(14, LINE2 - 2);
            lblLocalTime.textColor        = ExtendedPanel.COLOR_DARK_YELLOW;
            lblLocalTime.textAlignment    = UIHorizontalAlignment.Left;
            lblLocalTime.fontStyle        = FontStyle.Bold;
            lblLocalTime.fontSize         = (int)MUISkin.UIToScreen(11f);
            lblLocalTime.eventClick      += OnLocalTimeClick;
            lblLocalTime.playAudioEvents  = true;

            // 温度
            lblThermometerA                  = this.AddUIComponent <UISprite>();
            lblThermometerA.size             = new Vector2(16, 16);
            lblThermometerA.relativePosition = new Vector3(105, LINE2);
            lblThermometerA.spriteName       = "ThermometerIcon";
            lblThermometerA.opacity          = 0.3f;

            lblThermometer                  = this.AddUIComponent <MUILabel>();
            lblThermometer.size             = new Vector2(40, LINEW);
            lblThermometer.relativePosition = new Vector3(115, LINE2);
            lblThermometer.textColor        = ExtendedPanel.COLOR_DARK_TEXT;
            lblThermometer.textAlignment    = UIHorizontalAlignment.Right;
            //lblThermometer.fontStyle = FontStyle.Bold;
            lblThermometer.fontSize        = (int)MUISkin.UIToScreen(11f);
            lblThermometer.tooltipLocaleID = "MAIN_TEMPERATURE";

            setGameState();
        }
Esempio n. 30
0
        public override void Start()
        {
            UIMoreTools.Initialise();

            instance = this;

            UICheckBox checkBox = null;

            atlas            = UIUtils.GetAtlas("Ingame");
            size             = new Vector2(41, 41);
            relativePosition = new Vector2(GetUIView().GetScreenResolution().x - 340, -41);
            name             = "MoveIt_ToolOptionPanel";

            DebugUtils.Log("ToolOptionPanel position: " + absolutePosition);

            #region Follow Terrain
            m_followTerrain                 = AddUIComponent <UIMultiStateButton>();
            m_followTerrain.atlas           = GetFollowTerrainAtlas();
            m_followTerrain.name            = "MoveIt_FollowTerrain";
            m_followTerrain.tooltip         = Str.baseUI_FollowTerrain_Tooltip;
            m_followTerrain.playAudioEvents = true;

            m_followTerrain.size          = new Vector2(36, 36);
            m_followTerrain.spritePadding = new RectOffset();

            m_followTerrain.backgroundSprites[0].disabled = "ToggleBaseDisabled";
            m_followTerrain.backgroundSprites[0].hovered  = "ToggleBaseHovered";
            m_followTerrain.backgroundSprites[0].normal   = "ToggleBase";
            m_followTerrain.backgroundSprites[0].pressed  = "ToggleBasePressed";

            m_followTerrain.backgroundSprites.AddState();
            m_followTerrain.backgroundSprites[1].disabled = "ToggleBaseDisabled";
            m_followTerrain.backgroundSprites[1].hovered  = "";
            m_followTerrain.backgroundSprites[1].normal   = "ToggleBaseFocused";
            m_followTerrain.backgroundSprites[1].pressed  = "ToggleBasePressed";

            m_followTerrain.foregroundSprites[0].normal = "FollowTerrain_disabled";

            m_followTerrain.foregroundSprites.AddState();
            m_followTerrain.foregroundSprites[1].normal = "FollowTerrain";

            m_followTerrain.relativePosition = Vector2.zero;

            m_followTerrain.activeStateIndex = MoveItTool.followTerrain ? 1 : 0;

            m_followTerrain.eventClicked += (c, p) =>
            {
                MoveItTool.followTerrain = (m_followTerrain.activeStateIndex == 1);
                MoveItTool.followTerrainModeEnabled.value = (m_followTerrain.activeStateIndex == 1);
            };
            #endregion

            #region Snapping
            m_snapping                 = AddUIComponent <UIMultiStateButton>();
            m_snapping.atlas           = UIUtils.GetAtlas("Ingame");
            m_snapping.name            = "MoveIt_Snapping";
            m_snapping.tooltip         = Str.baseUI_ToggleSnapping_Tooltip;
            m_snapping.playAudioEvents = true;

            m_snapping.size          = new Vector2(36, 36);
            m_snapping.spritePadding = new RectOffset();

            m_snapping.backgroundSprites[0].disabled = "ToggleBaseDisabled";
            m_snapping.backgroundSprites[0].hovered  = "ToggleBaseHovered";
            m_snapping.backgroundSprites[0].normal   = "ToggleBase";
            m_snapping.backgroundSprites[0].pressed  = "ToggleBasePressed";

            m_snapping.backgroundSprites.AddState();
            m_snapping.backgroundSprites[1].disabled = "ToggleBaseDisabled";
            m_snapping.backgroundSprites[1].hovered  = "";
            m_snapping.backgroundSprites[1].normal   = "ToggleBaseFocused";
            m_snapping.backgroundSprites[1].pressed  = "ToggleBasePressed";

            m_snapping.foregroundSprites[0].disabled = "SnappingDisabled";
            m_snapping.foregroundSprites[0].hovered  = "SnappingHovered";
            m_snapping.foregroundSprites[0].normal   = "Snapping";
            m_snapping.foregroundSprites[0].pressed  = "SnappingPressed";

            m_snapping.foregroundSprites.AddState();
            m_snapping.foregroundSprites[1].disabled = "SnappingDisabled";
            m_snapping.foregroundSprites[1].hovered  = "";
            m_snapping.foregroundSprites[1].normal   = "SnappingFocused";
            m_snapping.foregroundSprites[1].pressed  = "SnappingPressed";

            m_snapping.relativePosition = m_followTerrain.relativePosition + new Vector3(m_followTerrain.width, 0);

            m_snapping.activeStateIndex = (MoveItTool.instance != null && MoveItTool.instance.snapping) ? 1 : 0;

            m_snapping.eventClicked += (c, p) =>
            {
                if (MoveItTool.instance != null)
                {
                    MoveItTool.instance.snapping = (m_snapping.activeStateIndex == 1);
                }
            };
            #endregion

            m_tabStrip      = AddUIComponent <UITabstrip>();
            m_tabStrip.size = new Vector2(36, 72);

            m_tabStrip.relativePosition = m_snapping.relativePosition + new Vector3(m_snapping.width, 0);

            #region Single Select
            m_single                 = m_tabStrip.AddTab("MoveIt_Single", null, false);
            m_single.group           = m_tabStrip;
            m_single.atlas           = UIUtils.GetAtlas("Ingame");
            m_single.tooltip         = Str.baseUI_Single_Tooltip;
            m_single.playAudioEvents = true;

            m_single.size = new Vector2(36, 36);

            m_single.normalBgSprite    = "OptionBase";
            m_single.focusedBgSprite   = "OptionBaseFocused";
            m_single.hoveredBgSprite   = "OptionBaseHovered";
            m_single.pressedBgSprite   = "OptionBasePressed";
            m_single.disabledBgSprite  = "OptionBaseDisabled";
            m_single.text              = "•";
            m_single.textScale         = 1.5f;
            m_single.textPadding       = new RectOffset(0, 1, 4, 0);
            m_single.textColor         = new Color32(119, 124, 126, 255);
            m_single.hoveredTextColor  = new Color32(110, 113, 114, 255);
            m_single.pressedTextColor  = new Color32(172, 175, 176, 255);
            m_single.focusedTextColor  = new Color32(187, 224, 235, 255);
            m_single.disabledTextColor = new Color32(66, 69, 70, 255);
            #endregion

            #region Marquee Select
            m_marquee                 = m_tabStrip.AddTab("MoveIt_Marquee", null, false);
            m_marquee.group           = m_tabStrip;
            m_marquee.atlas           = UIUtils.GetAtlas("Ingame");
            m_marquee.tooltip         = Str.baseUI_Marquee_Tooltip;
            m_marquee.playAudioEvents = true;

            m_marquee.size = new Vector2(36, 36);

            m_marquee.normalBgSprite   = "OptionBase";
            m_marquee.focusedBgSprite  = "OptionBaseFocused";
            m_marquee.hoveredBgSprite  = "OptionBaseHovered";
            m_marquee.pressedBgSprite  = "OptionBasePressed";
            m_marquee.disabledBgSprite = "OptionBaseDisabled";

            m_marquee.normalFgSprite   = "ZoningOptionMarquee";
            m_marquee.relativePosition = m_single.relativePosition + new Vector3(m_single.width, 0);

            #region filtersPanel
            m_filtersPanel                  = AddUIComponent(typeof(UIPanel)) as UIPanel;
            m_filtersPanel.atlas            = UIUtils.GetAtlas("Ingame");
            m_filtersPanel.backgroundSprite = "SubcategoriesPanel";
            m_filtersPanel.clipChildren     = true;
            m_filtersPanel.size             = new Vector2(150, 235);
            m_filtersPanel.isVisible        = false;
            UIFilters.FilterPanel           = m_filtersPanel;

            void OnDoubleClick(UIComponent c, UIMouseEventParameter p)
            {
                foreach (UICheckBox cb in UIFilters.FilterCBs)
                {
                    cb.isChecked = false;
                    Filters.SetFilter(cb.name, false);
                }
                ((UICheckBox)c).isChecked = true;
                Filters.SetFilter(c.name, true);

                UIFilters.RefreshFilters();
            }

            void OnPickerClick(UIComponent c, UIMouseEventParameter p)
            {
                MoveItTool.SetToolState(MoveItTool.ToolStates.Picking);
                UIFilters.UpdatePickerButton(2);
            }

            void OnPickerDoubleClick(UIComponent c, UIMouseEventParameter p)
            {
                Filters.Picker = new PickerFilter();

                Filters.SetFilter("Picker", false);
                MoveItTool.SetToolState();
                UIFilters.UpdatePickerButton(1);
            }

            #region Standard Filters
            m_filtersPanelList      = m_filtersPanel.AddUIComponent(typeof(UIPanel)) as UIPanel;
            m_filtersPanelList.name = "m_filtersPanelList";

            m_picker = UIUtils.CreateButton(m_filtersPanel);
            m_picker.relativePosition  = new Vector3(122, 9);
            m_picker.size              = new Vector2(20, 20);
            m_picker.atlas             = GetIconsAtlas();
            m_picker.normalFgSprite    = "EyeDropper";
            m_picker.normalBgSprite    = "OptionsDropboxListbox";
            m_picker.hoveredBgSprite   = "OptionsDropboxListboxFocused";
            m_picker.pressedBgSprite   = "OptionsDropboxListboxHovered";
            m_picker.eventClick       += OnPickerClick;
            m_picker.eventDoubleClick += OnPickerDoubleClick;
            m_picker.name              = "mit_pickerButton";

            checkBox        = UIFilters.CreateFilterCB(m_filtersPanelList, "Picker", Str.filter_Picker, false);
            checkBox.width -= 21;
            UIFilters.UpdatePickerLabel(Str.filter_Picker, Str.filter_Picker_Tooltip, UIFilters.InactiveLabelColor, false);
            checkBox.eventDoubleClick += OnDoubleClick;

            checkBox = UIFilters.CreateFilterCB(m_filtersPanelList, "Buildings", Str.filter_Buildings);
            checkBox.eventDoubleClick += OnDoubleClick;

            checkBox = UIFilters.CreateFilterCB(m_filtersPanelList, "Props", Str.filter_Props);
            checkBox.eventDoubleClick += OnDoubleClick;

            checkBox = UIFilters.CreateFilterCB(m_filtersPanelList, "Decals", Str.filter_Decals);
            checkBox.eventDoubleClick += OnDoubleClick;

            checkBox = UIFilters.CreateFilterCB(m_filtersPanelList, "Surfaces", Str.filter_Surfaces);
            checkBox.eventDoubleClick += OnDoubleClick;

            checkBox = UIFilters.CreateFilterCB(m_filtersPanelList, "Trees", Str.filter_Trees);
            checkBox.eventDoubleClick += OnDoubleClick;

            if (MoveItTool.PO.Enabled)
            {
                if (MoveItTool.PO.Active)
                {
                    m_filtersPanel.height += 20f;
                }
                checkBox = UIFilters.CreateFilterCB(m_filtersPanelList, "PO", Str.filter_PO);
                checkBox.eventDoubleClick += OnDoubleClick;
                checkBox.isVisible         = MoveItTool.PO.Active;
            }

            checkBox = UIFilters.CreateFilterCB(m_filtersPanelList, "Nodes", Str.filter_Nodes);
            checkBox.eventDoubleClick += OnDoubleClick;

            checkBox = UIFilters.CreateFilterCB(m_filtersPanelList, "Segments", Str.filter_Segments);
            checkBox.eventDoubleClick += OnDoubleClick;
            #endregion

            #region Network Filters
            UIButton btnNetworks = UIFilters.CreateToggleNFBtn();
            void OnDoubleClickNetworkFilter(UIComponent c, UIMouseEventParameter p)
            {
                foreach (UICheckBox cb in UIFilters.NetworkCBs)
                {
                    cb.isChecked = false;
                    Filters.SetNetworkFilter(cb.name, false);
                }
                ((UICheckBox)c).isChecked = true;
                Filters.SetNetworkFilter(c.name, true);

                UIFilters.RefreshFilters();
            }

            checkBox = UIFilters.CreateNetworkFilterCB(m_filtersPanelList, "Roads", Str.filter_Roads);
            checkBox.eventDoubleClick += OnDoubleClickNetworkFilter;

            checkBox = UIFilters.CreateNetworkFilterCB(m_filtersPanelList, "Tracks", Str.filter_Tracks);
            checkBox.eventDoubleClick += OnDoubleClickNetworkFilter;

            checkBox = UIFilters.CreateNetworkFilterCB(m_filtersPanelList, "Paths", Str.filter_Paths);
            checkBox.eventDoubleClick += OnDoubleClickNetworkFilter;

            checkBox = UIFilters.CreateNetworkFilterCB(m_filtersPanelList, "Fences", Str.filter_Fences);
            checkBox.eventDoubleClick += OnDoubleClickNetworkFilter;

            checkBox = UIFilters.CreateNetworkFilterCB(m_filtersPanelList, "Powerlines", Str.filter_Powerlines);
            checkBox.eventDoubleClick += OnDoubleClickNetworkFilter;

            checkBox = UIFilters.CreateNetworkFilterCB(m_filtersPanelList, "Others", Str.filter_Others);
            checkBox.eventDoubleClick += OnDoubleClickNetworkFilter;

            UIFilters.RefreshFilters();
            #endregion

            m_filtersPanelList.padding             = new RectOffset(10, 10, 10, 10);
            m_filtersPanelList.autoLayoutDirection = LayoutDirection.Vertical;
            m_filtersPanelList.autoLayoutPadding   = new RectOffset(0, 0, 0, 5);
            m_filtersPanelList.autoLayout          = true;
            m_filtersPanelList.relativePosition    = new Vector3(0, 0, 0);
            m_filtersPanel.autoLayout       = false;
            m_filtersPanel.absolutePosition = m_marquee.absolutePosition + new Vector3(-47, -5 - m_filtersPanel.height);
            #endregion

            m_marquee.eventButtonStateChanged += (c, p) =>
            {
                MoveItTool.marqueeSelection = p == UIButton.ButtonState.Focused;
                m_filtersPanel.isVisible    = MoveItTool.marqueeSelection;

                if (UIChangesWindow.instance != null)
                {
                    UIChangesWindow.instance.RefreshPosition();
                }
            };
            m_marquee.eventDoubleClick += (UIComponent c, UIMouseEventParameter p) =>
            {
                bool newChecked = false;
                foreach (UICheckBox cb in m_filtersPanel.GetComponentsInChildren <UICheckBox>())
                {
                    if (cb.name == "Picker")
                    {
                        continue;
                    }
                    if (!cb.isChecked)
                    {
                        newChecked = true;
                        break;
                    }
                }

                foreach (UICheckBox cb in m_filtersPanel.GetComponentsInChildren <UICheckBox>())
                {
                    if (cb.name == "Picker")
                    {
                        cb.isChecked = false;
                        Filters.SetAnyFilter(cb.name, false);
                    }
                    else
                    {
                        cb.isChecked = newChecked;
                        Filters.SetAnyFilter(cb.name, newChecked);
                    }
                }

                UIFilters.RefreshFilters();
            };
            #endregion

            #region Copy
            m_copy                 = AddUIComponent <UIButton>();
            m_copy.name            = "MoveIt_Copy";
            m_copy.group           = m_tabStrip;
            m_copy.atlas           = GetIconsAtlas();
            m_copy.tooltip         = Str.baseUI_Clone_Tooltip;;
            m_copy.playAudioEvents = true;

            m_copy.size = new Vector2(36, 36);

            m_copy.normalBgSprite   = "OptionBase";
            m_copy.hoveredBgSprite  = "OptionBaseHovered";
            m_copy.pressedBgSprite  = "OptionBasePressed";
            m_copy.disabledBgSprite = "OptionBaseDisabled";

            m_copy.normalFgSprite = "Copy";

            m_copy.relativePosition = m_tabStrip.relativePosition + new Vector3(m_single.width + m_marquee.width, 0);

            m_copy.eventClicked += (c, p) =>
            {
                if (MoveItTool.instance != null)
                {
                    if (MoveItTool.ToolState == MoveItTool.ToolStates.Cloning)
                    {
                        MoveItTool.instance.StopCloning();
                    }
                    else
                    {
                        if (Input.GetKey(KeyCode.LeftAlt) || Input.GetKey(KeyCode.RightAlt))
                        {
                            if (Action.HasSelection())
                            {
                                DuplicateAction action = new DuplicateAction();
                                if (action.Count > 0)
                                {
                                    ActionQueue.instance.Push(action);
                                    ActionQueue.instance.Do();
                                }
                            }
                        }
                        else
                        {
                            MoveItTool.instance.StartCloning();
                        }
                    }
                }
            };
            #endregion

            #region Bulldoze
            m_bulldoze                 = AddUIComponent <UIButton>();
            m_bulldoze.name            = "MoveIt_Bulldoze";
            m_bulldoze.group           = m_tabStrip;
            m_bulldoze.atlas           = GetIconsAtlas();
            m_bulldoze.tooltip         = Str.baseUI_Bulldoze_Tooltip;
            m_bulldoze.playAudioEvents = true;

            m_bulldoze.size = new Vector2(36, 36);

            m_bulldoze.normalBgSprite   = "OptionBase";
            m_bulldoze.hoveredBgSprite  = "OptionBaseHovered";
            m_bulldoze.pressedBgSprite  = "OptionBasePressed";
            m_bulldoze.disabledBgSprite = "OptionBaseDisabled";

            m_bulldoze.normalFgSprite = "Bulldoze";

            m_bulldoze.relativePosition = m_copy.relativePosition + new Vector3(m_copy.width, 0);

            m_bulldoze.eventClicked += (c, p) =>
            {
                if (MoveItTool.instance != null)
                {
                    MoveItTool.instance.StartBulldoze();
                }
            };
            #endregion

            #region More Tools
            #region More Tools Container
            m_moreTools = AddUIComponent <UIButton>();
            UIMoreTools.MoreToolsBtn     = m_moreTools;
            m_moreTools.name             = "MoveIt_MoreToolsBtn";
            m_moreTools.group            = m_tabStrip;
            m_moreTools.atlas            = GetIconsAtlas();
            m_moreTools.tooltip          = Str.baseUI_Toolbox_Tooltip;
            m_moreTools.playAudioEvents  = true;
            m_moreTools.size             = new Vector2(36, 36);
            m_moreTools.normalBgSprite   = "OptionBase";
            m_moreTools.hoveredBgSprite  = "OptionBaseHovered";
            m_moreTools.pressedBgSprite  = "OptionBasePressed";
            m_moreTools.disabledBgSprite = "OptionBaseDisabled";
            m_moreTools.normalFgSprite   = "MoreTools";
            m_moreTools.relativePosition = m_bulldoze.relativePosition + new Vector3(m_bulldoze.width, 0);
            m_moreTools.eventClicked    += (UIComponent c, UIMouseEventParameter p) =>
            {
                UIMoreTools.MoreToolsClicked(m_moreTools.name);
            };

            m_moreToolsPanel                  = AddUIComponent <UIPanel>();
            UIMoreTools.MoreToolsPanel        = m_moreToolsPanel;
            m_moreToolsPanel.name             = "mtPanel";
            m_moreToolsPanel.autoLayout       = false;
            m_moreToolsPanel.clipChildren     = true;
            m_moreToolsPanel.size             = new Vector2(36, 132);
            m_moreToolsPanel.isVisible        = false;
            m_moreToolsPanel.absolutePosition = m_moreTools.absolutePosition + new Vector3(0, 10 - m_moreToolsPanel.height);
            m_moreTools.zOrder                = m_moreToolsPanel.zOrder + 10;

            // The vertical shade
            UIPanel mtpBackground = m_moreToolsPanel.AddUIComponent <UIPanel>();
            mtpBackground.name             = "mtpBackground";
            mtpBackground.clipChildren     = true;
            mtpBackground.relativePosition = new Vector3(5, 10);
            mtpBackground.atlas            = UIUtils.GetAtlas("Ingame");
            mtpBackground.backgroundSprite = "InfoPanelBack";
            mtpBackground.size             = m_moreToolsPanel.size - new Vector2(10, 10);

            UIPanel mtpContainer = m_moreToolsPanel.AddUIComponent <UIPanel>();
            mtpContainer.name = "mtpContainer";
            mtpContainer.autoLayoutDirection = LayoutDirection.Vertical;
            mtpContainer.autoLayoutPadding   = new RectOffset(0, 0, 0, 4);
            mtpContainer.autoLayout          = true;
            mtpContainer.relativePosition    = Vector3.zero;
            mtpContainer.size             = m_moreToolsPanel.size;
            mtpContainer.eventMouseEnter += (UIComponent c, UIMouseEventParameter p) => { if (MoveItTool.marqueeSelection)
                                                                                          {
                                                                                              m_filtersPanel.isVisible = false;
                                                                                          }
            };
            mtpContainer.eventMouseLeave += (UIComponent c, UIMouseEventParameter p) => { if (MoveItTool.marqueeSelection)
                                                                                          {
                                                                                              m_filtersPanel.isVisible = true;
                                                                                          }
            };

            UIMoreTools.MoreButtons.Clear();
            UIMoreTools.MoreSubButtons.Clear();
            #endregion

            try
            {
                AddMoreButtonCallback?.Invoke(this, m_moreTools, mtpBackground, mtpContainer);
            }
            catch (Exception e)
            {
                Log.Error(e);
            }

            #region More Tools / Toolbox buttons
            UIMoreToolsBtn othersBtn = new UIMoreToolsBtn(this, "MoveIt_OthersBtn", Str.toolbox_OtherTools_Tooltip, "MenuOthers", mtpContainer, "m_mtOthersList", (MoveItTool.PO.Enabled ? 7.25f : 6.25f));
            if (MoveItTool.PO.Enabled)
            {
                othersBtn.CreateSubButton("MoveIt_ConvertToPOBtn", Str.toolbox_ConvertToPO, "ConvertToPO");
            }
            othersBtn.CreateSubButton("MoveIt_AlignLineBtn", Str.toolbox_LineUpObjects, "AlignLine");
            othersBtn.CreateSubButton("MoveIt_AlignMirrorBtn", Str.toolbox_MirrorObjects, "AlignMirror");
            othersBtn.CreateSubButton("MoveIt_ResetObjectBtn", Str.toolbox_ResetObjects, "ResetObject");
            othersBtn.CreateSubButton("MoveIt_MoveToBtn", Str.toolbox_SetPosition, "MoveTo");
            othersBtn.CreateSubSeparator("MoveIt_FileSeparator");
            othersBtn.CreateSubButton("MoveIt_LoadBtn", Str.toolbox_ImportSelection, "Load");
            othersBtn.CreateSubButton("MoveIt_SaveBtn", Str.toolbox_ExportSelection, "Save");
            othersBtn.UpdateWidth();

            UIMoreToolsBtn rotateBtn = new UIMoreToolsBtn(this, "MoveIt_RotateBtn", Str.toolbox_RotationTools_Tooltip, "MenuRotate", mtpContainer, "m_mtRotateList", 3f);
            rotateBtn.CreateSubButton("MoveIt_AlignRandomBtn", Str.toolbox_RotateRandomly, "AlignRandom");
            rotateBtn.CreateSubButton("MoveIt_AlignGroupBtn", Str.toolbox_RotateAtCentre, "AlignGroup");
            rotateBtn.CreateSubButton("MoveIt_AlignIndividualBtn", Str.toolbox_RotateInPlace, "AlignIndividual");
            rotateBtn.UpdateWidth();

            UIMoreToolsBtn heightBtn = new UIMoreToolsBtn(this, "MoveIt_HeightBtn", Str.toolbox_HeightTools_Tooltip, "MenuHeight", mtpContainer, "m_mtHeightList", 3f);
            heightBtn.CreateSubButton("MoveIt_AlignSlopeBtn", Str.toolbox_SlopeObjects, "AlignSlope");
            heightBtn.CreateSubButton("MoveIt_AlignTerrainHeightBtn", Str.toolbox_ToTerrainHeight, "AlignTerrainHeight");
            heightBtn.CreateSubButton("MoveIt_AlignHeightBtn", Str.toolbox_ToObjectHeight, "AlignHeight");
            heightBtn.UpdateWidth();
            #endregion
            #endregion

            #region View Options
            m_viewOptions                  = AddUIComponent <UIPanel>();
            m_viewOptions.atlas            = UIUtils.GetAtlas("Ingame");
            m_viewOptions.backgroundSprite = "InfoPanelBack";
            m_viewOptions.size             = new Vector2(44f, 80f);

            m_viewOptions.absolutePosition = new Vector3(GetUIView().GetScreenResolution().x - m_viewOptions.width, absolutePosition.y - m_viewOptions.height - 8f);


            grid                 = m_viewOptions.AddUIComponent <UIMultiStateButton>();
            grid.atlas           = GetIconsAtlas();
            grid.name            = "MoveIt_GridView";
            grid.tooltip         = Str.baseUI_ToggleGrid_Tooltip;
            grid.playAudioEvents = true;

            grid.size          = new Vector2(36, 36);
            grid.spritePadding = new RectOffset();

            grid.backgroundSprites[0].disabled = "OptionBaseDisabled";
            grid.backgroundSprites[0].hovered  = "OptionBaseHovered";
            grid.backgroundSprites[0].normal   = "OptionBase";
            grid.backgroundSprites[0].pressed  = "OptionBasePressed";

            grid.backgroundSprites.AddState();
            grid.backgroundSprites[1].disabled = "OptionBaseDisabled";
            grid.backgroundSprites[1].hovered  = "";
            grid.backgroundSprites[1].normal   = "OptionBaseFocused";
            grid.backgroundSprites[1].pressed  = "OptionBasePressed";

            grid.foregroundSprites[0].normal = "Grid";

            grid.foregroundSprites.AddState();
            grid.foregroundSprites[1].normal = "GridFocused";

            grid.relativePosition = new Vector3(4f, 4f);

            grid.activeStateIndex = 0;

            grid.eventClicked += (c, p) =>
            {
                MoveItTool.gridVisible = (grid.activeStateIndex == 1);
            };


            underground                 = m_viewOptions.AddUIComponent <UIMultiStateButton>();
            underground.atlas           = UIUtils.GetAtlas("Ingame");
            underground.name            = "MoveIt_UndergroundView";
            underground.tooltip         = Str.baseUI_ToggleUnderground_Tooltip;
            underground.playAudioEvents = true;

            underground.size          = new Vector2(36, 36);
            underground.spritePadding = new RectOffset();

            underground.backgroundSprites[0].disabled = "OptionBaseDisabled";
            underground.backgroundSprites[0].hovered  = "OptionBaseHovered";
            underground.backgroundSprites[0].normal   = "OptionBase";
            underground.backgroundSprites[0].pressed  = "OptionBasePressed";

            underground.backgroundSprites.AddState();
            underground.backgroundSprites[1].disabled = "OptionBaseDisabled";
            underground.backgroundSprites[1].hovered  = "";
            underground.backgroundSprites[1].normal   = "OptionBaseFocused";
            underground.backgroundSprites[1].pressed  = "OptionBasePressed";

            underground.foregroundSprites[0].normal = "BulldozerOptionPipes";

            underground.foregroundSprites.AddState();
            underground.foregroundSprites[1].normal = "BulldozerOptionPipesFocused";

            underground.relativePosition = new Vector3(4f, 40f);

            underground.activeStateIndex = 0;

            underground.eventClicked += (c, p) =>
            {
                MoveItTool.tunnelVisible = (underground.activeStateIndex == 1);
            };


            if (MoveItTool.PO.Enabled)
            {
                PO_button                 = m_viewOptions.AddUIComponent <UIMultiStateButton>();
                PO_button.atlas           = GetIconsAtlas();
                PO_button.name            = "MoveIt_PO_button";
                PO_button.tooltip         = Str.baseUI_TogglePO_Tooltip;
                PO_button.playAudioEvents = true;

                PO_button.size          = new Vector2(36, 36);
                PO_button.spritePadding = new RectOffset();

                PO_button.backgroundSprites[0].disabled = "OptionBaseDisabled";
                PO_button.backgroundSprites[0].hovered  = "OptionBaseHovered";
                PO_button.backgroundSprites[0].normal   = "OptionBase";
                PO_button.backgroundSprites[0].pressed  = "OptionBasePressed";

                PO_button.backgroundSprites.AddState();
                PO_button.backgroundSprites[1].disabled = "OptionBaseDisabled";
                PO_button.backgroundSprites[1].hovered  = "";
                PO_button.backgroundSprites[1].normal   = "OptionBaseFocused";
                PO_button.backgroundSprites[1].pressed  = "OptionBasePressed";

                PO_button.foregroundSprites[0].normal = "PO";

                PO_button.foregroundSprites.AddState();
                PO_button.foregroundSprites[1].normal = "POFocused";

                PO_button.relativePosition = new Vector3(4f, 76f);

                PO_button.activeStateIndex = 0;

                PO_button.eventClicked += (c, p) =>
                {
                    MoveItTool.PO.InitialiseTool();
                };

                m_viewOptions.height           += 36;
                m_viewOptions.absolutePosition += new Vector3(0, -36);
            }

            #endregion
        }