public void Update()
        {
            if (!_initialized)
            {
                var go = GameObject.Find("(Library) ChirpXPanel");
                if (go == null)
                {
                    return;
                }
                var infoPanel = go.GetComponent <ChirpXPanel>();
                if (infoPanel == null)
                {
                    return;
                }
                _chirpXPanel          = infoPanel;
                _rocketDropDown       = UiUtil.CreateDropDown(_chirpXPanel.component);
                _rocketDropDown.width = 250;

                PrefabLister.ListRockets().ForEach(r =>
                {
                    _rocketDropDown.AddItem(r.name);
                });
                _rocketDropDown.eventSelectedIndexChanged += IndexChangeHandler;
                _rocketLabel = UiUtil.CreateLabel("Rocket", _chirpXPanel.component, new Vector3());
                _initialized = true;
            }
            if (!_chirpXPanel.component.isVisible)
            {
                return;
            }
            SetUpRocketDropDown();
        }
Esempio n. 2
0
        void RefreshSkinsList()
        {
            if (_skinsDropdown != null)
            {
                _availableSkins = SkinLoader.FindAllSkins();
                _skinsDropdown.localizedItems = new string[0];

                _skinsDropdown.AddItem("Vanilla (by Colossal Order)");
                foreach (var skin in _availableSkins)
                {
                    _skinsDropdown.AddItem(String.Format("{0} (by {1})", skin.Name, skin.Author));
                }

                _skinsDropdown.selectedIndex = 0;
                _skinsDropdown.Invalidate();
            }
        }
Esempio n. 3
0
        public void LevelDropdown()
        {
            levelDropdown = panel.AddUIComponent <UIDropDown>();
            UIX.DropDown(levelDropdown);
            var values = Enum.GetValues(typeof(ItemClass.Level));

            levelDropdown.AddItem("All");

            foreach (var itemClass in values)
            {
                var name = Enum.GetName(typeof(ItemClass.Level), itemClass);
                levelDropdown.AddItem(name);
            }

            levelDropdown.selectedIndex              = 0;
            levelDropdown.eventSelectedIndexChanged += levelDropdown_eventSelectedIndexChanged;
        }
        protected override void OnVisibilityChanged()
        {
            base.OnVisibilityChanged();

            UIComponent modalEffect = GetUIView().panelsLibraryModalEffect;

            if (isVisible)
            {
                if (UIThemeManager.instance.selectedBuilding == null)
                {
                    UIView.PopModal();
                    Hide();
                    return;
                }

                m_item = UIThemeManager.instance.selectedBuilding;

                // Name
                m_name.text = m_item.displayName;

                // Level
                int maxLevel = m_item.maxLevel;
                m_level.items = new string[0];
                for (int i = 1; i <= maxLevel; i++)
                {
                    m_level.AddItem("Level " + i);
                }
                m_level.selectedIndex = (m_item.level < maxLevel) ? m_item.level : 0;

                CheckValidity();

                if (modalEffect != null)
                {
                    modalEffect.Show(false);
                    ValueAnimator.Animate("NewThemeModalEffect", delegate(float val)
                    {
                        modalEffect.opacity = val;
                    }, new AnimatedFloat(0f, 1f, 0.7f, EasingType.CubicEaseOut));
                }
            }
            else if (modalEffect != null)
            {
                ValueAnimator.Animate("NewThemeModalEffect", delegate(float val)
                {
                    modalEffect.opacity = val;
                }, new AnimatedFloat(1f, 0f, 0.7f, EasingType.CubicEaseOut), delegate
                {
                    modalEffect.Hide();
                });
            }
        }
Esempio n. 5
0
        public void ServiceDropdown()
        {
            serviceDropdown = panel.AddUIComponent <UIDropDown>();
            UIX.DropDown(serviceDropdown);
            var values = Enum.GetValues(typeof(ItemClass.Service));

            foreach (var itemClass in values)
            {
                var name = Enum.GetName(typeof(ItemClass.Service), itemClass);
                serviceDropdown.AddItem(name);
            }

            serviceDropdown.selectedIndex              = 0;
            serviceDropdown.eventSelectedIndexChanged += serviceDropdown_eventSelectedIndexChanged;
        }
Esempio n. 6
0
        void ModesDropdown()
        {
            modesDropdown = panel.AddUIComponent <UIDropDown>();
            UIX.DropDown(modesDropdown);
            var values = Enum.GetValues(typeof(BuildingInfo.PlacementMode));


            foreach (var itemClass in values)
            {
                var name = Enum.GetName(typeof(BuildingInfo.PlacementMode), itemClass);
                modesDropdown.AddItem(name);
            }

            modesDropdown.selectedIndex              = 0;
            modesDropdown.eventSelectedIndexChanged += modesDropdown_eventSelectedIndexChanged;
        }
Esempio n. 7
0
        private void CreatePanelComponents()
        {
            List <string> values = new List <string> {
                "None", "Random"
            };

            values.AddRange(TextureUtils.m_screenTextureStore.Keys);

            yCursor = titleOffset + m_UIPadding.top;
            for (int i = 0; i < NUM_DROPDOWNS; i++)
            {
                UILabel descLabel = this.AddUIComponent <UILabel>();
                descLabel.text              = "Screen " + i;
                descLabel.autoSize          = true;
                descLabel.size              = new Vector2(this.width - m_UIPadding.left - m_UIPadding.right, 50);
                descLabel.padding           = m_UIPadding;
                descLabel.relativePosition  = new Vector2(m_UIPadding.left, yCursor);
                descLabel.textAlignment     = UIHorizontalAlignment.Left;
                descLabel.verticalAlignment = UIVerticalAlignment.Middle;

                yCursor += (descLabel.height + 2 * m_UIPadding.top);

                UIDropDown dropDown = UIUtils.CreateDropDown(this, new Vector2(((this.width - m_UIPadding.left - m_UIPadding.right)), 25));
                foreach (string name in values)
                {
                    dropDown.AddItem(name);
                }
                dropDown.relativePosition = new Vector2(m_UIPadding.left, yCursor);
                dropDown.selectedIndex    = 0;

                DropdownGroup group = new DropdownGroup();
                group.dropDown = dropDown;
                group.label    = descLabel;
                group.dropDown.Hide();
                group.label.Hide();
                dropDownGroups[i] = group;

                yCursor += (dropDown.height + 2 * m_UIPadding.top);
            }

            setButton                  = UIUtils.CreateButton(this);
            setButton.text             = "Set";
            setButton.size             = new Vector2(this.width - m_UIPadding.left - m_UIPadding.right, 50);
            setButton.relativePosition = new Vector2(m_UIPadding.left, yCursor);
            setButton.eventClicked    += SetButton_eventClicked;
            this.height                = yCursor + setButton.height + m_UIPadding.bottom;
        }
Esempio n. 8
0
        void PropToolDropdown()
        {
            propToolDropdown = panel.AddUIComponent <UIDropDown>();
            UIX.DropDown(propToolDropdown);

            for (uint i = 0; i < PrefabCollection <PropInfo> .PrefabCount(); i++)
            {
                var prefab = PrefabCollection <PropInfo> .GetPrefab(i);

                if (prefab != null)
                {
                    propToolDropdown.AddItem(prefab.name);
                }
            }
            propToolDropdown.selectedIndex              = 0;
            propToolDropdown.eventSelectedIndexChanged += propToolDropdown_eventSelectedIndexChanged;
        }
Esempio n. 9
0
        public void RefreshButtons()
        {
            itemsDropdown.items = new string[0];

            for (uint i = 0; i < PrefabCollection <BuildingInfo> .PrefabCount(); i++)
            {
                var prefab = PrefabCollection <BuildingInfo> .GetPrefab(i);

                if (prefab.GetService().ToString() == serviceDropdown.selectedValue)
                {
                    if (prefab.m_class.m_level.ToString() == levelDropdown.selectedValue || levelDropdown.selectedValue == "All")
                    {
                        itemsDropdown.AddItem(prefab.name);
                    }
                }
            }
        }
Esempio n. 10
0
        void NetToolDropdown()
        {
            netToolDropdown = panel.AddUIComponent <UIDropDown>();
            UIX.DropDown(netToolDropdown);

            for (uint i = 0; i < PrefabCollection <NetInfo> .PrefabCount(); i++)
            {
                var prefab = PrefabCollection <NetInfo> .GetPrefab(i);

                if (prefab != null)
                {
                    netToolDropdown.AddItem(prefab.name);
                }
            }
            netToolDropdown.selectedIndex              = 0;
            netToolDropdown.eventSelectedIndexChanged += netToolDropdown_eventSelectedIndexChanged;
            netToolDropdown.eventClick += netToolDropdown_eventClick;
        }
Esempio n. 11
0
 private void InitializeDropdown(UIDropDown dropDown, IEnumerable <string> items, int x, int y)
 {
     dropDown.relativePosition    = new Vector3(x, y - 4);
     dropDown.horizontalAlignment = UIHorizontalAlignment.Left;
     dropDown.textScale           = 0.8f;
     dropDown.color                = Color.black;
     dropDown.verticalAlignment    = UIVerticalAlignment.Middle;
     dropDown.foregroundSpriteMode = UIForegroundSpriteMode.Fill;
     dropDown.normalBgSprite       = "TextFieldPanel";
     dropDown.hoveredBgSprite      = "TextFieldPanelHovered";
     dropDown.focusedBgSprite      = "TextFieldPanel";
     dropDown.size                 = new Vector3(width - 120 - 30, 20);
     dropDown.isInteractive        = true;
     dropDown.enabled              = true;
     dropDown.builtinKeyNavigation = true;
     foreach (string item in items)
     {
         dropDown.AddItem(item);
     }
 }
Esempio n. 12
0
        private void CreatePanelComponents()
        {
            m_routeLabel                  = this.AddUIComponent <UILabel>();
            m_routeLabel.textScale        = 1f;
            m_routeLabel.size             = new Vector3(m_UIPadding.left, m_panelTitle.height + m_UIPadding.bottom);
            m_routeLabel.textColor        = new Color32(180, 180, 180, 255);
            m_routeLabel.relativePosition = new Vector3(m_UIPadding.left, m_panelTitle.height + m_UIPadding.bottom);
            m_routeLabel.textAlignment    = UIHorizontalAlignment.Left;
            m_routeLabel.text             = "Route Name";

            m_routeTypeDropdown = UIUtils.CreateDropDown(this, new Vector2(((this.width - m_UIPadding.left - 2 * m_UIPadding.right)), 25));
            //TODO: Replace with Random namer values
            foreach (RouteShieldInfo info in RouteShieldConfig.Instance().routeShieldDictionary.Values)
            {
                m_routeTypeDropdown.AddItem(info.textureName);
            }
            m_routeTypeDropdown.selectedIndex    = 0;
            m_routeTypeDropdown.relativePosition = new Vector3(m_UIPadding.left, m_routeLabel.relativePosition.y + m_routeLabel.height + m_UIPadding.bottom);

            m_routeStrField = UIUtils.CreateTextField(this);
            m_routeStrField.relativePosition = new Vector3(m_UIPadding.left, m_routeTypeDropdown.relativePosition.y + m_routeTypeDropdown.height + m_UIPadding.bottom);
            m_routeStrField.height           = 25;
            m_routeStrField.width            = (this.width - m_UIPadding.left - 2 * m_UIPadding.right);
            m_routeStrField.processMarkup    = false; //Might re-implement this eventually (needs work to stop it screwing up with markup)
            m_routeStrField.textColor        = Color.white;
            m_routeStrField.maxLength        = 3;

            UIButton nameRoadButton = UIUtils.CreateButton(this);

            nameRoadButton.text             = "Set";
            nameRoadButton.size             = new Vector2(60, 30);
            nameRoadButton.relativePosition = new Vector3(this.width - nameRoadButton.width - m_UIPadding.right, m_routeStrField.relativePosition.y + m_routeStrField.height + m_UIPadding.bottom);
            nameRoadButton.eventClicked    += NameRoadButton_eventClicked;
            nameRoadButton.tooltip          = "Create the label";

            this.height = nameRoadButton.relativePosition.y + nameRoadButton.height + m_UIPadding.bottom;
        }
Esempio n. 13
0
        public override void Start()
        {
            atlas            = UIUtils.GetAtlas("Ingame");
            backgroundSprite = "MenuPanel2";
            color            = new Color32(255, 255, 255, 255);
            isVisible        = false;
            canFocus         = true;
            isInteractive    = true;
            clipChildren     = true;
            width            = 470;
            height           = 225;
            relativePosition = new Vector3(25, 680);

            // Title Bar
            m_title       = AddUIComponent <UITitleBar>();
            m_title.title = "Bulk Network Replacer";
            //m_title.isModal = true;

            UILabel areaTypeLabel = AddUIComponent <UILabel>();

            //"select from road panel"
            areaTypeLabel.autoSize         = false;
            areaTypeLabel.width            = 60;
            areaTypeLabel.height           = 30;
            areaTypeLabel.relativePosition = new Vector2(20, 60);
            areaTypeLabel.text             = "Area:";

            areaTypeDropdown       = UIUtils.CreateDropDown(this);
            areaTypeDropdown.width = 175;
            areaTypeDropdown.AddItem("Entire Map");
            areaTypeDropdown.AddItem("Selection");
            areaTypeDropdown.selectedIndex    = 0;
            areaTypeDropdown.relativePosition = new Vector3(80, 55);


            fromFieldRow = AddUIComponent <UIPanel>();
            fromFieldRow.relativePosition = new Vector2(0, 100);
            fromFieldRow.size             = new Vector2(width, 0);

            fromRowUI();

            toFieldRow = AddUIComponent <UIPanel>();
            toFieldRow.relativePosition = new Vector2(0, 140);
            toFieldRow.size             = new Vector2(width, 0);

            toRowUI();


            replaceRoad                  = UIUtils.CreateButton(this);
            replaceRoad.text             = "Replace Network";
            replaceRoad.relativePosition = new Vector2(20, 180);
            replaceRoad.width            = 200;


            replaceRoad.eventClick += (c, p) =>
            {
                if (isVisible)
                {
                    Debug.Log("from: " + fromRoadLabel.text + "\nto:" + toRoadLabel.text);
                    if (fromRoadLabel.text == NullRoadPhrase || toRoadLabel.text == NullRoadPhrase)
                    {
                        Tools.ShowErrorWindow("Input Error", "Bulk Network Replacer:\n\n" + "The from and/or to field have no network(s) selected");
                    }
                    else if (fromRoadLabel.text == toRoadLabel.text)
                    {
                        Debug.Log("dups");
                        Tools.ShowErrorWindow("Duplicate Networks", "Bulk Network Replacer:\n\n" + "The from and to fields have the same network selected");
                    }
                    else if (fromRoadLabel.text != NullRoadPhrase && toRoadLabel.text != NullRoadPhrase)
                    {
                        Tools.UpgradeNetSegments(fromRoadLabel.text, toRoadLabel.text);
                    }

                    else
                    {
                        Tools.ShowErrorWindow("Unknown Error", "Bulk Network Replacer:\n\n" + "Report the steps before clicking taken on the workshop page of this mod");
                    }
                }
            };

            swapFromToButton                  = UIUtils.CreateButton(this);
            swapFromToButton.text             = "Swap";
            swapFromToButton.relativePosition = new Vector2(230, 180);
            swapFromToButton.width            = 90;


            swapFromToButton.eventClick += (c, p) =>
            {
                if (isVisible)
                {
                    var fromtext = fromRoadLabel.text;
                    var totext   = toRoadLabel.text;
                    fromRoadLabel.text = totext;
                    toRoadLabel.text   = fromtext;
                }
            };


            clearAllButton                  = UIUtils.CreateButton(this);
            clearAllButton.text             = "Clear All";
            clearAllButton.relativePosition = new Vector2(330, 180);
            clearAllButton.width            = 110;

            clearAllButton.eventClick += (c, p) =>
            {
                if (isVisible)
                {
                    initialRoadAdd.isVisible = true;
                    fromRoadLabel.isVisible  = false;
                    finalRoadAdd.isVisible   = true;
                    toRoadLabel.isVisible    = false;

                    removeFromFieldButton.isVisible = false;
                    removeToFieldButton.isVisible   = false;

                    fromRoadLabel.text = NullRoadPhrase;
                    toRoadLabel.text   = NullRoadPhrase;
                }
            };
        }
Esempio n. 14
0
        private UIPanel CreateQuartzPanel()
        {
            var uiView = GameObject.Find("UIView").GetComponent <UIView>();

            if (uiView == null)
            {
                Debug.LogError("UIView is null!");
                return(null);
            }

            var panel = uiView.AddUIComponent(typeof(UIPanel)) as UIPanel;

            if (panel != null)
            {
                panel.size             = new Vector2(300, 290);
                panel.isVisible        = false;
                panel.atlas            = EmbeddedResources.GetQuartzAtlas();
                panel.backgroundSprite = "DefaultPanelBackground";

                Vector2 viewSize = uiView.GetScreenResolution();

                panel.relativePosition = _currentModuleClass == Skin.ModuleClass.MainMenu
                    ? new Vector3(viewSize.x - 2.0f - panel.size.x, 34.0f)
                    : new Vector3(viewSize.x - 2.0f - panel.size.x, 34.0f + 64.0f + 15.0f);

                panel.name = "QuartzSkinManager";

                var title = panel.AddUIComponent <UILabel>();
                title.relativePosition = new Vector3(2.0f, 2.0f);
                title.text             = "Quartz Skin Manager";
                title.textColor        = Color.black;
            }

            float y = 32.0f;

            UIUtil.MakeCheckbox(panel, "ShowIconInGame", "Show Quartz icon in-game", new Vector2(4.0f, y), ConfigManager.ShowQuartzIconInGame, value =>
            {
                ConfigManager.ShowQuartzIconInGame = value;

                if (_quartzButton != null && !ConfigManager.ShowQuartzIconInGame && _currentModuleClass == Skin.ModuleClass.InGame)
                {
                    _quartzButton.isVisible = false;
                    if (_quartzPanel != null)
                    {
                        _quartzPanel.isVisible = false;
                    }
                }
                else if (_quartzButton != null)
                {
                    _quartzButton.isVisible = true;
                }
            });

            y += 28.0f;

            UIUtil.MakeCheckbox(panel, "AutoApplySkin", "Apply skin on start-up", new Vector2(4.0f, y), ConfigManager.ApplySkinOnStartup, value =>
            {
                ConfigManager.ApplySkinOnStartup = value;
            });

            y += 28.0f;

            UIUtil.MakeCheckbox(panel, "DrawDebugInfo", "Developer mode (Ctrl+D)", new Vector2(4.0f, y), false, value =>
            {
                if (_debugRenderer != null)
                {
                    _debugRenderer.drawDebugInfo = value;
                }
            });

            y += 28.0f;

            UIUtil.MakeCheckbox(panel, "AutoReload", "Auto-reload active skin on file change", new Vector2(4.0f, y), false, value =>
            {
                _autoReloadSkinOnChange = value;
                ReloadAndApplyActiveSkin();
            });

            y += 28.0f;

            UIUtil.MakeCheckbox(panel, "IgnoreMissing", "Force load (May break stuff)", new Vector2(4.0f, y), ConfigManager.IgnoreMissingComponents, value =>
            {
                ConfigManager.IgnoreMissingComponents = value;
            });

            y += 28.0f;

            _skinsDropdown = panel.AddUIComponent <UIDropDown>();

            _skinsDropdown.AddItem("Vanilla (by Colossal Order)");
            foreach (var skin in _availableSkins)
            {
                _skinsDropdown.AddItem(String.Format("{0} (by {1}){2}", skin.Name, skin.Author, skin.Legacy ? " [LEGACY]" : string.Empty));
            }

            _skinsDropdown.size                 = new Vector2(296.0f, 32.0f);
            _skinsDropdown.relativePosition     = new Vector3(2.0f, y);
            _skinsDropdown.listBackground       = "GenericPanelLight";
            _skinsDropdown.itemHeight           = 32;
            _skinsDropdown.itemHover            = "ListItemHover";
            _skinsDropdown.itemHighlight        = "ListItemHighlight";
            _skinsDropdown.normalBgSprite       = "ButtonMenu";
            _skinsDropdown.listWidth            = 300;
            _skinsDropdown.listHeight           = 500;
            _skinsDropdown.foregroundSpriteMode = UIForegroundSpriteMode.Stretch;
            _skinsDropdown.popupColor           = new Color32(45, 52, 61, 255);
            _skinsDropdown.popupTextColor       = new Color32(170, 170, 170, 255);
            _skinsDropdown.zOrder               = 1;
            _skinsDropdown.textScale            = 0.8f;
            _skinsDropdown.verticalAlignment    = UIVerticalAlignment.Middle;
            _skinsDropdown.horizontalAlignment  = UIHorizontalAlignment.Center;
            _skinsDropdown.textFieldPadding     = new RectOffset(8, 0, 8, 0);
            _skinsDropdown.itemPadding          = new RectOffset(8, 0, 2, 0);

            _skinsDropdown.selectedIndex = 0;

            if (_currentSkin != null)
            {
                int i = 1;
                foreach (var skin in _availableSkins)
                {
                    if (skin.Path == _currentSkin.SapphirePath)
                    {
                        _skinsDropdown.selectedIndex = i;
                    }

                    i++;
                }
            }

            _skinsDropdown.eventSelectedIndexChanged += (component, index) =>
            {
                if (index == 0)
                {
                    if (_currentSkin != null)
                    {
                        _currentSkin.Dispose();
                    }

                    _currentSkin = null;
                    return;
                }

                var skin = _availableSkins[index - 1];
                if (_currentSkin != null && _currentSkin.SapphirePath == skin.Path)
                {
                    return;
                }

                if (_currentSkin != null)
                {
                    _currentSkin.Dispose();
                }

                _currentSkin = Skin.FromXmlFile(Path.Combine(skin.Path, "skin.xml"), _autoReloadSkinOnChange);

                if (_currentSkin.IsValid)
                {
                    _currentSkin.Apply(_currentModuleClass);
                }
                else
                {
                    Debug.LogWarning("Skin is invalid, will not apply.. (check messages above for errors)");
                }

                ConfigManager.SelectedSkinPath = _currentSkin.SapphirePath;
                panel.isVisible = false;
            };

            var skinsDropdownButton = _skinsDropdown.AddUIComponent <UIButton>();

            _skinsDropdown.triggerButton = skinsDropdownButton;

            skinsDropdownButton.text                    = "";
            skinsDropdownButton.size                    = _skinsDropdown.size;
            skinsDropdownButton.relativePosition        = new Vector3(0.0f, 0.0f);
            skinsDropdownButton.textVerticalAlignment   = UIVerticalAlignment.Middle;
            skinsDropdownButton.textHorizontalAlignment = UIHorizontalAlignment.Center;
            skinsDropdownButton.normalFgSprite          = "IconDownArrow";
            skinsDropdownButton.hoveredFgSprite         = "IconDownArrowHovered";
            skinsDropdownButton.pressedFgSprite         = "IconDownArrowPressed";
            skinsDropdownButton.focusedFgSprite         = "IconDownArrowFocused";
            skinsDropdownButton.disabledFgSprite        = "IconDownArrowDisabled";
            skinsDropdownButton.foregroundSpriteMode    = UIForegroundSpriteMode.Fill;
            skinsDropdownButton.horizontalAlignment     = UIHorizontalAlignment.Right;
            skinsDropdownButton.verticalAlignment       = UIVerticalAlignment.Middle;
            skinsDropdownButton.zOrder                  = 0;
            skinsDropdownButton.textScale               = 0.8f;

            y += 40.0f;

            UIUtil.MakeButton(panel, "ReloadSkin", "Reload active skin (Ctrl+Shift+S)", new Vector2(4.0f, y), ReloadAndApplyActiveSkin);

            y += 36.0f;

            UIUtil.MakeButton(panel, "RefreshSkins", "Refresh available skins", new Vector2(4.0f, y), RefreshSkinsList);

            return(panel);
        }
        private void SetupControls()
        {
            //  Highway gantries:
            var gantryContainer = UIUtils.CreateFormElement(this, "top");

            gantryContainer.name             = "gantryContainer";
            gantryContainer.relativePosition = new Vector3(0, 23);
            gantryContainer.autoLayout       = false;
            var gantryLabel = gantryContainer.AddUIComponent <UILabel>();

            gantryLabel.width            = 140f;
            gantryLabel.relativePosition = new Vector3(5, 0);
            gantryLabel.text             = "Highway gantries";
            gantryLabel.textColor        = new Color(187, 187, 187, 255);
            gantryLabel.textScale        = 0.8f;
            gantryLabel.padding          = new RectOffset(0, 0, 0, 5);
            _gantryDropdown                  = UIUtils.CreateStyledDropDown(gantryContainer);
            _gantryDropdown.name             = "gantryDropdown";
            _gantryDropdown.width            = 105f;
            _gantryDropdown.height           = 24f;
            _gantryDropdown.relativePosition = new Vector3(145, -6);
            _gantryDropdown.AddItem("American");
            _gantryDropdown.AddItem("Vanilla");
            _gantryDropdown.AddItem("Hide");
            _gantryDropdown.selectedIndex = AmericanRoadsignsTool.config.rendermode_highwaygantry;

            _gantryDropdown.eventSelectedIndexChanged += (c, i) =>
            {
                if (!isInitialized)
                {
                    return;
                }
                DropdownChanged(c, i);
            };

            //  Alternative highway gantry sign texture:
            var textureContainer = UIUtils.CreateFormElement(this, "center");

            textureContainer.name             = "textureContainer";
            textureContainer.relativePosition = new Vector3(0, 55);
            _textureCheckbox = UIUtils.CreateCheckBox(textureContainer);
            _textureCheckbox.relativePosition   = new Vector3(5, 17);
            _textureCheckbox.label.text         = "Use alternative gantry texture";
            _textureCheckbox.isChecked          = AmericanRoadsignsTool.config.rendermode_highwaygantry_usealt;
            _textureCheckbox.eventCheckChanged += CheckboxChanged;

            //  Highway signs:
            var highwayContainer = UIUtils.CreateFormElement(this, "center");

            highwayContainer.name             = "highwayContainer";
            highwayContainer.relativePosition = new Vector3(0, 90);
            highwayContainer.autoLayout       = false;
            var highwayLabel = highwayContainer.AddUIComponent <UILabel>();

            highwayLabel.width            = 140f;
            highwayLabel.relativePosition = new Vector3(5, 0);
            highwayLabel.text             = "Highway signs";
            highwayLabel.textColor        = new Color(187, 187, 187, 255);
            highwayLabel.textScale        = 0.8f;
            highwayLabel.padding          = new RectOffset(0, 0, 0, 5);
            _highwayDropdown                  = UIUtils.CreateStyledDropDown(highwayContainer);
            _highwayDropdown.name             = "highwayDropdown";
            _highwayDropdown.width            = 105f;
            _highwayDropdown.height           = 24f;
            _highwayDropdown.relativePosition = new Vector3(145, -6);
            _highwayDropdown.AddItem("American");
            _highwayDropdown.AddItem("Vanilla");
            _highwayDropdown.AddItem("Hide");
            _highwayDropdown.selectedIndex              = AmericanRoadsignsTool.config.rendermode_highwaysign;
            _highwayDropdown.eventSelectedIndexChanged += (c, i) =>
            {
                if (!isInitialized)
                {
                    return;
                }
                DropdownChanged(c, i);
            };

            //  No parking signs:
            var noparkingContainer = UIUtils.CreateFormElement(this, "center");

            noparkingContainer.name             = "noparkingContainer";
            noparkingContainer.relativePosition = new Vector3(0, 125);
            noparkingContainer.autoLayout       = false;
            var noparkingLabel = noparkingContainer.AddUIComponent <UILabel>();

            noparkingLabel.width            = 140f;
            noparkingLabel.relativePosition = new Vector3(5, 0);
            noparkingLabel.text             = "No parking signs";
            noparkingLabel.textColor        = new Color(187, 187, 187, 255);
            noparkingLabel.textScale        = 0.8f;
            noparkingLabel.padding          = new RectOffset(0, 0, 0, 5);
            _noparkingDropdown                  = UIUtils.CreateStyledDropDown(noparkingContainer);
            _noparkingDropdown.name             = "noparkingDropdown";
            _noparkingDropdown.width            = 105f;
            _noparkingDropdown.height           = 24f;
            _noparkingDropdown.relativePosition = new Vector3(145, -6);
            _noparkingDropdown.AddItem("American");
            _noparkingDropdown.AddItem("Vanilla");
            _noparkingDropdown.AddItem("Hide");
            _noparkingDropdown.selectedIndex              = AmericanRoadsignsTool.config.rendermode_noparking;
            _noparkingDropdown.eventSelectedIndexChanged += (c, i) =>
            {
                if (!isInitialized)
                {
                    return;
                }
                DropdownChanged(c, i);
            };

            //  No turning signs:
            var turningContainer = UIUtils.CreateFormElement(this, "center");

            turningContainer.name             = "turningContainer";
            turningContainer.relativePosition = new Vector3(0, 160);
            turningContainer.autoLayout       = false;
            var turningLabel = turningContainer.AddUIComponent <UILabel>();

            turningLabel.width            = 140f;
            turningLabel.relativePosition = new Vector3(5, 0);
            turningLabel.text             = "No turning signs";
            turningLabel.textColor        = new Color(187, 187, 187, 255);
            turningLabel.textScale        = 0.8f;
            turningLabel.padding          = new RectOffset(0, 0, 0, 5);
            _turningDropdown                  = UIUtils.CreateStyledDropDown(turningContainer);
            _turningDropdown.name             = "turningDropdown";
            _turningDropdown.width            = 105f;
            _turningDropdown.height           = 24f;
            _turningDropdown.relativePosition = new Vector3(145, -6);
            _turningDropdown.AddItem("American");
            _turningDropdown.AddItem("Vanilla");
            _turningDropdown.AddItem("Hide");
            _turningDropdown.selectedIndex              = AmericanRoadsignsTool.config.rendermode_noturnings;
            _turningDropdown.eventSelectedIndexChanged += (c, i) =>
            {
                if (!isInitialized)
                {
                    return;
                }
                DropdownChanged(c, i);
            };

            //  Speed limit signs:
            var speedlimitContainer = UIUtils.CreateFormElement(this, "center");

            speedlimitContainer.name             = "speedlimitContainer";
            speedlimitContainer.relativePosition = new Vector3(0, 195);
            speedlimitContainer.autoLayout       = false;
            var speedlimitLabel = speedlimitContainer.AddUIComponent <UILabel>();

            speedlimitLabel.width            = 140f;
            speedlimitLabel.relativePosition = new Vector3(5, 0);
            speedlimitLabel.text             = "Speed limit signs";
            speedlimitLabel.textColor        = new Color(187, 187, 187, 255);
            speedlimitLabel.textScale        = 0.8f;
            speedlimitLabel.padding          = new RectOffset(0, 0, 0, 5);
            _speedlimitDropdown                  = UIUtils.CreateStyledDropDown(speedlimitContainer);
            _speedlimitDropdown.name             = "speedlimitDropdown";
            _speedlimitDropdown.width            = 105f;
            _speedlimitDropdown.height           = 24f;
            _speedlimitDropdown.relativePosition = new Vector3(145, -6);
            _speedlimitDropdown.AddItem("American");
            _speedlimitDropdown.AddItem("Vanilla");
            _speedlimitDropdown.AddItem("Hide");
            _speedlimitDropdown.selectedIndex              = AmericanRoadsignsTool.config.rendermode_speedlimits;
            _speedlimitDropdown.eventSelectedIndexChanged += (c, i) =>
            {
                if (!isInitialized)
                {
                    return;
                }
                DropdownChanged(c, i);
            };

            //  Street name signs:
            var streetnameContainer = UIUtils.CreateFormElement(this, "center");

            streetnameContainer.name             = "streetnameContainer";
            streetnameContainer.relativePosition = new Vector3(0, 230);
            streetnameContainer.autoLayout       = false;
            var streetnameLabel = streetnameContainer.AddUIComponent <UILabel>();

            streetnameLabel.width            = 140f;
            streetnameLabel.relativePosition = new Vector3(5, 0);
            streetnameLabel.text             = "Street name signs";
            streetnameLabel.textColor        = new Color(187, 187, 187, 255);
            streetnameLabel.textScale        = 0.8f;
            streetnameLabel.padding          = new RectOffset(0, 0, 0, 5);
            _streetnameDropdown                  = UIUtils.CreateStyledDropDown(streetnameContainer);
            _streetnameDropdown.name             = "_streetnameDropdown";
            _streetnameDropdown.width            = 105f;
            _streetnameDropdown.height           = 24f;
            _streetnameDropdown.relativePosition = new Vector3(145, -6);
            _streetnameDropdown.AddItem("American");
            _streetnameDropdown.AddItem("Vanilla");
            _streetnameDropdown.AddItem("Hide");
            _streetnameDropdown.selectedIndex              = AmericanRoadsignsTool.config.rendermode_streetname;
            _streetnameDropdown.eventSelectedIndexChanged += (c, i) =>
            {
                if (!isInitialized)
                {
                    return;
                }
                DropdownChanged(c, i);
            };
        }
Esempio n. 16
0
        private void SetupControls()
        {
            float offset = 40f;

            // Title Bar
            m_title            = AddUIComponent <UITitleBar>();
            m_title.iconSprite = "IconAssetBuilding";
            m_title.title      = "Mesh Info " + MeshInfo.version;

            // Type DropDown
            UILabel label = AddUIComponent <UILabel>();

            label.textScale        = 0.8f;
            label.padding          = new RectOffset(0, 0, 8, 0);
            label.relativePosition = new Vector3(15f, offset + 5f);
            label.text             = "Type :";

            m_prefabType       = UIUtils.CreateDropDown(this);
            m_prefabType.width = 110;
            m_prefabType.AddItem("Building");
            m_prefabType.AddItem("Prop");
            m_prefabType.AddItem("Tree");
            m_prefabType.AddItem("Vehicle");
            m_prefabType.selectedIndex    = 0;
            m_prefabType.relativePosition = label.relativePosition + new Vector3(60f, 0f);

            m_prefabType.eventSelectedIndexChanged += (c, t) =>
            {
                m_prefabType.enabled = false;
                m_isSorted           = false;
                PopulateList();
                m_prefabType.enabled = true;
            };

            // Sorting DropDown
            label                  = AddUIComponent <UILabel>();
            label.textScale        = 0.8f;
            label.padding          = new RectOffset(0, 0, 8, 0);
            label.relativePosition = m_prefabType.relativePosition + new Vector3(130f, 0f);
            label.text             = "Sort by :";

            m_sorting       = UIUtils.CreateDropDown(this);
            m_sorting.width = 125;
            m_sorting.AddItem("Name");
            m_sorting.AddItem("Triangles");
            m_sorting.AddItem("LOD Triangles");
            m_sorting.AddItem("Weight");
            m_sorting.AddItem("LOD Weight");
            m_sorting.AddItem("Texture");
            m_sorting.AddItem("LOD Texture");
            m_sorting.selectedIndex    = 0;
            m_sorting.relativePosition = label.relativePosition + new Vector3(60f, 0f);

            m_sorting.eventSelectedIndexChanged += (c, t) =>
            {
                m_sorting.enabled = false;
                m_isSorted        = false;
                PopulateList();
                m_sorting.enabled = true;
            };

            // Sorting direction
            m_sortDirection                  = AddUIComponent <UISprite>();
            m_sortDirection.atlas            = UIUtils.GetAtlas("Ingame");
            m_sortDirection.spriteName       = "IconUpArrow";
            m_sortDirection.relativePosition = m_sorting.relativePosition + new Vector3(130f, 0f);

            m_sortDirection.eventClick += (c, t) =>
            {
                m_sortDirection.flip = (m_sortDirection.flip == UISpriteFlip.None) ? UISpriteFlip.FlipVertical : UISpriteFlip.None;
                m_isSorted           = false;
                PopulateList();
            };

            // Search
            m_search                  = UIUtils.CreateTextField(this);
            m_search.width            = 150f;
            m_search.height           = 30f;
            m_search.padding          = new RectOffset(6, 6, 6, 6);
            m_search.relativePosition = new Vector3(width - m_search.width - 15f, offset + 5f);

            label                  = AddUIComponent <UILabel>();
            label.textScale        = 0.8f;
            label.padding          = new RectOffset(0, 0, 8, 0);
            label.relativePosition = m_search.relativePosition - new Vector3(60f, 0f);
            label.text             = "Search :";


            m_search.eventTextChanged += (c, t) => PopulateList();

            // Labels
            label                  = AddUIComponent <UILabel>();
            label.textScale        = 0.9f;
            label.text             = "Name";
            label.relativePosition = new Vector3(15f, offset + 50f);

            label                  = AddUIComponent <UILabel>();
            label.textScale        = 0.9f;
            label.text             = "Texture";
            label.relativePosition = new Vector3(width - 135f, offset + 50f);

            UILabel label2 = AddUIComponent <UILabel>();

            label2.textScale        = 0.9f;
            label2.text             = "Weight";
            label2.relativePosition = label.relativePosition - new Vector3(125f, 0f);

            label                  = AddUIComponent <UILabel>();
            label.textScale        = 0.9f;
            label.text             = "Triangles";
            label.relativePosition = label2.relativePosition - new Vector3(115f, 0f);

            // Item List
            m_itemList                  = UIFastList.Create <UIPrefabItem>(this);
            m_itemList.rowHeight        = 40f;
            m_itemList.backgroundSprite = "UnlockingPanel";
            m_itemList.width            = width - 10;
            m_itemList.height           = height - offset - 75;
            m_itemList.relativePosition = new Vector3(5f, offset + 70f);
        }
Esempio n. 17
0
        public override void Start()
        {
            instance = this;

            inputPanel                  = AddUIComponent <UIPanel>();
            inputPanel.atlas            = SamsamTS.UIUtils.GetAtlas("Ingame");
            inputPanel.backgroundSprite = "GenericTab";
            inputPanel.size             = new Vector2(300, 40);
            inputPanel.relativePosition = new Vector2(0, -inputPanel.height - 40);

            input                  = SamsamTS.UIUtils.CreateTextField(inputPanel);
            input.size             = new Vector2(inputPanel.width - 45, 30);
            input.padding.top      = 7;
            input.relativePosition = new Vector3(5, 5);

            string search = null;

            input.eventTextChanged += (c, p) =>
            {
                search = p;
                Search();
            };

            input.eventTextCancelled += (c, p) =>
            {
                input.text = search;
            };

            searchButton                  = inputPanel.AddUIComponent <UIButton>();
            searchButton.size             = new Vector2(43, 49);
            searchButton.atlas            = FindIt.instance.mainButton.atlas;
            searchButton.playAudioEvents  = true;
            searchButton.normalFgSprite   = "FindIt";
            searchButton.hoveredFgSprite  = "FindItFocused";
            searchButton.pressedFgSprite  = "FindItPressed";
            searchButton.relativePosition = new Vector3(inputPanel.width - 41, -3);

            searchButton.eventClick += (c, p) =>
            {
                input.Focus();
                input.SelectAll();
            };

            filterPanel                  = AddUIComponent <UIPanel>();
            filterPanel.atlas            = SamsamTS.UIUtils.GetAtlas("Ingame");
            filterPanel.backgroundSprite = "GenericTab";
            filterPanel.color            = new Color32(196, 200, 206, 255);
            filterPanel.size             = new Vector2(155, 35);
            filterPanel.SendToBack();
            filterPanel.relativePosition = new Vector3(inputPanel.width, -filterPanel.height - 40);

            // workshop filter checkbox (custom assets saved in local asset folder are also included)
            workshopFilter                    = SamsamTS.UIUtils.CreateCheckBox(filterPanel);
            workshopFilter.isChecked          = true;
            workshopFilter.width              = 80;
            workshopFilter.label.text         = Translations.Translate("FIF_SE_WF");
            workshopFilter.label.textScale    = 0.8f;
            workshopFilter.relativePosition   = new Vector3(10, 10);
            workshopFilter.eventCheckChanged += (c, i) => Search();

            // vanilla filter checkbox
            vanillaFilter                    = SamsamTS.UIUtils.CreateCheckBox(filterPanel);
            vanillaFilter.isChecked          = true;
            vanillaFilter.width              = 80;
            vanillaFilter.label.text         = Translations.Translate("FIF_SE_VF");
            vanillaFilter.label.textScale    = 0.8f;
            vanillaFilter.relativePosition   = new Vector3(workshopFilter.relativePosition.x + workshopFilter.width, 10);
            vanillaFilter.eventCheckChanged += (c, i) => Search();

            // asset type filter
            typeFilter                  = SamsamTS.UIUtils.CreateDropDown(filterPanel);
            typeFilter.size             = new Vector2(100, 25);
            typeFilter.relativePosition = new Vector3(vanillaFilter.relativePosition.x + vanillaFilter.width, 5);

            if (FindIt.isRicoEnabled)
            {
                string[] items =
                {
                    Translations.Translate("FIF_SE_IA"),
                    Translations.Translate("FIF_SE_IN"),
                    Translations.Translate("FIF_SE_IP"),
                    Translations.Translate("FIF_SE_IG"),
                    Translations.Translate("FIF_SE_IR"),
                    Translations.Translate("FIF_SE_IPR"),
                    Translations.Translate("FIF_SE_ID"),
                    Translations.Translate("FIF_SE_IT")
                };
                typeFilter.items = items;
            }
            else
            {
                string[] items =
                {
                    Translations.Translate("FIF_SE_IA"),
                    Translations.Translate("FIF_SE_IN"),
                    Translations.Translate("FIF_SE_IP"),
                    Translations.Translate("FIF_SE_IG"),
                    Translations.Translate("FIF_SE_IPR"),
                    Translations.Translate("FIF_SE_ID"),
                    Translations.Translate("FIF_SE_IT")
                };
                typeFilter.items = items;
            }
            typeFilter.selectedIndex = 0;

            typeFilter.eventSelectedIndexChanged += (c, p) =>
            {
                UpdateFilterPanels();
                Search();
            };

            buildingFilters                  = filterPanel.AddUIComponent <UIPanel>();
            buildingFilters.size             = new Vector2(90, 35);
            buildingFilters.relativePosition = new Vector3(typeFilter.relativePosition.x + typeFilter.width, 0);

            // Level
            UILabel levelLabel = buildingFilters.AddUIComponent <UILabel>();

            levelLabel.textScale        = 0.8f;
            levelLabel.padding          = new RectOffset(0, 0, 8, 0);
            levelLabel.text             = Translations.Translate("FIF_SE_LV");
            levelLabel.relativePosition = new Vector3(10, 5);

            levelFilter      = SamsamTS.UIUtils.CreateDropDown(buildingFilters);
            levelFilter.size = new Vector2(55, 25);
            levelFilter.AddItem(Translations.Translate("FIF_SE_IA"));
            levelFilter.AddItem("1");
            levelFilter.AddItem("2");
            levelFilter.AddItem("3");
            levelFilter.AddItem("4");
            levelFilter.AddItem("5");
            levelFilter.selectedIndex    = 0;
            levelFilter.relativePosition = new Vector3(levelLabel.relativePosition.x + levelLabel.width + 5, 5);

            levelFilter.eventSelectedIndexChanged += (c, i) => Search();

            // Size
            UILabel sizeLabel = buildingFilters.AddUIComponent <UILabel>();

            sizeLabel.textScale        = 0.8f;
            sizeLabel.padding          = new RectOffset(0, 0, 8, 0);
            sizeLabel.text             = Translations.Translate("FIF_SE_SZ");
            sizeLabel.relativePosition = new Vector3(levelFilter.relativePosition.x + levelFilter.width + 10, 5);

            sizeFilterX      = SamsamTS.UIUtils.CreateDropDown(buildingFilters);
            sizeFilterX.size = new Vector2(55, 25);
            sizeFilterX.AddItem(Translations.Translate("FIF_SE_IA"));
            sizeFilterX.AddItem("1");
            sizeFilterX.AddItem("2");
            sizeFilterX.AddItem("3");
            sizeFilterX.AddItem("4");
            sizeFilterX.selectedIndex    = 0;
            sizeFilterX.relativePosition = new Vector3(sizeLabel.relativePosition.x + sizeLabel.width + 5, 5);


            UILabel XLabel = buildingFilters.AddUIComponent <UILabel>();

            XLabel.textScale = 0.8f;
            XLabel.padding   = new RectOffset(0, 0, 8, 0);
            //XLabel.text = "X";
            XLabel.text             = " ";
            XLabel.isVisible        = false;
            XLabel.relativePosition = new Vector3(sizeFilterX.relativePosition.x + sizeFilterX.width - 5, 5);

            sizeFilterY      = SamsamTS.UIUtils.CreateDropDown(buildingFilters);
            sizeFilterY.size = new Vector2(55, 25);
            sizeFilterY.AddItem(Translations.Translate("FIF_SE_IA"));
            sizeFilterY.AddItem("1");
            sizeFilterY.AddItem("2");
            sizeFilterY.AddItem("3");
            sizeFilterY.AddItem("4");
            sizeFilterY.selectedIndex = 0;
            //sizeFilterY.isVisible = false;
            sizeFilterY.relativePosition = new Vector3(XLabel.relativePosition.x + XLabel.width + 5, 5);

            sizeFilterX.eventSelectedIndexChanged += (c, i) => Search();
            sizeFilterY.eventSelectedIndexChanged += (c, i) => Search();


            UIPanel panel = AddUIComponent <UIPanel>();

            panel.atlas            = SamsamTS.UIUtils.GetAtlas("Ingame");
            panel.backgroundSprite = "GenericTabHovered";
            panel.size             = new Vector2(parent.width, 45);
            panel.relativePosition = new Vector3(0, -panel.height + 5);

            filterPloppable                  = panel.AddUIComponent <UIFilterPloppable>();
            filterPloppable.isVisible        = false;
            filterPloppable.relativePosition = new Vector3(0, 0);

            filterPloppable.eventFilteringChanged += (c, p) => Search();

            filterGrowable                  = panel.AddUIComponent <UIFilterGrowable>();
            filterGrowable.isVisible        = false;
            filterGrowable.relativePosition = new Vector3(0, 0);

            filterGrowable.eventFilteringChanged += (c, p) => Search();

            UpdateFilterPanels();

            size = Vector2.zero;
        }
Esempio n. 18
0
        public override void Start()
        {
            instance = this;

            inputPanel                  = AddUIComponent <UIPanel>();
            inputPanel.atlas            = SamsamTS.UIUtils.GetAtlas("Ingame");
            inputPanel.backgroundSprite = "GenericTab";
            inputPanel.size             = new Vector2(300, 40);
            inputPanel.relativePosition = new Vector2(5, -inputPanel.height - 40);

            input                  = SamsamTS.UIUtils.CreateTextField(inputPanel);
            input.size             = new Vector2(inputPanel.width - 45, 30);
            input.padding.top      = 7;
            input.relativePosition = new Vector3(5, 5);

            string search = null;

            input.eventTextChanged += (c, p) =>
            {
                search = p;
                Search();
            };

            input.eventTextCancelled += (c, p) =>
            {
                input.text = search;
            };

            searchButton                  = inputPanel.AddUIComponent <UIButton>();
            searchButton.size             = new Vector2(43, 49);
            searchButton.atlas            = FindIt.instance.mainButton.atlas;
            searchButton.playAudioEvents  = true;
            searchButton.normalFgSprite   = "FindIt";
            searchButton.hoveredFgSprite  = "FindItFocused";
            searchButton.pressedFgSprite  = "FindItPressed";
            searchButton.relativePosition = new Vector3(inputPanel.width - 41, -3);

            searchButton.eventClick += (c, p) =>
            {
                input.Focus();
                input.SelectAll();
            };

            filterPanel                  = AddUIComponent <UIPanel>();
            filterPanel.atlas            = SamsamTS.UIUtils.GetAtlas("Ingame");
            filterPanel.backgroundSprite = "GenericTab";
            filterPanel.color            = new Color32(196, 200, 206, 255);
            filterPanel.size             = new Vector2(105, 35);
            filterPanel.SendToBack();
            filterPanel.relativePosition = new Vector3(inputPanel.width, -filterPanel.height - 40);

            typeFilter                  = SamsamTS.UIUtils.CreateDropDown(filterPanel);
            typeFilter.size             = new Vector2(130, 25);
            typeFilter.relativePosition = new Vector3(10, 5);

            if (FindIt.isRicoEnabled)
            {
                string[] items =
                {
                    "All",
                    "Net Structures",
                    "Ploppable",
                    "Growable",
                    "Rico",
                    "Prop",
                    "Decal",
                    "Tree"
                };
                typeFilter.items = items;
            }
            else
            {
                string[] items =
                {
                    "All",
                    "Net Structures",
                    "Ploppable",
                    "Growable",
                    "Prop",
                    "Decal",
                    "Tree"
                };
                typeFilter.items = items;
            }
            typeFilter.selectedIndex = 0;

            typeFilter.eventSelectedIndexChanged += (c, p) =>
            {
                UpdateFilterPanels();
                Search();
            };

            buildingFilters                  = filterPanel.AddUIComponent <UIPanel>();
            buildingFilters.size             = new Vector2(90, 35);
            buildingFilters.relativePosition = new Vector3(typeFilter.relativePosition.x + typeFilter.width, 0);

            // Level
            UILabel levelLabel = buildingFilters.AddUIComponent <UILabel>();

            levelLabel.textScale        = 0.8f;
            levelLabel.padding          = new RectOffset(0, 0, 8, 0);
            levelLabel.text             = "Level: ";
            levelLabel.relativePosition = new Vector3(10, 5);

            levelFilter      = SamsamTS.UIUtils.CreateDropDown(buildingFilters);
            levelFilter.size = new Vector2(55, 25);
            levelFilter.AddItem("All");
            levelFilter.AddItem("1");
            levelFilter.AddItem("2");
            levelFilter.AddItem("3");
            levelFilter.AddItem("4");
            levelFilter.AddItem("5");
            levelFilter.selectedIndex    = 0;
            levelFilter.relativePosition = new Vector3(levelLabel.relativePosition.x + levelLabel.width + 5, 5);

            levelFilter.eventSelectedIndexChanged += (c, i) => Search();

            // Size
            UILabel sizeLabel = buildingFilters.AddUIComponent <UILabel>();

            sizeLabel.textScale        = 0.8f;
            sizeLabel.padding          = new RectOffset(0, 0, 8, 0);
            sizeLabel.text             = "Size: ";
            sizeLabel.relativePosition = new Vector3(levelFilter.relativePosition.x + levelFilter.width + 10, 5);

            sizeFilterX      = SamsamTS.UIUtils.CreateDropDown(buildingFilters);
            sizeFilterX.size = new Vector2(55, 25);
            sizeFilterX.AddItem("All");
            sizeFilterX.AddItem("1");
            sizeFilterX.AddItem("2");
            sizeFilterX.AddItem("3");
            sizeFilterX.AddItem("4");
            sizeFilterX.selectedIndex    = 0;
            sizeFilterX.relativePosition = new Vector3(sizeLabel.relativePosition.x + sizeLabel.width + 5, 5);

            UILabel XLabel = buildingFilters.AddUIComponent <UILabel>();

            XLabel.textScale        = 0.8f;
            XLabel.padding          = new RectOffset(0, 0, 8, 0);
            XLabel.text             = "X";
            XLabel.isVisible        = false;
            XLabel.relativePosition = new Vector3(sizeFilterX.relativePosition.x + sizeFilterX.width - 5, 5);

            sizeFilterY      = SamsamTS.UIUtils.CreateDropDown(buildingFilters);
            sizeFilterY.size = new Vector2(45, 25);
            sizeFilterY.AddItem("1");
            sizeFilterY.AddItem("2");
            sizeFilterY.AddItem("3");
            sizeFilterY.AddItem("4");
            sizeFilterY.selectedIndex    = 0;
            sizeFilterY.isVisible        = false;
            sizeFilterY.relativePosition = new Vector3(XLabel.relativePosition.x + XLabel.width + 5, 5);

            sizeFilterX.eventSelectedIndexChanged += (c, i) =>
            {
                if (i == 0)
                {
                    sizeFilterX.width     = 55;
                    XLabel.isVisible      = false;
                    sizeFilterY.isVisible = false;
                }
                else
                {
                    sizeFilterX.width     = 45;
                    XLabel.isVisible      = true;
                    sizeFilterY.isVisible = true;
                }

                UpdateBuildingFilters();

                Search();
            };

            sizeFilterY.eventSelectedIndexChanged += (c, i) => Search();

            UIPanel panel = AddUIComponent <UIPanel>();

            panel.atlas            = SamsamTS.UIUtils.GetAtlas("Ingame");
            panel.backgroundSprite = "GenericTabHovered";
            panel.size             = new Vector2(parent.width, 45);
            panel.relativePosition = new Vector3(0, -panel.height + 5);

            filterPloppable                  = panel.AddUIComponent <UIFilterPloppable>();
            filterPloppable.isVisible        = false;
            filterPloppable.relativePosition = new Vector3(0, 0);

            filterPloppable.eventFilteringChanged += (c, p) => Search();

            filterGrowable                  = panel.AddUIComponent <UIFilterGrowable>();
            filterGrowable.isVisible        = false;
            filterGrowable.relativePosition = new Vector3(0, 0);

            filterGrowable.eventFilteringChanged += (c, p) => Search();

            UpdateFilterPanels();

            size = Vector2.zero;
        }
Esempio n. 19
0
        private UIDropDown CreateCargoDropDown(UIComponent parent)
        {
            UIDropDown dropCargo = parent.AddUIComponent <UIDropDown>();

            dropCargo.anchor               = UIAnchorStyle.Top | UIAnchorStyle.Left;
            dropCargo.height               = 30f;
            dropCargo.width                = 250f;
            dropCargo.relativePosition     = new Vector3(25f, 59f);
            dropCargo.size                 = new Vector2(250f, 30f);
            dropCargo.listBackground       = "GenericPanelLight";
            dropCargo.itemHeight           = 30;
            dropCargo.itemHover            = "ListItemHover";
            dropCargo.itemHighlight        = "ListItemHighlight";
            dropCargo.normalBgSprite       = "ButtonMenu";
            dropCargo.disabledBgSprite     = "ButtonMenuDisabled";
            dropCargo.hoveredBgSprite      = "ButtonMenuHovered";
            dropCargo.focusedBgSprite      = "ButtonMenu";
            dropCargo.listWidth            = 250;
            dropCargo.listHeight           = 720;
            dropCargo.foregroundSpriteMode = UIForegroundSpriteMode.Stretch;
            dropCargo.popupColor           = new Color32(45, 52, 61, 255);
            dropCargo.popupTextColor       = new Color32(170, 170, 170, 255);
            dropCargo.zOrder               = 1;
            dropCargo.textScale            = 0.8f;
            dropCargo.verticalAlignment    = UIVerticalAlignment.Middle;
            dropCargo.horizontalAlignment  = UIHorizontalAlignment.Left;
            dropCargo.selectedIndex        = 0;
            dropCargo.textFieldPadding     = new RectOffset(8, 0, 8, 0);
            dropCargo.itemPadding          = new RectOffset(14, 0, 8, 0);

            UIButton button = dropCargo.AddUIComponent <UIButton>();

            dropCargo.triggerButton        = button;
            button.text                    = "";
            button.size                    = dropCargo.size;
            button.relativePosition        = new Vector3(0f, 0f);
            button.textVerticalAlignment   = UIVerticalAlignment.Middle;
            button.textHorizontalAlignment = UIHorizontalAlignment.Left;
            button.normalFgSprite          = "IconDownArrow";
            button.hoveredFgSprite         = "IconDownArrowHovered";
            button.pressedFgSprite         = "IconDownArrowPressed";
            button.focusedFgSprite         = "IconDownArrowFocused";
            button.disabledFgSprite        = "IconDownArrowDisabled";
            button.foregroundSpriteMode    = UIForegroundSpriteMode.Fill;
            button.horizontalAlignment     = UIHorizontalAlignment.Right;
            button.verticalAlignment       = UIVerticalAlignment.Middle;
            button.zOrder                  = 0;
            button.textScale               = 0.8f;
            dropCargo.eventSizeChanged    += new PropertyChangedEventHandler <Vector2>((c, t) =>
            {
                button.size = t; dropCargo.listWidth = (int)t.x;
            });

            Dictionary <string, ushort> cargoTypes = new Dictionary <string, ushort>
            {
                { "none", 255 },
                { "Oil", 13 },
                { "Ore", 14 },
                { "Logs", 15 },
                { "Crops", 16 },     // Looks like it was called Grain before Industries DLC, but never displayed to user?
                { "Goods", 17 },
                { "Coal", 19 },
                { "Petrol", 31 },
                { "Food", 32 },
                { "Lumber", 37 },
                { "AnimalProducts", 97 },
                { "Flours", 98 },
                { "Paper", 99 },
                { "PlanedTimber", 100 },
                { "Petroleum", 101 },
                { "Plastics", 102 },
                { "Glass", 103 },
                { "Metals", 104 },
                { "LuxuryProducts", 105 },
                { "Fish", 108 },
                { "ZI-Oil", (13 << 8) + 31 },      // 3359
                { "ZI-Ore", (14 << 8) + 19 },      // 3603
                { "ZI-Forestry", (15 << 8) + 37 }, // 3877
                { "ZI-Farming", (16 << 8) + 32 }   // 4128
            };

            foreach (KeyValuePair <string, ushort> kvp in cargoTypes)
            {
                dropCargo.AddItem(kvp.Key);
            }
            dropCargo.eventSelectedIndexChanged += (c, e) =>
            {
                cargoTypes.TryGetValue(dropCargo.selectedValue, out ushort myResource);
                if (myResource > 255)                                         // if top byte present
                {
                    m_selectedResource2 = (byte)((myResource & 0xFF00) >> 8); // Extract top byte
                }
                else
                {
                    m_selectedResource2 = 0;
                }
                m_selectedResource = (byte)(myResource & 0xFF);  // Extract low byte
                m_selectedBuilding = 0;
                m_forceRefresh     = true;
            };
            dropCargo.selectedIndex = 3;
            dropCargo.selectedValue = "Grain";
            return(dropCargo);
        }
Esempio n. 20
0
        public override void Start()
        {
            name             = "FindIt_UIQuickMenuPopUp";
            atlas            = SamsamTS.UIUtils.GetAtlas("Ingame");
            backgroundSprite = "GenericPanelWhite";
            size             = new Vector2(480, 250);

            UILabel title = AddUIComponent <UILabel>();

            title.text             = Translations.Translate("FIF_QM_TIT");
            title.textColor        = new Color32(0, 0, 0, 255);
            title.relativePosition = new Vector3(spacing * 3, spacing * 3);

            UIButton close = AddUIComponent <UIButton>();

            close.size             = new Vector2(30f, 30f);
            close.text             = "X";
            close.textScale        = 0.9f;
            close.textColor        = new Color32(0, 0, 0, 255);
            close.focusedTextColor = new Color32(0, 0, 0, 255);
            close.hoveredTextColor = new Color32(109, 109, 109, 255);
            close.pressedTextColor = new Color32(128, 128, 128, 102);
            close.textPadding      = new RectOffset(8, 8, 8, 8);
            close.canFocus         = false;
            close.playAudioEvents  = true;
            close.relativePosition = new Vector3(width - close.width, 0);
            close.eventClicked    += (c, p) => Close();

            // Sort custom tag list alphabetically. Default = sort by number of assets in each tag
            UICheckBox customTagListSort = SamsamTS.UIUtils.CreateCheckBox(this);

            customTagListSort.isChecked          = Settings.customTagListSort;
            customTagListSort.label.text         = Translations.Translate("FIF_SET_CTLS");
            customTagListSort.label.textScale    = 0.8f;
            customTagListSort.width              = size.x;
            customTagListSort.label.textColor    = new Color32(0, 0, 0, 255);
            customTagListSort.relativePosition   = new Vector3(title.relativePosition.x, title.relativePosition.y + title.height + 20);
            customTagListSort.eventCheckChanged += (c, i) =>
            {
                Settings.customTagListSort = customTagListSort.isChecked;
                XMLUtils.SaveSettings();
                if (UIFilterTag.instance != null)
                {
                    UIFilterTag.instance.UpdateCustomTagList();
                    UISearchBox.instance.Search();
                }
            };

            // Sort asset creator list alphabetically. Default = sort by number of assets in each tag
            UICheckBox assetCreatorListSort = SamsamTS.UIUtils.CreateCheckBox(this);

            assetCreatorListSort.isChecked          = Settings.assetCreatorListSort;
            assetCreatorListSort.label.text         = Translations.Translate("FIF_SET_ACLS");
            assetCreatorListSort.label.textScale    = 0.8f;
            assetCreatorListSort.width              = size.x;
            assetCreatorListSort.label.textColor    = new Color32(0, 0, 0, 255);
            assetCreatorListSort.relativePosition   = new Vector3(title.relativePosition.x, customTagListSort.relativePosition.y + customTagListSort.height + 10);
            assetCreatorListSort.eventCheckChanged += (c, i) =>
            {
                Settings.assetCreatorListSort = assetCreatorListSort.isChecked;
                XMLUtils.SaveSettings();
                if (UIFilterExtra.instance != null)
                {
                    UIFilterExtra.instance.UpdateAssetCreatorList();
                    UISearchBox.instance.Search();
                }
            };

            // Show prop markers in 'game' mode
            UICheckBox showPropMarker = SamsamTS.UIUtils.CreateCheckBox(this);

            showPropMarker.isChecked          = Settings.showPropMarker;
            showPropMarker.label.text         = Translations.Translate("FIF_SET_PM");
            showPropMarker.label.textScale    = 0.8f;
            showPropMarker.width              = size.x;
            showPropMarker.label.textColor    = new Color32(0, 0, 0, 255);
            showPropMarker.tooltip            = Translations.Translate("FIF_SET_PMTP");
            showPropMarker.relativePosition   = new Vector3(title.relativePosition.x, assetCreatorListSort.relativePosition.y + assetCreatorListSort.height + 10);
            showPropMarker.eventCheckChanged += (c, i) =>
            {
                Settings.showPropMarker = showPropMarker.isChecked;
                XMLUtils.SaveSettings();
                UIFilterProp.instance.UpdateMarkerToggleVisibility();
            };

            // Use light background theme
            UICheckBox useLightBackground = SamsamTS.UIUtils.CreateCheckBox(this);

            useLightBackground.isChecked          = Settings.useLightBackground;
            useLightBackground.label.text         = Translations.Translate("FIF_SET_BACK");
            useLightBackground.label.textScale    = 0.8f;
            useLightBackground.width              = size.x;
            useLightBackground.label.textColor    = new Color32(0, 0, 0, 255);
            useLightBackground.tooltip            = Translations.Translate("FIF_SET_BACKTP");
            useLightBackground.relativePosition   = new Vector3(title.relativePosition.x, showPropMarker.relativePosition.y + showPropMarker.height + 10);
            useLightBackground.eventCheckChanged += (c, i) =>
            {
                Settings.useLightBackground = useLightBackground.isChecked;
                XMLUtils.SaveSettings();
                FindIt.instance.UpdateDefaultPanelBackground();
            };

            // Show asset type panel
            UICheckBox showAssetTypePanel = SamsamTS.UIUtils.CreateCheckBox(this);

            showAssetTypePanel.isChecked          = Settings.showAssetTypePanel;
            showAssetTypePanel.label.text         = Translations.Translate("FIF_SET_ATP");
            showAssetTypePanel.label.textScale    = 0.8f;
            showAssetTypePanel.width              = size.x;
            showAssetTypePanel.label.textColor    = new Color32(0, 0, 0, 255);
            showAssetTypePanel.tooltip            = Translations.Translate("FIF_ATP_TP");
            showAssetTypePanel.relativePosition   = new Vector3(title.relativePosition.x, useLightBackground.relativePosition.y + useLightBackground.height + 10);
            showAssetTypePanel.eventCheckChanged += (c, i) =>
            {
                Settings.showAssetTypePanel = showAssetTypePanel.isChecked;
                XMLUtils.SaveSettings();
                if (Settings.showAssetTypePanel)
                {
                    UISearchBox.instance.assetTypePanel.isVisible = true;                              //UISearchBox.instance.CreateAssetTypePanel();
                }
                else
                {
                    UISearchBox.instance.assetTypePanel.isVisible = false;  //UISearchBox.instance.DestroyAssetTypePanel();
                }
            };

            // Show the number of existing instances of each asset
            UICheckBox showInstancesCounter = SamsamTS.UIUtils.CreateCheckBox(this);

            showInstancesCounter.isChecked          = Settings.showInstancesCounter;
            showInstancesCounter.label.text         = Translations.Translate("FIF_SET_IC");
            showInstancesCounter.label.textScale    = 0.8f;
            showInstancesCounter.width              = size.x;
            showInstancesCounter.tooltip            = Translations.Translate("FIF_SET_ICTP");
            showInstancesCounter.label.textColor    = new Color32(0, 0, 0, 255);
            showInstancesCounter.relativePosition   = new Vector3(title.relativePosition.x, showAssetTypePanel.relativePosition.y + showAssetTypePanel.height + 10);
            showInstancesCounter.eventCheckChanged += (c, i) =>
            {
                if (showInstancesCounter.isChecked)
                {
                    height = instanceCounterSort.relativePosition.y + instanceCounterSort.height + 30;
                }
                else
                {
                    height = showInstancesCounter.relativePosition.y + showInstancesCounter.height + 30;
                }

                Settings.showInstancesCounter = showInstancesCounter.isChecked;
                instanceCounterSort.isVisible = showInstancesCounter.isChecked;
                if (FindIt.isPOEnabled)
                {
                    includePOinstances.isVisible = showInstancesCounter.isChecked;
                }
                XMLUtils.SaveSettings();
                if (Settings.showInstancesCounter && AssetTagList.instance?.prefabInstanceCountDictionary != null)
                {
                    AssetTagList.instance.UpdatePrefabInstanceCount(UISearchBox.DropDownOptions.All);
                }
                UISearchBox.instance.Search();
            };

            // include PO instances
            includePOinstances                    = SamsamTS.UIUtils.CreateCheckBox(this);
            includePOinstances.isChecked          = Settings.includePOinstances;
            includePOinstances.label.text         = Translations.Translate("FIF_SET_PO");
            includePOinstances.label.textScale    = 0.8f;
            includePOinstances.width              = size.x;
            includePOinstances.tooltip            = Translations.Translate("FIF_SET_ICTP");
            includePOinstances.isVisible          = Settings.showInstancesCounter;
            includePOinstances.label.textColor    = new Color32(0, 0, 0, 255);
            includePOinstances.relativePosition   = new Vector3(showInstancesCounter.relativePosition.x + 30, showInstancesCounter.relativePosition.y + showInstancesCounter.height + 10);
            includePOinstances.eventCheckChanged += (c, i) =>
            {
                Settings.includePOinstances = includePOinstances.isChecked;
                XMLUtils.SaveSettings();
                if (Settings.showInstancesCounter)
                {
                    UISearchBox.instance.Search();
                }
            };

            instanceCounterSort = SamsamTS.UIUtils.CreateDropDown(this);
            instanceCounterSort.normalBgSprite = "TextFieldPanelHovered";
            instanceCounterSort.size           = new Vector2(300, 30);
            instanceCounterSort.listHeight     = 300;
            instanceCounterSort.itemHeight     = 30;
            instanceCounterSort.AddItem(Translations.Translate("FIF_SET_ICO"));
            instanceCounterSort.AddItem(Translations.Translate("FIF_SET_ICUS"));
            instanceCounterSort.AddItem(Translations.Translate("FIF_SET_ICUN"));
            instanceCounterSort.selectedIndex              = Settings.instanceCounterSort;
            instanceCounterSort.isVisible                  = Settings.showInstancesCounter;
            instanceCounterSort.relativePosition           = new Vector3(showInstancesCounter.relativePosition.x + 30, includePOinstances.relativePosition.y + includePOinstances.height + 10);
            instanceCounterSort.eventSelectedIndexChanged += (c, p) =>
            {
                Settings.instanceCounterSort = instanceCounterSort.selectedIndex;
                XMLUtils.SaveSettings();
                if (Settings.showInstancesCounter)
                {
                    UISearchBox.instance.Search();
                }
            };

            if (!FindIt.isPOEnabled)
            {
                includePOinstances.isVisible         = false;
                instanceCounterSort.relativePosition = new Vector3(showInstancesCounter.relativePosition.x + 30, showInstancesCounter.relativePosition.y + showInstancesCounter.height + 10);
            }

            if (showInstancesCounter.isChecked)
            {
                height = instanceCounterSort.relativePosition.y + instanceCounterSort.height + 30;
            }
            else
            {
                height = showInstancesCounter.relativePosition.y + showInstancesCounter.height + 30;
            }

            customTagListSort.Focus();
        }
Esempio n. 21
0
        private void CreateComponents()
        {
            int          headerHeight = 40;
            UIHelperBase uiHelper     = new UIHelper(this);

            // Label
            UILabel label = AddUIComponent <UILabel>();

            label.text             = "Display Options";
            label.relativePosition = new Vector3(WIDTH / 2 - label.width / 2, 10);

            // Drag handle
            UIDragHandle handle = AddUIComponent <UIDragHandle>();

            handle.target            = this;
            handle.constrainToScreen = true;
            handle.width             = WIDTH;
            handle.height            = headerHeight;
            handle.relativePosition  = Vector3.zero;

            // 'moving' direction
            label                  = AddUIComponent <UILabel>();
            label.text             = "Direction:";
            label.relativePosition = new Vector3(10, headerHeight + 15);

            m_directionDropdown                  = UIUtils.CreateDropDown(this);
            m_directionDropdown.width            = WIDTH - 30 - label.width;
            m_directionDropdown.relativePosition = new Vector3(label.relativePosition.x + label.width + 10, headerHeight + 10);
            m_directionDropdown.AddItem("Forward");
            m_directionDropdown.AddItem("Reverse");
            m_directionDropdown.selectedIndex              = 0;
            m_directionDropdown.eventSelectedIndexChanged += (c, i) => {
                DisplayOptions.activeOptions.Reversed = (i == 1);
            };
            m_directionDropdown.tooltip = "Simulates vehicle movement direction so you can preview headlights.";

            // Door display
            m_doorCheckbox = (UICheckBox)uiHelper.AddCheckbox("Show doors", DisplayOptions.activeOptions.ShowDoors, (b) => {
                DisplayOptions.activeOptions.ShowDoors = b;
            });
            m_doorCheckbox.relativePosition = new Vector3(10, headerHeight + 50);
            m_doorCheckbox.width            = WIDTH - 20;
            m_doorCheckbox.tooltip          = "Show vehicle door locations and editor.";

            // Emergency lights 1
            m_emergencyCheckbox1 = (UICheckBox)uiHelper.AddCheckbox("Show emergency 1", DisplayOptions.activeOptions.ShowEmergency, (b) => {
                DisplayOptions.activeOptions.ShowEmergency = b;
            });
            m_emergencyCheckbox1.relativePosition = new Vector3(10, headerHeight + 80);
            m_emergencyCheckbox1.width            = WIDTH - 20;
            m_emergencyCheckbox1.tooltip          = "Show vehicle emergency effects.";

            // Emergency lights 2
            m_emergencyCheckbox2 = (UICheckBox)uiHelper.AddCheckbox("Show emergency 2", DisplayOptions.activeOptions.ShowEmergency2, (b) => {
                DisplayOptions.activeOptions.ShowEmergency2 = b;
            });
            m_emergencyCheckbox2.relativePosition = new Vector3(10, headerHeight + 110);
            m_emergencyCheckbox2.width            = WIDTH - 20;
            m_emergencyCheckbox2.tooltip          = "Show vehicle emergency effects.";

            // Takeoff
            m_takeOffCheckbox = (UICheckBox)uiHelper.AddCheckbox("Show takeoff", DisplayOptions.activeOptions.ShowTakeOff, (b) => {
                DisplayOptions.activeOptions.ShowTakeOff = b;
            });
            m_takeOffCheckbox.relativePosition = new Vector3(10, headerHeight + 140);
            m_takeOffCheckbox.width            = WIDTH - 20;
            m_takeOffCheckbox.tooltip          = "Show takeoff specific effects.";

            // Landing
            m_landingCheckbox = (UICheckBox)uiHelper.AddCheckbox("Show landing", DisplayOptions.activeOptions.ShowLanding, (b) => {
                DisplayOptions.activeOptions.ShowLanding = b;
            });
            m_landingCheckbox.relativePosition = new Vector3(10, headerHeight + 170);
            m_landingCheckbox.width            = WIDTH - 20;
            m_landingCheckbox.tooltip          = "Show landing specific effects.";

            // Settings
            m_showSettingsCheckbox = (UICheckBox)uiHelper.AddCheckbox("Show settings", DisplayOptions.activeOptions.ShowSettingsPanel, (b) => {
                DisplayOptions.activeOptions.ShowSettingsPanel = b;
            });
            m_showSettingsCheckbox.relativePosition = new Vector3(10, headerHeight + 200);
            m_showSettingsCheckbox.width            = WIDTH - 20;
            m_showSettingsCheckbox.tooltip          = "Show settings panel.";

            // Variation flag box
            // TODO: Use a proper dropdown, although this should work for now

            /*m_variationFlags = UIIntField.CreateField("Variation:", 80, this, false);
             * m_variationFlags.textField.text = "0";
             * m_variationFlags.panel.relativePosition = new Vector3(10, headerHeight + 230);
             * m_variationFlags.textField.eventTextChanged += (c, text) =>
             * {
             *  int tmp = DisplayOptions.activeOptions.VariationFlags;
             *  m_variationFlags.IntFieldHandler(ref tmp);
             *  DisplayOptions.activeOptions.VariationFlags = tmp;
             * };*/
        }
Esempio n. 22
0
        private void CreateComponents()
        {
            int headerHeight = 40;

            // Label
            UILabel label = AddUIComponent <UILabel>();

            label.text             = "Save Asset";
            label.relativePosition = new Vector3(WIDTH / 2 - label.width / 2, 10);

            // Drag handle
            UIDragHandle handle = AddUIComponent <UIDragHandle>();

            handle.target            = this;
            handle.constrainToScreen = true;
            handle.width             = WIDTH;
            handle.height            = headerHeight;
            handle.relativePosition  = Vector3.zero;

            // Fields
            label                           = AddUIComponent <UILabel>();
            label.text                      = "Package name:";
            label.relativePosition          = new Vector3(10, headerHeight + 15);
            m_packageField                  = UIUtils.CreateTextField(this);
            m_packageField.width            = 400;
            m_packageField.relativePosition = new Vector3(20 + label.width, headerHeight + 10);

            // Fields
            label                        = AddUIComponent <UILabel>();
            label.text                   = "Asset name:";
            label.relativePosition       = new Vector3(10, headerHeight + 45);
            m_nameField                  = UIUtils.CreateTextField(this);
            m_nameField.width            = 400;
            m_nameField.relativePosition = new Vector3(m_packageField.relativePosition.x, headerHeight + 40);


            // Naming dropdown menu
            label                  = AddUIComponent <UILabel>();
            label.text             = "Trailer naming:";
            label.relativePosition = new Vector3(m_nameField.relativePosition.x + m_nameField.width + 20, headerHeight + 10);
            m_namingDropdown       = UIUtils.CreateDropDown(this);
            m_namingDropdown.text  = "Trailer naming convention";
            m_namingDropdown.AddItem("Package name (TrailerPackageName0)");     //0
            m_namingDropdown.AddItem("Default (Trailer0)");                     //1
            m_namingDropdown.selectedIndex    = 0;
            m_namingDropdown.width            = 300;
            m_namingDropdown.relativePosition = new Vector3(m_nameField.relativePosition.x + m_nameField.width + 20, headerHeight + 35);


            // Save button
            m_saveButton               = UIUtils.CreateButton(this);
            m_saveButton.text          = "Save";
            m_saveButton.textScale     = 1.3f;
            m_saveButton.width         = 153f;
            m_saveButton.height        = 47f;
            m_saveButton.eventClicked += (c, b) =>
            {
                string assetName   = m_nameField.text.Trim();
                string packageName = m_packageField.text.Trim();
                string file        = GetSavePathName(packageName);
                if (!File.Exists(file))
                {
                    SaveAsset(assetName, packageName);
                }
                else
                {
                    ConfirmPanel.ShowModal("CONFIRM_SAVEOVERRIDE", delegate(UIComponent comp, int ret)
                    {
                        if (ret == 1)
                        {
                            SaveAsset(assetName, packageName);
                        }
                    });
                }
            };
            m_saveButton.relativePosition = new Vector3(WIDTH / 2 - m_saveButton.width - 50, HEIGHT - m_saveButton.height - 10);

            // Cancel button
            m_cancelButton               = UIUtils.CreateButton(this);
            m_cancelButton.text          = "Cancel";
            m_cancelButton.textScale     = 1.3f;
            m_cancelButton.width         = 153f;
            m_cancelButton.height        = 47f;
            m_cancelButton.eventClicked += (c, b) =>
            {
                m_info    = null;
                isVisible = false;
            };
            m_cancelButton.relativePosition = new Vector3(WIDTH / 2 + 50, HEIGHT - m_cancelButton.height - 10);

            // Snapshot container
            GameObject go = GameObject.Find("SnapshotContainer");

            if (go != null)
            {
                m_snapshotContainer = GameObject.Instantiate <UIPanel>(go.GetComponent <UIPanel>());
                m_snapshotContainer.transform.SetParent(transform);
                m_snapshotSprite             = m_snapshotContainer.Find <UITextureSprite>("SnapShot");
                m_snapshotLabel              = m_snapshotContainer.Find <UILabel>("CurrentSnapShot");
                m_snapshotPrev               = m_snapshotContainer.Find <UIButton>("Previous");
                m_snapshotPrev.eventClicked += (c, b) =>
                {
                    OnPreviousSnapshot();
                };
                m_snapshotNext = m_snapshotContainer.Find <UIButton>("Next");
                m_snapshotNext.eventClicked += (c, b) =>
                {
                    OnNextSnapshot();
                };
            }
        }
Esempio n. 23
0
		private UIPanel CreateQuartzPanel()
        {
            var uiView = GameObject.Find("UIView").GetComponent<UIView>();
            if (uiView == null)
            {
                Debug.LogError("UIView is null!");
                return null;
            }

            var panel = uiView.AddUIComponent(typeof(UIPanel)) as UIPanel;

	        if (panel != null)
	        {
		        panel.size = new Vector2(300, 290);
		        panel.isVisible = false;
		        panel.atlas = EmbeddedResources.GetQuartzAtlas();
		        panel.backgroundSprite = "DefaultPanelBackground";

				Vector2 viewSize = uiView.GetScreenResolution();

		        panel.relativePosition = _currentModuleClass == Skin.ModuleClass.MainMenu ? new Vector3(viewSize.x - 2.0f - panel.size.x, 34.0f) : new Vector3(viewSize.x - 2.0f - panel.size.x, 34.0f + 64.0f);

				panel.name = "QuartzSkinManager";

		        var title = panel.AddUIComponent<UILabel>();
				title.relativePosition = new Vector3(2.0f, 2.0f);
				title.text = "Quartz Skin Manager";
				title.textColor = Color.black;
	        }

            float y = 32.0f;

			UIUtil.MakeCheckbox(panel, "ShowIconInGame", "Show Quartz icon in-game", new Vector2(4.0f, y), ConfigManager.ShowQuartzIconInGame, value =>
            {
				ConfigManager.ShowQuartzIconInGame = value;

                if (_quartzButton != null && !ConfigManager.ShowQuartzIconInGame && _currentModuleClass == Skin.ModuleClass.InGame)
                {
                    _quartzButton.isVisible = false;
                    if (_quartzPanel != null)
                    {
                        _quartzPanel.isVisible = false;
                    }
                }
                else if(_quartzButton != null)
                {
                    _quartzButton.isVisible = true;
                }
            });

            y += 28.0f;

			UIUtil.MakeCheckbox(panel, "AutoApplySkin", "Apply skin on start-up", new Vector2(4.0f, y), ConfigManager.ApplySkinOnStartup, value =>
            {
				ConfigManager.ApplySkinOnStartup = value;
            });

            y += 28.0f;

            UIUtil.MakeCheckbox(panel, "DrawDebugInfo", "Developer mode (Ctrl+D)", new Vector2(4.0f, y), false, value =>
            {
                if (_debugRenderer != null)
                {
                    _debugRenderer.drawDebugInfo = value;
                }
            });

            y += 28.0f;

            UIUtil.MakeCheckbox(panel, "AutoReload", "Auto-reload active skin on file change", new Vector2(4.0f, y), false, value =>
            {
                _autoReloadSkinOnChange = value;
                ReloadAndApplyActiveSkin();
            });

			y += 28.0f;

			UIUtil.MakeCheckbox(panel, "IgnoreMissing", "Force load (May break stuff)", new Vector2(4.0f, y), ConfigManager.IgnoreMissingComponents, value =>
			{
				ConfigManager.IgnoreMissingComponents = value;
			});

            y += 28.0f;

            _skinsDropdown = panel.AddUIComponent<UIDropDown>();

            _skinsDropdown.AddItem("Vanilla (by Colossal Order)");
            foreach (var skin in _availableSkins)
            {
                _skinsDropdown.AddItem(String.Format("{0} (by {1}){2}", skin.Name, skin.Author, skin.Legacy ? " [LEGACY]" : string.Empty));
            }

            _skinsDropdown.size = new Vector2(296.0f, 32.0f);
            _skinsDropdown.relativePosition = new Vector3(2.0f, y);
            _skinsDropdown.listBackground = "GenericPanelLight";
            _skinsDropdown.itemHeight = 32;
            _skinsDropdown.itemHover = "ListItemHover";
            _skinsDropdown.itemHighlight = "ListItemHighlight";
            _skinsDropdown.normalBgSprite = "ButtonMenu";
            _skinsDropdown.listWidth = 300;
            _skinsDropdown.listHeight = 500;
            _skinsDropdown.foregroundSpriteMode = UIForegroundSpriteMode.Stretch;
            _skinsDropdown.popupColor = new Color32(45, 52, 61, 255);
            _skinsDropdown.popupTextColor = new Color32(170, 170, 170, 255);
            _skinsDropdown.zOrder = 1;
            _skinsDropdown.textScale = 0.8f;
            _skinsDropdown.verticalAlignment = UIVerticalAlignment.Middle;
            _skinsDropdown.horizontalAlignment = UIHorizontalAlignment.Center;
            _skinsDropdown.textFieldPadding = new RectOffset(8, 0, 8, 0);
            _skinsDropdown.itemPadding = new RectOffset(8, 0, 2, 0);

            _skinsDropdown.selectedIndex = 0;

            if(_currentSkin != null)
            {
                int i = 1;
                foreach (var skin in _availableSkins)
                {
                    if (skin.Path == _currentSkin.SapphirePath)
                    {
                        _skinsDropdown.selectedIndex = i;
                    }

                    i++;
                }
            }

            _skinsDropdown.eventSelectedIndexChanged += (component, index) =>
            {
                if (index == 0)
                {
                    if (_currentSkin != null)
                    {
                        _currentSkin.Dispose();
                    }

                    _currentSkin = null;
                    return;
                }

                var skin = _availableSkins[index-1];
                if (_currentSkin != null && _currentSkin.SapphirePath == skin.Path)
                {
                    return;
                }

                if (_currentSkin != null)
                {
                    _currentSkin.Dispose();
                }

                _currentSkin = Skin.FromXmlFile(Path.Combine(skin.Path, "skin.xml"), _autoReloadSkinOnChange);

                if (_currentSkin.IsValid)
                {
                    _currentSkin.Apply(_currentModuleClass);
                }
                else
                {
                    Debug.LogWarning("Skin is invalid, will not apply.. (check messages above for errors)");
                }

				ConfigManager.SelectedSkinPath = _currentSkin.SapphirePath;
                panel.isVisible = false;
            };
                        
            var skinsDropdownButton = _skinsDropdown.AddUIComponent<UIButton>();
            _skinsDropdown.triggerButton = skinsDropdownButton;

            skinsDropdownButton.text = "";
            skinsDropdownButton.size = _skinsDropdown.size;
            skinsDropdownButton.relativePosition = new Vector3(0.0f, 0.0f);
            skinsDropdownButton.textVerticalAlignment = UIVerticalAlignment.Middle;
            skinsDropdownButton.textHorizontalAlignment = UIHorizontalAlignment.Center;
            skinsDropdownButton.normalFgSprite = "IconDownArrow";
            skinsDropdownButton.hoveredFgSprite = "IconDownArrowHovered";
            skinsDropdownButton.pressedFgSprite = "IconDownArrowPressed";
            skinsDropdownButton.focusedFgSprite = "IconDownArrowFocused";
            skinsDropdownButton.disabledFgSprite = "IconDownArrowDisabled";
            skinsDropdownButton.foregroundSpriteMode = UIForegroundSpriteMode.Fill;
            skinsDropdownButton.horizontalAlignment = UIHorizontalAlignment.Right;
            skinsDropdownButton.verticalAlignment = UIVerticalAlignment.Middle;
            skinsDropdownButton.zOrder = 0;
            skinsDropdownButton.textScale = 0.8f;

            y += 40.0f;

            UIUtil.MakeButton(panel, "ReloadSkin", "Reload active skin (Ctrl+Shift+S)", new Vector2(4.0f, y), ReloadAndApplyActiveSkin);

            y += 36.0f;

            UIUtil.MakeButton(panel, "RefreshSkins", "Refresh available skins", new Vector2(4.0f, y), RefreshSkinsList);

            return panel;
        }
Esempio n. 24
0
        public override void Start()
        {
            instance = this;

            // extra filter checkbox
            optionDropDownCheckBox                    = SamsamTS.UIUtils.CreateCheckBox(this);
            optionDropDownCheckBox.isChecked          = false;
            optionDropDownCheckBox.width              = 20;
            optionDropDownCheckBox.relativePosition   = new Vector3(10, 10);
            optionDropDownCheckBox.eventCheckChanged += (c, i) =>
            {
                ((UISearchBox)parent).Search();
            };

            // extra filter dropdown
            optionDropDownMenu                            = SamsamTS.UIUtils.CreateDropDown(this);
            optionDropDownMenu.size                       = new Vector2(200, 25);
            optionDropDownMenu.listHeight                 = 210;
            optionDropDownMenu.itemHeight                 = 30;
            optionDropDownMenu.items                      = options;
            optionDropDownMenu.selectedIndex              = 0;
            optionDropDownMenu.relativePosition           = new Vector3(optionDropDownCheckBox.relativePosition.x + optionDropDownCheckBox.width + 5, 5);
            optionDropDownMenu.eventSelectedIndexChanged += (c, p) =>
            {
                HideAll();

                if (optionDropDownMenu.selectedIndex == (int)DropDownOptions.AssetCreator)
                {
                    UpdateAssetCreatorOptionVisibility(true);
                }
                else if (optionDropDownMenu.selectedIndex == (int)DropDownOptions.BuildingHeight)
                {
                    UpdateBuildingHeightOptionVisibility(true);
                }

                else if (optionDropDownMenu.selectedIndex == (int)DropDownOptions.BuildingLevel)
                {
                    UpdateBuildingLevelOptionVisibility(true);
                }

                if (optionDropDownCheckBox.isChecked)
                {
                    ((UISearchBox)parent).Search();
                }
            };

            // asset creator
            assetCreatorInput                   = SamsamTS.UIUtils.CreateTextField(this);
            assetCreatorInput.size              = new Vector2(120, 25);
            assetCreatorInput.padding.top       = 5;
            assetCreatorInput.isVisible         = true;
            assetCreatorInput.text              = "";
            assetCreatorInput.textScale         = 0.9f;
            assetCreatorInput.relativePosition  = new Vector3(optionDropDownMenu.relativePosition.x + optionDropDownMenu.width + 30, 5);
            assetCreatorInput.eventTextChanged += (c, p) =>
            {
                if (assetCreatorInput.text == "")
                {
                    return;
                }

                for (int i = 0; i < assetCreatorDropDownMenu.items.Length; ++i)
                {
                    if (assetCreatorDropDownMenu.items[i].ToLower().StartsWith(assetCreatorInput.text.ToLower()))
                    {
                        assetCreatorDropDownMenu.selectedIndex = i;
                        return;
                    }
                }
                for (int i = 0; i < assetCreatorDropDownMenu.items.Length; ++i)
                {
                    if (assetCreatorDropDownMenu.items[i].ToLower().Contains(assetCreatorInput.text.ToLower()))
                    {
                        assetCreatorDropDownMenu.selectedIndex = i;
                        return;
                    }
                }
            };

            // search icon
            assetCreatorSearchIcon                  = AddUIComponent <UISprite>();
            assetCreatorSearchIcon.size             = new Vector2(25, 30);
            assetCreatorSearchIcon.atlas            = FindIt.atlas;
            assetCreatorSearchIcon.spriteName       = "FindItDisabled";
            assetCreatorSearchIcon.isVisible        = true;
            assetCreatorSearchIcon.relativePosition = new Vector3(optionDropDownMenu.relativePosition.x + optionDropDownMenu.width + 30, 3);

            assetCreatorDropDownMenu            = SamsamTS.UIUtils.CreateDropDown(this);
            assetCreatorDropDownMenu.size       = new Vector2(270, 25);
            assetCreatorDropDownMenu.tooltip    = Translations.Translate("FIF_POP_SCR");
            assetCreatorDropDownMenu.listHeight = 300;
            assetCreatorDropDownMenu.itemHeight = 30;
            UpdateAssetCreatorList();
            SamsamTS.UIUtils.CreateDropDownScrollBar(assetCreatorDropDownMenu);
            assetCreatorDropDownMenu.isVisible                  = true;
            assetCreatorDropDownMenu.relativePosition           = new Vector3(assetCreatorInput.relativePosition.x + assetCreatorInput.width + 10, 5);
            assetCreatorDropDownMenu.eventSelectedIndexChanged += (c, p) =>
            {
                if (optionDropDownCheckBox.isChecked)
                {
                    ((UISearchBox)parent).Search();
                }
            };

            // building height min label
            minLabel                  = this.AddUIComponent <UILabel>();
            minLabel.textScale        = 0.8f;
            minLabel.padding          = new RectOffset(0, 0, 8, 0);
            minLabel.text             = "Min:";
            minLabel.isVisible        = false;
            minLabel.relativePosition = new Vector3(optionDropDownMenu.relativePosition.x + optionDropDownMenu.width + 50, 5);

            // building height min input box
            minInput                   = SamsamTS.UIUtils.CreateTextField(this);
            minInput.size              = new Vector2(60, 25);
            minInput.padding.top       = 5;
            minInput.isVisible         = false;
            minInput.text              = "";
            minInput.relativePosition  = new Vector3(minLabel.relativePosition.x + minLabel.width + 10, 5);
            minInput.eventTextChanged += (c, p) =>
            {
                if (float.TryParse(minInput.text, out minBuildingHeight))
                {
                    if (builingHeightUnit.selectedIndex == 1)
                    {
                        minBuildingHeight *= 0.3048f;
                    }
                    ((UISearchBox)parent).Search();
                }
                if (minInput.text == "")
                {
                    minBuildingHeight = float.MinValue;
                    ((UISearchBox)parent).Search();
                }
            };

            // building height max label
            maxLabel                  = this.AddUIComponent <UILabel>();
            maxLabel.textScale        = 0.8f;
            maxLabel.padding          = new RectOffset(0, 0, 8, 0);
            maxLabel.text             = "Max:";
            maxLabel.isVisible        = false;
            maxLabel.relativePosition = new Vector3(minInput.relativePosition.x + minInput.width + 20, 5);

            // building height max input box
            maxInput                   = SamsamTS.UIUtils.CreateTextField(this);
            maxInput.size              = new Vector2(60, 25);
            maxInput.padding.top       = 5;
            maxInput.isVisible         = false;
            maxInput.text              = "";
            maxInput.relativePosition  = new Vector3(maxLabel.relativePosition.x + maxLabel.width + 10, 5);
            maxInput.eventTextChanged += (c, p) =>
            {
                if (float.TryParse(maxInput.text, out maxBuildingHeight))
                {
                    if (builingHeightUnit.selectedIndex == 1)
                    {
                        maxBuildingHeight *= 0.3048f;
                    }
                    ((UISearchBox)parent).Search();
                }

                if (maxInput.text == "")
                {
                    maxBuildingHeight = float.MaxValue;
                    ((UISearchBox)parent).Search();
                }
            };

            // building height unit
            builingHeightUnit            = SamsamTS.UIUtils.CreateDropDown(this);
            builingHeightUnit.size       = new Vector2(80, 25);
            builingHeightUnit.listHeight = 210;
            builingHeightUnit.itemHeight = 30;
            builingHeightUnit.AddItem(Translations.Translate("FIF_EF_MET"));
            builingHeightUnit.AddItem(Translations.Translate("FIF_EF_FEE"));
            builingHeightUnit.selectedIndex              = 0;
            builingHeightUnit.isVisible                  = false;
            builingHeightUnit.relativePosition           = new Vector3(maxInput.relativePosition.x + maxInput.width + 30, 5);
            builingHeightUnit.eventSelectedIndexChanged += (c, p) =>
            {
                if (float.TryParse(minInput.text, out minBuildingHeight))
                {
                    if (builingHeightUnit.selectedIndex == 1)
                    {
                        minBuildingHeight *= 0.3048f;
                    }
                }

                if (float.TryParse(maxInput.text, out maxBuildingHeight))
                {
                    if (builingHeightUnit.selectedIndex == 1)
                    {
                        maxBuildingHeight *= 0.3048f;
                    }
                }
                if (minInput.text == "")
                {
                    minBuildingHeight = float.MinValue;
                }
                if (maxInput.text == "")
                {
                    maxBuildingHeight = float.MaxValue;
                }
                ((UISearchBox)parent).Search();
            };

            // building level dropdown
            buildingLevelDropDownMenu            = SamsamTS.UIUtils.CreateDropDown(this);
            buildingLevelDropDownMenu.size       = new Vector2(80, 25);
            buildingLevelDropDownMenu.listHeight = 300;
            buildingLevelDropDownMenu.itemHeight = 30;
            buildingLevelDropDownMenu.AddItem("1");
            buildingLevelDropDownMenu.AddItem("2");
            buildingLevelDropDownMenu.AddItem("3");
            buildingLevelDropDownMenu.AddItem("4");
            buildingLevelDropDownMenu.AddItem("5");
            buildingLevelDropDownMenu.isVisible                  = false;
            buildingLevelDropDownMenu.selectedIndex              = 0;
            buildingLevelDropDownMenu.relativePosition           = new Vector3(optionDropDownMenu.relativePosition.x + optionDropDownMenu.width + 50, 5);
            buildingLevelDropDownMenu.eventSelectedIndexChanged += (c, p) =>
            {
                if (optionDropDownCheckBox.isChecked)
                {
                    ((UISearchBox)parent).Search();
                }
            };
        }
Esempio n. 25
0
        /*public override void OnDestroy()
         * {
         *  base.OnDestroy();
         *
         *  DebugUtils.Log("Destroying UIMainPanel");
         *
         *  if (m_button != null) GameObject.Destroy(m_button.gameObject);
         *  GameObject.Destroy(m_optionPanel.gameObject);
         * }*/

        private void SetupControls()
        {
            float offset = 40f;

            // Title Bar
            m_title            = AddUIComponent <UITitleBar>();
            m_title.iconSprite = "InfoIconTrafficCongestion";
            m_title.title      = "Advanced Vehicle Options " + ModInfo.version;

            // Category DropDown
            UILabel label = AddUIComponent <UILabel>();

            label.textScale        = 0.8f;
            label.padding          = new RectOffset(0, 0, 8, 0);
            label.relativePosition = new Vector3(10f, offset);
            label.text             = "Category :";

            m_category       = UIUtils.CreateDropDown(this);
            m_category.width = 150;

            for (int i = 0; i < categoryList.Length; i++)
            {
                m_category.AddItem(categoryList[i]);
            }

            m_category.selectedIndex    = 0;
            m_category.tooltip          = "Select a category to display\nTip: Use the mouse wheel to switch between categories faster";
            m_category.relativePosition = label.relativePosition + new Vector3(75f, 0f);

            m_category.eventSelectedIndexChanged += (c, t) =>
            {
                m_category.enabled = false;
                PopulateList();
                m_category.enabled = true;
            };

            // Search
            m_search                  = UIUtils.CreateTextField(this);
            m_search.width            = 145f;
            m_search.height           = 30f;
            m_search.padding          = new RectOffset(6, 6, 6, 6);
            m_search.tooltip          = "Type the name of a vehicle type";
            m_search.relativePosition = new Vector3(WIDTHLEFT - m_search.width, offset);

            m_search.eventTextChanged += (c, t) => PopulateList();

            label                  = AddUIComponent <UILabel>();
            label.textScale        = 0.8f;
            label.padding          = new RectOffset(0, 0, 8, 0);
            label.relativePosition = m_search.relativePosition - new Vector3(60f, 0f);
            label.text             = "Search :";

            // FastList
            m_fastList = UIFastList.Create <UIVehicleItem>(this);
            m_fastList.backgroundSprite = "UnlockingPanel";
            m_fastList.width            = WIDTHLEFT - 5;
            m_fastList.height           = height - offset - 110;
            m_fastList.canSelect        = true;
            m_fastList.relativePosition = new Vector3(5, offset + 35);

            // Configuration file buttons
            UILabel configLabel = this.AddUIComponent <UILabel>();

            configLabel.text             = "Configuration file:";
            configLabel.textScale        = 0.8f;
            configLabel.relativePosition = new Vector3(10, height - 60);

            m_import                  = UIUtils.CreateButton(this);
            m_import.text             = "Import";
            m_import.tooltip          = "Import the configuration";
            m_import.relativePosition = new Vector3(10, height - 40);

            m_export                  = UIUtils.CreateButton(this);
            m_export.text             = "Export";
            m_export.tooltip          = "Export the configuration";
            m_export.relativePosition = new Vector3(105, height - 40);

            // Preview
            UIPanel panel = AddUIComponent <UIPanel>();

            panel.backgroundSprite = "GenericPanel";
            panel.width            = WIDTHRIGHT - 10;
            panel.height           = HEIGHT - 420;
            panel.relativePosition = new Vector3(WIDTHLEFT + 5, offset);

            m_preview                  = panel.AddUIComponent <UITextureSprite>();
            m_preview.size             = panel.size;
            m_preview.relativePosition = Vector3.zero;

            m_previewRenderer      = gameObject.AddComponent <PreviewRenderer>();
            m_previewRenderer.size = m_preview.size * 2; // Twice the size for anti-aliasing

            m_preview.texture = m_previewRenderer.texture;

            // Follow
            if (m_cameraController != null)
            {
                m_followVehicle                  = AddUIComponent <UISprite>();
                m_followVehicle.spriteName       = "LocationMarkerFocused";
                m_followVehicle.width            = m_followVehicle.spriteInfo.width;
                m_followVehicle.height           = m_followVehicle.spriteInfo.height;
                m_followVehicle.tooltip          = "Click here to cycle through the existing vehicles of that type";
                m_followVehicle.relativePosition = new Vector3(panel.relativePosition.x + panel.width - m_followVehicle.width - 5, panel.relativePosition.y + 5);

                m_followVehicle.eventClick += (c, p) => FollowNextVehicle();
            }

            // Option panel
            m_optionPanel = AddUIComponent <UIOptionPanel>();
            m_optionPanel.relativePosition = new Vector3(WIDTHLEFT, height - 370);

            // Event handlers
            m_fastList.eventSelectedIndexChanged  += OnSelectedItemChanged;
            m_optionPanel.eventEnableCheckChanged += OnEnableStateChanged;
            m_import.eventClick += (c, t) =>
            {
                DefaultOptions.RestoreAll();
                AdvancedVehicleOptions.ImportConfig();
                optionList = AdvancedVehicleOptions.config.options;
            };
            m_export.eventClick += (c, t) => AdvancedVehicleOptions.ExportConfig();

            panel.eventMouseDown += (c, p) =>
            {
                eventMouseMove += RotateCamera;
                if (m_optionPanel.m_options != null && m_optionPanel.m_options.useColorVariations)
                {
                    m_previewRenderer.RenderVehicle(m_optionPanel.m_options.prefab, m_previewColor);
                }
                else
                {
                    m_previewRenderer.RenderVehicle(m_optionPanel.m_options.prefab);
                }
            };

            panel.eventMouseUp += (c, p) =>
            {
                eventMouseMove -= RotateCamera;
                if (m_optionPanel.m_options != null && m_optionPanel.m_options.useColorVariations)
                {
                    m_previewRenderer.RenderVehicle(m_optionPanel.m_options.prefab, m_previewColor);
                }
                else
                {
                    m_previewRenderer.RenderVehicle(m_optionPanel.m_options.prefab);
                }
            };

            panel.eventMouseWheel += (c, p) =>
            {
                m_previewRenderer.zoom -= Mathf.Sign(p.wheelDelta) * 0.25f;
                if (m_optionPanel.m_options != null && m_optionPanel.m_options.useColorVariations)
                {
                    m_previewRenderer.RenderVehicle(m_optionPanel.m_options.prefab, m_previewColor);
                }
                else
                {
                    m_previewRenderer.RenderVehicle(m_optionPanel.m_options.prefab);
                }
            };
        }
Esempio n. 26
0
        private void CreatePanelComponents()
        {
            m_routeLabel                  = this.AddUIComponent <UILabel>();
            m_routeLabel.textScale        = 1f;
            m_routeLabel.size             = new Vector3(m_UIPadding.left, m_panelTitle.height + m_UIPadding.bottom);
            m_routeLabel.textColor        = new Color32(180, 180, 180, 255);
            m_routeLabel.relativePosition = new Vector3(m_UIPadding.left, m_panelTitle.height + m_UIPadding.bottom);
            m_routeLabel.textAlignment    = UIHorizontalAlignment.Left;
            m_routeLabel.text             = "Route Name";

            m_routeTypeDropdown = UIUtils.CreateDropDown(this, new Vector2(((this.width - m_UIPadding.left - 2 * m_UIPadding.right)), 25));
            //TODO: Replace with Random namer values
            foreach (RouteShieldInfo info in RouteShieldConfig.Instance().routeShieldDictionary.Values)
            {
                m_routeTypeDropdown.AddItem(info.textureName);
            }
            m_routeTypeDropdown.selectedIndex    = 0;
            m_routeTypeDropdown.relativePosition = new Vector3(m_UIPadding.left, m_routeLabel.relativePosition.y + m_routeLabel.height + m_UIPadding.bottom);

            m_routeStrField = UIUtils.CreateTextField(this);
            m_routeStrField.relativePosition = new Vector3(m_UIPadding.left, m_routeTypeDropdown.relativePosition.y + m_routeTypeDropdown.height + m_UIPadding.bottom);
            m_routeStrField.height           = 25;
            m_routeStrField.width            = (this.width - m_UIPadding.left - 2 * m_UIPadding.right);
            m_routeStrField.processMarkup    = false;
            m_routeStrField.textColor        = Color.white;
            m_routeStrField.maxLength        = 3;

            m_destinationLabel                  = this.AddUIComponent <UILabel>();
            m_destinationLabel.textScale        = 1f;
            m_destinationLabel.size             = new Vector3(m_UIPadding.left, m_panelTitle.height + m_UIPadding.bottom);
            m_destinationLabel.textColor        = new Color32(180, 180, 180, 255);
            m_destinationLabel.relativePosition = new Vector3(m_UIPadding.left, m_routeStrField.relativePosition.y + m_routeStrField.height + m_UIPadding.bottom);
            m_destinationLabel.textAlignment    = UIHorizontalAlignment.Left;
            m_destinationLabel.text             = "Destination Name";

            m_destinationField[0] = UIUtils.CreateTextField(this);
            m_destinationField[0].relativePosition = new Vector3(m_UIPadding.left, m_destinationLabel.relativePosition.y + m_destinationLabel.height + m_UIPadding.bottom);
            m_destinationField[0].height           = 25;
            m_destinationField[0].width            = (this.width - m_UIPadding.left - 2 * m_UIPadding.right);
            m_destinationField[0].processMarkup    = false;
            m_destinationField[0].textColor        = Color.white;
            m_destinationField[0].maxLength        = 14;

            m_destinationField[1] = UIUtils.CreateTextField(this);
            m_destinationField[1].relativePosition = new Vector3(m_UIPadding.left, m_destinationField[0].relativePosition.y + m_destinationField[0].height + m_UIPadding.bottom);
            m_destinationField[1].height           = 25;
            m_destinationField[1].width            = (this.width - m_UIPadding.left - 2 * m_UIPadding.right);
            m_destinationField[1].processMarkup    = false;
            m_destinationField[1].textColor        = Color.white;
            m_destinationField[1].maxLength        = 14;

            m_propTypeLabel                  = this.AddUIComponent <UILabel>();
            m_propTypeLabel.textScale        = 1f;
            m_propTypeLabel.size             = new Vector3(m_UIPadding.left, m_panelTitle.height + m_UIPadding.bottom);
            m_propTypeLabel.textColor        = new Color32(180, 180, 180, 255);
            m_propTypeLabel.relativePosition = new Vector3(m_UIPadding.left, m_destinationField[1].relativePosition.y + m_destinationField[1].height + m_UIPadding.bottom);
            m_propTypeLabel.textAlignment    = UIHorizontalAlignment.Left;
            m_propTypeLabel.text             = "Sign prop type";

            m_propTypeDropDown = UIUtils.CreateDropDown(this, new Vector2(((this.width - m_UIPadding.left - 2 * m_UIPadding.right)), 25));
            //TODO: Replace with Random namer values
            var keys = RenderingManager.instance.m_signPropDict.Keys;

            foreach (String signPropName in RenderingManager.instance.m_signPropDict.Keys.Where(key => SignPropConfig.signPropInfoDict.ContainsKey(key)))
            {
                m_propTypeDropDown.AddItem(signPropName);
            }
            m_propTypeDropDown.selectedIndex    = 0;
            m_propTypeDropDown.relativePosition = new Vector3(m_UIPadding.left, m_propTypeLabel.relativePosition.y + m_propTypeLabel.height + m_UIPadding.bottom);

            UIButton nameRoadButton = UIUtils.CreateButton(this);

            nameRoadButton.text             = "Set";
            nameRoadButton.size             = new Vector2(60, 30);
            nameRoadButton.relativePosition = new Vector3(this.width - nameRoadButton.width - m_UIPadding.right, m_propTypeDropDown.relativePosition.y + m_propTypeDropDown.height + m_UIPadding.bottom);
            nameRoadButton.eventClicked    += NameRoadButton_eventClicked;
            nameRoadButton.tooltip          = "Create the label";

            this.height = nameRoadButton.relativePosition.y + nameRoadButton.height + m_UIPadding.bottom;
        }
Esempio n. 27
0
        public override void Start()
        {
            base.Start();

            // Zoning
            zoningToggles = new UICheckBox[10];
            for (int i = 0; i < 10; i++)
            {
                zoningToggles[i]                  = UIUtils.CreateIconToggle(this, CategoryIcons.atlases[i], CategoryIcons.spriteNames[i], CategoryIcons.spriteNames[i] + "Disabled");
                zoningToggles[i].tooltip          = CategoryIcons.tooltips[i];
                zoningToggles[i].relativePosition = new Vector3(40 * i, 0);
                zoningToggles[i].isChecked        = true;
                zoningToggles[i].readOnly         = true;
                zoningToggles[i].checkedBoxObject.isInteractive = false; // Don't eat my double click event please

                zoningToggles[i].eventClick += (c, p) =>
                {
                    ((UICheckBox)c).isChecked = !((UICheckBox)c).isChecked;
                    eventFilteringChanged(this, 0);
                };

                zoningToggles[i].eventDoubleClick += (c, p) =>
                {
                    for (int j = 0; j < 10; j++)
                    {
                        zoningToggles[j].isChecked = false;
                    }
                    ((UICheckBox)c).isChecked = true;

                    eventFilteringChanged(this, 0);
                };
            }

            allZones                  = UIUtils.CreateButton(this);
            allZones.width            = 55;
            allZones.text             = "All";
            allZones.relativePosition = new Vector3(400, 5);

            allZones.eventClick += (c, p) =>
            {
                for (int i = 0; i < 10; i++)
                {
                    zoningToggles[i].isChecked = true;
                }
                eventFilteringChanged(this, 0);
            };

            noZones                  = UIUtils.CreateButton(this);
            noZones.width            = 55;
            noZones.text             = "None";
            noZones.relativePosition = new Vector3(460, 5);

            noZones.eventClick += (c, p) =>
            {
                for (int i = 0; i < 10; i++)
                {
                    zoningToggles[i].isChecked = false;
                }
                eventFilteringChanged(this, 0);
            };

            // Display
            UILabel display = AddUIComponent <UILabel>();

            display.textScale        = 0.8f;
            display.padding          = new RectOffset(0, 0, 8, 0);
            display.text             = "Display: ";
            display.relativePosition = new Vector3(0, 40);

            origin       = UIUtils.CreateDropDown(this);
            origin.width = 90;
            origin.AddItem("All");
            origin.AddItem("Default");
            origin.AddItem("Custom");
            origin.AddItem("Cloned");
            origin.selectedIndex    = 0;
            origin.relativePosition = new Vector3(display.relativePosition.x + display.width + 5, 40);

            origin.eventSelectedIndexChanged += (c, i) => eventFilteringChanged(this, 1);

            status       = UIUtils.CreateDropDown(this);
            status.width = 90;
            status.AddItem("All");
            status.AddItem("Included");
            status.AddItem("Excluded");
            status.selectedIndex    = 0;
            status.relativePosition = new Vector3(origin.relativePosition.x + origin.width + 5, 40);

            status.eventSelectedIndexChanged += (c, i) => eventFilteringChanged(this, 2);

            // Level
            UILabel levelLabel = AddUIComponent <UILabel>();

            levelLabel.textScale        = 0.8f;
            levelLabel.padding          = new RectOffset(0, 0, 8, 0);
            levelLabel.text             = "Level: ";
            levelLabel.relativePosition = new Vector3(status.relativePosition.x + status.width + 10, 40);

            levelFilter       = UIUtils.CreateDropDown(this);
            levelFilter.width = 55;
            levelFilter.AddItem("All");
            levelFilter.AddItem("1");
            levelFilter.AddItem("2");
            levelFilter.AddItem("3");
            levelFilter.AddItem("4");
            levelFilter.AddItem("5");
            levelFilter.selectedIndex    = 0;
            levelFilter.relativePosition = new Vector3(levelLabel.relativePosition.x + levelLabel.width + 5, 40);

            levelFilter.eventSelectedIndexChanged += (c, i) => eventFilteringChanged(this, 3);

            // Size
            UILabel sizeLabel = AddUIComponent <UILabel>();

            sizeLabel.textScale        = 0.8f;
            sizeLabel.padding          = new RectOffset(0, 0, 8, 0);
            sizeLabel.text             = "Size: ";
            sizeLabel.relativePosition = new Vector3(levelFilter.relativePosition.x + levelFilter.width + 10, 40);

            sizeFilterX       = UIUtils.CreateDropDown(this);
            sizeFilterX.width = 55;
            sizeFilterX.AddItem("All");
            sizeFilterX.AddItem("1");
            sizeFilterX.AddItem("2");
            sizeFilterX.AddItem("3");
            sizeFilterX.AddItem("4");
            sizeFilterX.selectedIndex    = 0;
            sizeFilterX.relativePosition = new Vector3(sizeLabel.relativePosition.x + sizeLabel.width + 5, 40);

            UILabel XLabel = AddUIComponent <UILabel>();

            XLabel.textScale        = 0.8f;
            XLabel.padding          = new RectOffset(0, 0, 8, 0);
            XLabel.text             = "X";
            XLabel.isVisible        = false;
            XLabel.relativePosition = new Vector3(sizeFilterX.relativePosition.x + sizeFilterX.width - 5, 40);

            sizeFilterY       = UIUtils.CreateDropDown(this);
            sizeFilterY.width = 45;
            sizeFilterY.AddItem("1");
            sizeFilterY.AddItem("2");
            sizeFilterY.AddItem("3");
            sizeFilterY.AddItem("4");
            sizeFilterY.selectedIndex    = 0;
            sizeFilterY.isVisible        = false;
            sizeFilterY.relativePosition = new Vector3(XLabel.relativePosition.x + XLabel.width + 5, 40);

            sizeFilterX.eventSelectedIndexChanged += (c, i) =>
            {
                if (i == 0)
                {
                    sizeFilterX.width     = 55;
                    XLabel.isVisible      = false;
                    sizeFilterY.isVisible = false;
                }
                else
                {
                    sizeFilterX.width     = 45;
                    XLabel.isVisible      = true;
                    sizeFilterY.isVisible = true;
                }

                eventFilteringChanged(this, 4);
            };

            sizeFilterY.eventSelectedIndexChanged += (c, i) => eventFilteringChanged(this, 4);

            // Name filter
            UILabel nameLabel = AddUIComponent <UILabel>();

            nameLabel.textScale        = 0.8f;
            nameLabel.padding          = new RectOffset(0, 0, 8, 0);
            nameLabel.relativePosition = new Vector3(width - 250, 0);
            nameLabel.text             = "Name: ";

            nameFilter                  = UIUtils.CreateTextField(this);
            nameFilter.width            = 200;
            nameFilter.height           = 30;
            nameFilter.padding          = new RectOffset(6, 6, 6, 6);
            nameFilter.relativePosition = new Vector3(width - nameFilter.width, 0);

            nameFilter.eventTextChanged   += (c, s) => eventFilteringChanged(this, 5);
            nameFilter.eventTextSubmitted += (c, s) => eventFilteringChanged(this, 5);
        }
Esempio n. 28
0
        internal void SetupControls()
        {
            float offset = 40f;

            // Title Bar
            m_title            = AddUIComponent <UITitleBar>();
            m_title.iconSprite = "InfoIconTrafficCongestion";
            m_title.title      = AVOMod.ModName + " " + AVOMod.Version;

            // Category DropDown
            UILabel label = AddUIComponent <UILabel>();

            label.textScale        = 0.8f;
            label.padding          = new RectOffset(0, 0, 8, 0);
            label.relativePosition = new Vector3(10f, offset);
            label.text             = Translations.Translate("AVO_MOD_MP56");

            m_category       = UIUtils.CreateDropDown(this);
            m_category.width = 175;

            for (int i = 0; i < categoryList.Length; i++)
            {
                m_category.AddItem(categoryList[i]);
            }

            m_category.selectedIndex    = 0;
            m_category.tooltip          = Translations.Translate("AVO_MOD_MP39");
            m_category.relativePosition = label.relativePosition + new Vector3(75f, 0f);

            m_category.eventSelectedIndexChanged += (c, t) =>
            {
                m_category.enabled = false;
                PopulateList();
                m_category.enabled = true;
            };

            // Search
            m_search                  = UIUtils.CreateTextField(this);
            m_search.width            = 145f;
            m_search.height           = 30f;
            m_search.padding          = new RectOffset(6, 6, 6, 6);
            m_search.tooltip          = Translations.Translate("AVO_MOD_MP40");
            m_search.relativePosition = new Vector3(WIDTHLEFT - m_search.width, offset);

            m_search.eventTextChanged += (c, t) => PopulateList();

            label                  = AddUIComponent <UILabel>();
            label.textScale        = 0.8f;
            label.padding          = new RectOffset(0, 0, 8, 0);
            label.relativePosition = m_search.relativePosition - new Vector3(60f, 0f);
            label.text             = Translations.Translate("AVO_MOD_MP55");

            // FastList
            m_fastList = UIFastList.Create <UIVehicleItem>(this);
            m_fastList.backgroundSprite = "UnlockingPanel";
            m_fastList.width            = WIDTHLEFT - 5;
            m_fastList.height           = height - offset - 110;
            m_fastList.canSelect        = true;
            m_fastList.relativePosition = new Vector3(5, offset + 35);

            // Configuration file buttons
            UILabel configLabel = this.AddUIComponent <UILabel>();

            configLabel.text             = Translations.Translate("AVO_MOD_MP41");
            configLabel.textScale        = 0.8f;
            configLabel.relativePosition = new Vector3(16, height - 65);

            m_import                  = UIUtils.CreateButton(this);
            m_import.text             = Translations.Translate("AVO_MOD_MP42");
            m_import.width            = 80;
            m_import.tooltip          = Translations.Translate("AVO_MOD_MP43");
            m_import.relativePosition = new Vector3(10, height - 45);

            m_export                  = UIUtils.CreateButton(this);
            m_export.text             = Translations.Translate("AVO_MOD_MP44");
            m_export.width            = 80;
            m_export.tooltip          = Translations.Translate("AVO_MOD_MP45");
            m_export.relativePosition = new Vector3(95, height - 45);

            m_resetall                  = UIUtils.CreateButton(this);
            m_resetall.text             = Translations.Translate("AVO_MOD_MP46");
            m_resetall.width            = 80;
            m_resetall.tooltip          = Translations.Translate("AVO_MOD_MP47");
            m_resetall.relativePosition = new Vector3(180, height - 45);

            m_autosave                  = AddUIComponent <UILabel>();
            m_autosave.textScale        = 0.6f;
            m_autosave.text             = Translations.Translate("AVO_MOD_MP48");
            m_autosave.relativePosition = new Vector3(275, height - 40);
            m_autosave.autoSize         = true;
            m_autosave.textAlignment    = UIHorizontalAlignment.Center;
            m_autosave.textColor        = Color.green;
            m_autosave.tooltip          = Translations.Translate("AVO_MOD_MP49");
            m_autosave.isVisible        = AdvancedVehicleOptions.AutoSaveVehicleConfig;

            // Preview
            UIPanel panel = AddUIComponent <UIPanel>();

            panel.backgroundSprite = "GenericPanel";
            panel.width            = WIDTHRIGHT - 10;
            panel.height           = HEIGHT - 420;
            panel.relativePosition = new Vector3(WIDTHLEFT + 5, offset);

            m_preview                  = panel.AddUIComponent <UITextureSprite>();
            m_preview.size             = panel.size;
            m_preview.relativePosition = Vector3.zero;

            m_previewRenderer      = gameObject.AddComponent <PreviewRenderer>();
            m_previewRenderer.size = m_preview.size * 2; // Twice the size for anti-aliasing

            m_preview.texture = m_previewRenderer.texture;

            // Follow a vehicle
            if (m_cameraController != null)
            {
                m_followVehicle                  = AddUIComponent <UISprite>();
                m_followVehicle.spriteName       = "LocationMarkerFocused";
                m_followVehicle.width            = m_followVehicle.spriteInfo.width;
                m_followVehicle.height           = m_followVehicle.spriteInfo.height;
                m_followVehicle.tooltip          = Translations.Translate("AVO_MOD_MP50");
                m_followVehicle.relativePosition = new Vector3(panel.relativePosition.x + panel.width - m_followVehicle.width - 5, panel.relativePosition.y + 5);

                m_followVehicle.eventClick += (c, p) => FollowNextVehicle();
            }

            //Remove the followed vehicle
            {
                m_removeVehicle = AddUIComponent <UISprite>();
                m_removeVehicle.Hide();
                m_removeVehicle.spriteName       = "IconPolicyOldTown";
                m_removeVehicle.width            = m_removeVehicle.spriteInfo.width - 12;
                m_removeVehicle.height           = m_removeVehicle.spriteInfo.height - 12;
                m_removeVehicle.tooltip          = Translations.Translate("AVO_MOD_MP51");
                m_removeVehicle.relativePosition = new Vector3(panel.relativePosition.x + panel.width - m_removeVehicle.width - 33, panel.relativePosition.y + 7);

                m_removeVehicle.eventClick += (c, p) => RemoveThisVehicle();
            }

            // Option panel
            m_optionPanel = AddUIComponent <UIOptionPanel>();
            m_optionPanel.relativePosition = new Vector3(WIDTHLEFT, height - 370);

            // Event handlers
            m_fastList.eventSelectedIndexChanged  += OnSelectedItemChanged;
            m_optionPanel.eventEnableCheckChanged += OnEnableStateChanged;

            m_import.eventClick += (c, t) =>
            {
                DefaultOptions.RestoreAll();
                AdvancedVehicleOptions.ImportVehicleDataConfig();
                optionList = AdvancedVehicleOptions.config.options;
            };

            m_export.eventClick += (c, t) => AdvancedVehicleOptions.ExportVehicleDataConfig(true);

            m_resetall.eventClick += (c, t) =>
            {
                ConfirmPanel.ShowModal(Translations.Translate("AVO_MOD_MP52"), Translations.Translate("AVO_MOD_MP53"), (comp, ret) =>
                {
                    if (ret != 1)
                    {
                        return;
                    }

                    DefaultOptions.RestoreAll();
                    AdvancedVehicleOptions.ResetVehicleDataConfig();
                    optionList = AdvancedVehicleOptions.config.options;

                    ExceptionPanel resetpanel = UIView.library.ShowModal <ExceptionPanel>("ExceptionPanel");
                    resetpanel.SetMessage("Advanced Vehicle Options", Translations.Translate("AVO_MOD_MP54"), false);
                });
            };

            panel.eventMouseDown += (c, p) =>
            {
                eventMouseMove += RotateCamera;
                if (m_optionPanel.m_options != null && m_optionPanel.m_options.useColorVariations)
                {
                    m_previewRenderer.RenderVehicle(m_optionPanel.m_options.prefab, m_previewColor);
                }
                else
                {
                    m_previewRenderer.RenderVehicle(m_optionPanel.m_options.prefab);
                }
            };

            panel.eventMouseUp += (c, p) =>
            {
                eventMouseMove -= RotateCamera;
                if (m_optionPanel.m_options != null && m_optionPanel.m_options.useColorVariations)
                {
                    m_previewRenderer.RenderVehicle(m_optionPanel.m_options.prefab, m_previewColor);
                }
                else
                {
                    m_previewRenderer.RenderVehicle(m_optionPanel.m_options.prefab);
                }
            };

            panel.eventMouseWheel += (c, p) =>
            {
                m_previewRenderer.zoom -= Mathf.Sign(p.wheelDelta) * 0.25f;
                if (m_optionPanel.m_options != null && m_optionPanel.m_options.useColorVariations)
                {
                    m_previewRenderer.RenderVehicle(m_optionPanel.m_options.prefab, m_previewColor);
                }
                else
                {
                    m_previewRenderer.RenderVehicle(m_optionPanel.m_options.prefab);
                }
            };
        }
Esempio n. 29
0
        public override void Awake()
        {
            height = 46;

            focusButton                  = UIUtils.CreateButton(this);
            focusButton.name             = "CCX_FocusButton";
            focusButton.text             = "Point 0";
            focusButton.size             = new Vector2(70f, 30f);
            focusButton.relativePosition = new Vector3(8, 8);
            focusButton.tooltip          = "Click here to place the camera at this point";

            easingDropDown           = UIUtils.CreateDropDown(this);
            easingDropDown.name      = "CCX_EasingDropDown";
            easingDropDown.textScale = 0.9f;
            easingDropDown.AddItem("None");
            easingDropDown.AddItem("Auto");
            easingDropDown.AddItem("In");
            easingDropDown.AddItem("Out");
            easingDropDown.AddItem("InOut");
            easingDropDown.selectedValue        = "Auto";
            easingDropDown.size                 = new Vector2(80f, 30f);
            easingDropDown.textFieldPadding.top = 7;
            easingDropDown.relativePosition     = new Vector3(focusButton.relativePosition.x + focusButton.width + 8, 8);
            easingDropDown.tooltip              = "Camera movement easing";

            durationInput                  = UIUtils.CreateTextField(this);
            durationInput.name             = "CCX_DurationInput";
            durationInput.size             = new Vector2(40f, 26f);
            durationInput.numericalOnly    = true;
            durationInput.allowFloats      = true;
            durationInput.padding.top      = 6;
            durationInput.relativePosition = new Vector3(easingDropDown.relativePosition.x + easingDropDown.width + 8, 10);
            durationInput.tooltip          = "Duration in seconds";

            delayInput                  = UIUtils.CreateTextField(this);
            delayInput.name             = "CCX_DelayInput";
            delayInput.size             = new Vector2(45f, 26f);
            delayInput.numericalOnly    = true;
            delayInput.allowFloats      = true;
            delayInput.padding.top      = 6;
            delayInput.relativePosition = new Vector3(durationInput.relativePosition.x + durationInput.width + 8, 10);
            delayInput.tooltip          = "Delay in seconds";

            fovInput                  = UIUtils.CreateTextField(this);
            fovInput.name             = "CCX_DelayInput";
            fovInput.size             = new Vector2(45f, 26);
            fovInput.numericalOnly    = true;
            fovInput.allowFloats      = true;
            fovInput.padding.top      = 6;
            fovInput.relativePosition = new Vector3(delayInput.relativePosition.x + delayInput.width + 8, 10);
            fovInput.tooltip          = "Field of view in degrees";

            resetButton                  = UIUtils.CreateButton(this);
            resetButton.name             = "CCX_ResetButton";
            resetButton.text             = "O";
            resetButton.size             = new Vector2(45f, 30f);
            resetButton.relativePosition = new Vector3(fovInput.relativePosition.x + fovInput.width + 8, 8);
            resetButton.tooltip          = "Recapture the camera position";

            removeButton                  = UIUtils.CreateButton(this);
            removeButton.name             = "CCX_RemoveButton";
            removeButton.text             = "X";
            removeButton.size             = new Vector2(40f, 30f);
            removeButton.relativePosition = new Vector3(resetButton.relativePosition.x + resetButton.width + 8, 8);
            removeButton.tooltip          = "Remove this point";

            focusButton.eventClicked += (c, p) =>
            {
                CameraPath.SetCitiesCameraTransform(knot);
            };

            easingDropDown.eventSelectedIndexChanged += (c, p) =>
            {
                knot.mode = (EasingMode)p;
            };

            durationInput.eventTextSubmitted += (c, p) =>
            {
                float value;
                if (float.TryParse(p, out value) && value > 0)
                {
                    knot.duration = value;
                }

                durationInput.text = knot.duration.ToString();
            };

            durationInput.eventMouseWheel += (c, p) =>
            {
                float value;
                if (float.TryParse(durationInput.text, out value))
                {
                    knot.duration      = Mathf.Max(0, value + p.wheelDelta);
                    durationInput.text = knot.duration.ToString();
                }
                p.Use();
            };

            delayInput.eventTextSubmitted += (c, p) =>
            {
                float value;
                if (float.TryParse(p, out value))
                {
                    knot.delay = Mathf.Max(0, value);
                }

                delayInput.text = knot.delay.ToString();
            };

            delayInput.eventMouseWheel += (c, p) =>
            {
                float value;
                if (float.TryParse(delayInput.text, out value))
                {
                    knot.delay      = Mathf.Max(0, value + p.wheelDelta);
                    delayInput.text = knot.delay.ToString();
                }
                p.Use();
            };

            fovInput.eventTextSubmitted += (c, p) =>
            {
                float value;
                if (float.TryParse(p, out value))
                {
                    knot.fov = Mathf.Clamp(value, 20f, 179f) / 2f;
                }

                fovInput.text = (2f * knot.fov).ToString();
            };

            fovInput.eventMouseWheel += (c, p) =>
            {
                float value;
                if (float.TryParse(fovInput.text, out value))
                {
                    knot.fov      = Mathf.Clamp(value + p.wheelDelta, 20f, 179f) / 2f;
                    fovInput.text = (2f * knot.fov).ToString();
                }
                p.Use();
            };

            resetButton.eventClicked += (c, p) =>
            {
                knot.CaptureCamera();
                fovInput.text = (2f * knot.fov).ToString();
            };

            removeButton.eventClicked += (c, p) =>
            {
                CameraDirector.cameraPath.knots.RemoveAt(index);
                CameraDirector.mainWindow.RefreshKnotList();
            };
        }
Esempio n. 30
0
        /* The mod window turns on when RoadsIntersectionPanel or RoadsRoadTollsPanel is visible. */

        public override void Start()
        {
            name = "SmartIntersectionsPanel";

            if (!ModLoadingExtension.roadAnarchyDetected)
            {
                enabled = false;
                return;
            }

            atlas            = ResourceLoader.GetAtlas("Ingame");
            backgroundSprite = "SubcategoriesPanel";
            size             = new Vector2(204, 100);
            //Vector2 resolution = GetUIView().GetScreenResolution();
            absolutePosition = new Vector3(ModInfo.savedWindowX.value, ModInfo.savedWindowY.value);
            isVisible        = false;
            clipChildren     = true;

            eventPositionChanged += (c, p) =>
            {
                if (absolutePosition.x < 0)
                {
                    absolutePosition = new Vector2(100, GetUIView().GetScreenResolution().y - height - 150);
                }

                Vector2 resolution = GetUIView().GetScreenResolution();

                absolutePosition = new Vector2(
                    Mathf.Clamp(absolutePosition.x, 0, resolution.x - width),
                    Mathf.Clamp(absolutePosition.y, 0, resolution.y - height));

                ModInfo.savedWindowX.value = (int)absolutePosition.x;
                ModInfo.savedWindowY.value = (int)absolutePosition.y;
            };

            UIDragHandle dragHandle = AddUIComponent <UIDragHandle>();

            dragHandle.width            = width;
            dragHandle.relativePosition = Vector3.zero;
            dragHandle.target           = parent;

            float cumulativeHeight = 8;

            UILabel label = AddUIComponent <UILabel>();

            label.textScale        = 0.9f;
            label.text             = "Smart Intersections";
            label.relativePosition = new Vector2(8, cumulativeHeight);
            label.SendToBack();
            cumulativeHeight += label.height + 8;
            dragHandle.height = cumulativeHeight;

            m_enabledCheckBox                    = UI.CreateCheckBox(this);
            m_enabledCheckBox.name               = "SI_Enabled";
            m_enabledCheckBox.label.text         = "Enabled";
            m_enabledCheckBox.tooltip            = "Enable Smart Intersections Tool";
            m_enabledCheckBox.isChecked          = SavedEnabled.value;
            m_enabledCheckBox.relativePosition   = new Vector3(8, cumulativeHeight);
            m_enabledCheckBox.eventCheckChanged += (c, state) =>
            {
                SmartIntersections.instance.Active = state;
                SavedEnabled.value = state;
            };
            cumulativeHeight += m_enabledCheckBox.height + 8;

            m_connectRoadsCheckBox                    = UI.CreateCheckBox(this);
            m_connectRoadsCheckBox.name               = "SI_ConnectRoads";
            m_connectRoadsCheckBox.label.text         = "Connect roads";
            m_connectRoadsCheckBox.tooltip            = "Try connecting dead ends of roads";
            m_connectRoadsCheckBox.isChecked          = SavedConnectRoads.value;
            m_connectRoadsCheckBox.relativePosition   = new Vector3(8, cumulativeHeight);
            m_connectRoadsCheckBox.eventCheckChanged += (c, state) =>
            {
                SavedConnectRoads.value = state;
            };
            cumulativeHeight += m_connectRoadsCheckBox.height + 8;

            label                  = AddUIComponent <UILabel>();
            label.textScale        = 0.9f;
            label.text             = "Snapping";
            label.relativePosition = new Vector2(8, cumulativeHeight);
            label.SendToBack();
            cumulativeHeight += label.height + 8;

            m_dropDown = UI.CreateDropDown(this);
            m_dropDown.AddItem("Enabled");
            m_dropDown.AddItem("Low");
            m_dropDown.AddItem("Off");
            m_dropDown.relativePosition           = new Vector3(8, cumulativeHeight);
            m_dropDown.width                      = width - 16;
            m_dropDown.eventSelectedIndexChanged += (component, state) =>
            {
                SmartIntersections.instance.Snapping = (SmartIntersections.SnappingMode)state;
                SavedSnapping.value = state;
            };
            m_dropDown.selectedIndex = SavedSnapping.value;
            m_dropDown.listPosition  = UIDropDown.PopupListPosition.Above;
            cumulativeHeight        += m_dropDown.height + 8;

            m_undoButton                  = UI.CreateButton(this);
            m_undoButton.text             = "Undo";
            m_undoButton.tooltip          = "Remove last built intersection";
            m_undoButton.relativePosition = new Vector2(8, cumulativeHeight);
            m_undoButton.width            = width - 16;
            m_undoButton.isEnabled        = false;
            m_undoButton.eventClick      += (c, p) =>
            {
                SmartIntersections.instance.Undo();
            };
            cumulativeHeight += m_undoButton.height + 8;

            height = cumulativeHeight;
            //absolutePosition = ModInfo.defWindowPosition;

            m_intersectionPanel = UIView.Find("RoadsIntersectionPanel");
            if (m_intersectionPanel != null)
            {
                m_intersectionPanel.eventVisibilityChanged += (comp, value) =>
                {
                    //Debug.Log("Roads panel: visibility " + value);
                    isVisible = IsIntersetionsPanelVisible();
                };
            }
            m_tollPanel = UIView.Find("RoadsRoadTollsPanel");
            if (m_tollPanel != null)
            {
                m_tollPanel.eventVisibilityChanged += (comp, value) =>
                {
                    //Debug.Log("Tolls panel: visibility " + value);
                    isVisible = IsIntersetionsPanelVisible();
                };
            }
        }
Esempio n. 31
0
        public override void Start()
        {
            name             = "YetAnotherToolbar_UIQuickMenuPopUp";
            atlas            = SamsamTS.UIUtils.GetAtlas("Ingame");
            backgroundSprite = "GenericPanelWhite";
            size             = new Vector2(460, 500);
            instance         = this;

            UILabel title = AddUIComponent <UILabel>();

            title.text             = Translations.Translate("YAT_QM_TIT");
            title.textColor        = new Color32(0, 0, 0, 255);
            title.relativePosition = new Vector3(spacing * 3, spacing * 3);

            assetEditorWarning                  = AddUIComponent <UILabel>();
            assetEditorWarning.text             = Translations.Translate("YAT_QM_ASSET");
            assetEditorWarning.textColor        = new Color32(255, 0, 0, 255);
            assetEditorWarning.textScale        = 0.9f;
            assetEditorWarning.relativePosition = new Vector3(spacing * 3, title.relativePosition.y + 20);
            assetEditorWarning.isVisible        = false;

            UIButton close = AddUIComponent <UIButton>();

            close.size             = new Vector2(30f, 30f);
            close.text             = "X";
            close.textScale        = 0.9f;
            close.textColor        = new Color32(0, 0, 0, 255);
            close.focusedTextColor = new Color32(0, 0, 0, 255);
            close.hoveredTextColor = new Color32(109, 109, 109, 255);
            close.pressedTextColor = new Color32(128, 128, 128, 102);
            close.textPadding      = new RectOffset(8, 8, 8, 8);
            close.canFocus         = false;
            close.playAudioEvents  = true;
            close.relativePosition = new Vector3(width - close.width, 0);
            close.eventClicked    += (c, p) => Close();

            close.Focus();

            numOfRowLabel                  = AddUIComponent <UILabel>();
            numOfRowLabel.text             = Translations.Translate("YAT_QM_ROW");
            numOfRowLabel.textScale        = 0.8f;
            numOfRowLabel.textColor        = new Color32(0, 0, 0, 255);
            numOfRowLabel.relativePosition = new Vector3(title.relativePosition.x, title.relativePosition.y + title.height + 20);

            numOfRowSlider = SamsamTS.UIUtils.CreateSlider(this, Settings.numOfRows, 2.0f, 10.0f, 1.0f);
            numOfRowSlider.relativePosition   = new Vector3(numOfRowLabel.relativePosition.x, numOfRowLabel.relativePosition.y + numOfRowLabel.height + 5);
            numOfRowSlider.eventValueChanged += (c, p) =>
            {
                if (numOfRowSlider.value == Settings.numOfRows)
                {
                    return;
                }
                numOfRowValueTextField.text = $"{numOfRowSlider.value}";
            };

            numOfRowValueTextField                   = SamsamTS.UIUtils.CreateTextField(this);
            numOfRowValueTextField.text              = $"{Settings.numOfRows}";
            numOfRowValueTextField.width             = 70;
            numOfRowValueTextField.relativePosition  = new Vector3(numOfRowSlider.relativePosition.x + numOfRowSlider.width + 15, numOfRowSlider.relativePosition.y - 10);
            numOfRowValueTextField.eventTextChanged += (c, p) =>
            {
                if (!int.TryParse(numOfRowValueTextField.text, out int newValue))
                {
                    return;
                }
                if (newValue < 2 || newValue > 10)
                {
                    return;                                // too many rows will cause performance issues or even crash the game
                }
                Settings.numOfRows = newValue;
                XMLUtils.SaveSettings();
                numOfRowSlider.value = newValue;
                if (!Settings.expanded)
                {
                    Settings.expanded = true;
                    XMLUtils.SaveSettings();
                    YetAnotherToolbar.instance.mainButton.normalFgSprite = "Collapse";
                }
                YetAnotherToolbar.instance.Expand();
            };

            numOfColLabel                  = AddUIComponent <UILabel>();
            numOfColLabel.text             = Translations.Translate("YAT_QM_COL");
            numOfColLabel.textScale        = 0.8f;
            numOfColLabel.textColor        = new Color32(0, 0, 0, 255);
            numOfColLabel.relativePosition = new Vector3(title.relativePosition.x, numOfRowLabel.relativePosition.y + numOfRowLabel.height + 30);

            numOfColSlider = SamsamTS.UIUtils.CreateSlider(this, Settings.numOfCols, 7.0f, 25.0f, 1.0f);
            numOfColSlider.relativePosition   = new Vector3(numOfColLabel.relativePosition.x, numOfColLabel.relativePosition.y + numOfColLabel.height + 5);
            numOfColSlider.eventValueChanged += (c, p) =>
            {
                if (numOfColSlider.value == Settings.numOfCols)
                {
                    return;
                }
                numOfColValueTextField.text = $"{numOfColSlider.value}";
            };

            numOfColValueTextField                   = SamsamTS.UIUtils.CreateTextField(this);
            numOfColValueTextField.text              = $"{Settings.numOfCols}";
            numOfColValueTextField.width             = 70;
            numOfColValueTextField.relativePosition  = new Vector3(numOfColSlider.relativePosition.x + numOfColSlider.width + 15, numOfColSlider.relativePosition.y - 10);
            numOfColValueTextField.eventTextChanged += (c, p) =>
            {
                if (!int.TryParse(numOfColValueTextField.text, out int newValue))
                {
                    return;
                }
                if (newValue < 7 || newValue > 25)
                {
                    return;                                // too many cols will cause performance issues or even crash the game
                }
                Settings.numOfCols = newValue;
                XMLUtils.SaveSettings();
                numOfColSlider.value = newValue;
                if (Settings.expanded)
                {
                    YetAnotherToolbar.instance.Expand();
                }
                else
                {
                    YetAnotherToolbar.instance.Collapse();
                }
            };

            scaleLabel                  = AddUIComponent <UILabel>();
            scaleLabel.text             = Translations.Translate("YAT_QM_SCL");
            scaleLabel.textScale        = 0.8f;
            scaleLabel.textColor        = new Color32(0, 0, 0, 255);
            scaleLabel.relativePosition = new Vector3(title.relativePosition.x, numOfColLabel.relativePosition.y + numOfColLabel.height + 30);

            scaleSlider = SamsamTS.UIUtils.CreateSlider(this, Settings.toolbarScale, 0.5f, 1.5f, 0.05f);
            scaleSlider.relativePosition   = new Vector3(scaleLabel.relativePosition.x, scaleLabel.relativePosition.y + scaleLabel.height + 5);
            scaleSlider.eventValueChanged += (c, p) =>
            {
                Settings.toolbarScale = scaleSlider.value;
                XMLUtils.SaveSettings();
                scaleValueLabel.text = $"{Settings.toolbarScale * 100} %";
                YetAnotherToolbar.instance.UpdateScale(Settings.toolbarScale);
                YetAnotherToolbar.instance.UpdatePanelPosition();
            };

            scaleValueLabel                  = AddUIComponent <UILabel>();
            scaleValueLabel.text             = $"{Settings.toolbarScale * 100} %";
            scaleValueLabel.textScale        = 1.0f;
            scaleValueLabel.textColor        = new Color32(0, 0, 0, 255);
            scaleValueLabel.relativePosition = new Vector3(scaleSlider.relativePosition.x + scaleSlider.width + 30, scaleSlider.relativePosition.y);

            horizontalOffsetLabel                  = AddUIComponent <UILabel>();
            horizontalOffsetLabel.text             = Translations.Translate("YAT_QM_HOR");
            horizontalOffsetLabel.textScale        = 0.8f;
            horizontalOffsetLabel.textColor        = new Color32(0, 0, 0, 255);
            horizontalOffsetLabel.relativePosition = new Vector3(title.relativePosition.x, scaleSlider.relativePosition.y + scaleSlider.height + 20);

            horizontalOffsetSlider = SamsamTS.UIUtils.CreateSlider(this, Settings.horizontalOffset, -2000.0f, 2000f, 10.0f);
            horizontalOffsetSlider.relativePosition   = new Vector3(horizontalOffsetLabel.relativePosition.x, horizontalOffsetLabel.relativePosition.y + horizontalOffsetLabel.height + 5);
            horizontalOffsetSlider.eventValueChanged += (c, p) =>
            {
                if (horizontalOffsetSlider.value == Settings.horizontalOffset)
                {
                    return;
                }
                horizontalOffsetValueTextField.text = $"{horizontalOffsetSlider.value}";
            };

            horizontalOffsetValueTextField                   = SamsamTS.UIUtils.CreateTextField(this);
            horizontalOffsetValueTextField.text              = $"{Settings.horizontalOffset}";
            horizontalOffsetValueTextField.width             = 70;
            horizontalOffsetValueTextField.relativePosition  = new Vector3(horizontalOffsetSlider.relativePosition.x + horizontalOffsetSlider.width + 15, horizontalOffsetSlider.relativePosition.y - 10);
            horizontalOffsetValueTextField.eventTextChanged += (c, p) =>
            {
                if (!int.TryParse(horizontalOffsetValueTextField.text, out int newValue))
                {
                    return;
                }
                if (newValue < -2000 || newValue > 2000)
                {
                    return;                                      // reasonable range
                }
                Settings.horizontalOffset = newValue;
                XMLUtils.SaveSettings();
                horizontalOffsetSlider.value = newValue;
                YetAnotherToolbar.instance.UpdatePanelPosition();
            };

            verticalOffsetLabel                  = AddUIComponent <UILabel>();
            verticalOffsetLabel.text             = Translations.Translate("YAT_QM_VER");
            verticalOffsetLabel.textScale        = 0.8f;
            verticalOffsetLabel.textColor        = new Color32(0, 0, 0, 255);
            verticalOffsetLabel.relativePosition = new Vector3(title.relativePosition.x, horizontalOffsetLabel.relativePosition.y + horizontalOffsetLabel.height + 30);

            verticalOffsetSlider = SamsamTS.UIUtils.CreateSlider(this, Settings.verticalOffset, -1500.0f, 1500f, 10.0f);
            verticalOffsetSlider.relativePosition   = new Vector3(verticalOffsetLabel.relativePosition.x, verticalOffsetLabel.relativePosition.y + verticalOffsetLabel.height + 5);
            verticalOffsetSlider.eventValueChanged += (c, p) =>
            {
                if (verticalOffsetSlider.value == Settings.verticalOffset)
                {
                    return;
                }
                verticalOffsetValueTextField.text = $"{verticalOffsetSlider.value}";
            };

            verticalOffsetValueTextField                   = SamsamTS.UIUtils.CreateTextField(this);
            verticalOffsetValueTextField.text              = $"{Settings.verticalOffset}";
            verticalOffsetValueTextField.width             = 70;
            verticalOffsetValueTextField.relativePosition  = new Vector3(verticalOffsetSlider.relativePosition.x + verticalOffsetSlider.width + 15, verticalOffsetSlider.relativePosition.y - 10);
            verticalOffsetValueTextField.eventTextChanged += (c, p) =>
            {
                if (!int.TryParse(verticalOffsetValueTextField.text, out int newValue))
                {
                    return;
                }
                if (newValue < -1500 || newValue > 1500)
                {
                    return;                                      // reasonable range
                }
                Settings.verticalOffset = newValue;
                XMLUtils.SaveSettings();
                verticalOffsetSlider.value = newValue;
                YetAnotherToolbar.instance.UpdatePanelPosition();
            };

            tsBarOffsetLabel                  = AddUIComponent <UILabel>();
            tsBarOffsetLabel.text             = Translations.Translate("YAT_QM_TSO");
            tsBarOffsetLabel.textScale        = 0.8f;
            tsBarOffsetLabel.textColor        = new Color32(0, 0, 0, 255);
            tsBarOffsetLabel.relativePosition = new Vector3(title.relativePosition.x, verticalOffsetLabel.relativePosition.y + verticalOffsetLabel.height + 30);

            tsBarOffsetSlider = SamsamTS.UIUtils.CreateSlider(this, Settings.tsBarOffset, -1500.0f, 1500f, 10.0f);
            tsBarOffsetSlider.relativePosition   = new Vector3(tsBarOffsetLabel.relativePosition.x, tsBarOffsetLabel.relativePosition.y + tsBarOffsetLabel.height + 5);
            tsBarOffsetSlider.eventValueChanged += (c, p) =>
            {
                if (tsBarOffsetSlider.value == Settings.tsBarOffset)
                {
                    return;
                }
                tsBarOffsetValueTextField.text = $"{tsBarOffsetSlider.value}";
            };

            tsBarOffsetValueTextField                   = SamsamTS.UIUtils.CreateTextField(this);
            tsBarOffsetValueTextField.text              = $"{Settings.tsBarOffset}";
            tsBarOffsetValueTextField.width             = 70;
            tsBarOffsetValueTextField.relativePosition  = new Vector3(tsBarOffsetSlider.relativePosition.x + tsBarOffsetSlider.width + 15, tsBarOffsetSlider.relativePosition.y - 10);
            tsBarOffsetValueTextField.eventTextChanged += (c, p) =>
            {
                if (!int.TryParse(tsBarOffsetValueTextField.text, out int newValue))
                {
                    return;
                }
                if (newValue < -1500 || newValue > 1500)
                {
                    return;                                      // reasonable range
                }
                Settings.tsBarOffset = newValue;
                XMLUtils.SaveSettings();
                tsBarOffsetSlider.value = newValue;
                YetAnotherToolbar.instance.UpdateTSBarOffset();
            };

            backgroundLabel                  = AddUIComponent <UILabel>();
            backgroundLabel.text             = Translations.Translate("YAT_QM_BAC");
            backgroundLabel.textScale        = 0.8f;
            backgroundLabel.textColor        = new Color32(0, 0, 0, 255);
            backgroundLabel.relativePosition = new Vector3(title.relativePosition.x, tsBarOffsetLabel.relativePosition.y + tsBarOffsetLabel.height + 45);

            backgroundDropdown = SamsamTS.UIUtils.CreateDropDown(this);
            backgroundDropdown.normalBgSprite = "TextFieldPanelHovered";
            backgroundDropdown.size           = new Vector2(205, 25);
            backgroundDropdown.listHeight     = 270;
            backgroundDropdown.itemHeight     = 30;
            backgroundDropdown.AddItem(Translations.Translate("YAT_QM_DRK") + " - 100%");
            backgroundDropdown.AddItem(Translations.Translate("YAT_QM_DRK") + " - 75%");
            backgroundDropdown.AddItem(Translations.Translate("YAT_QM_DRK") + " - 50%");
            backgroundDropdown.AddItem(Translations.Translate("YAT_QM_DRK") + " - 25%");
            backgroundDropdown.AddItem(Translations.Translate("YAT_QM_TRS"));
            backgroundDropdown.AddItem(Translations.Translate("YAT_QM_LGH") + " - 100%");
            backgroundDropdown.AddItem(Translations.Translate("YAT_QM_LGH") + " - 75%");
            backgroundDropdown.AddItem(Translations.Translate("YAT_QM_LGH") + " - 50%");
            backgroundDropdown.AddItem(Translations.Translate("YAT_QM_LGH") + " - 25%");

            backgroundDropdown.selectedIndex              = Settings.backgroundOption;
            backgroundDropdown.relativePosition           = new Vector3(backgroundLabel.relativePosition.x + 230, backgroundLabel.relativePosition.y - 7f);
            backgroundDropdown.eventSelectedIndexChanged += (c, p) =>
            {
                Settings.backgroundOption = backgroundDropdown.selectedIndex;
                XMLUtils.SaveSettings();
                YetAnotherToolbar.instance.UpdateMainPanelBackground();
            };

            thumbnailBarBackgroundLabel                  = AddUIComponent <UILabel>();
            thumbnailBarBackgroundLabel.text             = Translations.Translate("YAT_QM_THM");
            thumbnailBarBackgroundLabel.textScale        = 0.8f;
            thumbnailBarBackgroundLabel.textColor        = new Color32(0, 0, 0, 255);
            thumbnailBarBackgroundLabel.relativePosition = new Vector3(title.relativePosition.x, backgroundLabel.relativePosition.y + backgroundLabel.height + 30);

            thumbnailBarbackgroundDropdown = SamsamTS.UIUtils.CreateDropDown(this);
            thumbnailBarbackgroundDropdown.normalBgSprite = "TextFieldPanelHovered";
            thumbnailBarbackgroundDropdown.size           = new Vector2(205, 25);
            thumbnailBarbackgroundDropdown.listHeight     = 270;
            thumbnailBarbackgroundDropdown.itemHeight     = 30;
            thumbnailBarbackgroundDropdown.AddItem(Translations.Translate("YAT_QM_PB_OR"));
            thumbnailBarbackgroundDropdown.AddItem(Translations.Translate("YAT_QM_DRK") + " - 75%");
            thumbnailBarbackgroundDropdown.AddItem(Translations.Translate("YAT_QM_DRK") + " - 50%");
            thumbnailBarbackgroundDropdown.AddItem(Translations.Translate("YAT_QM_DRK") + " - 25%");
            thumbnailBarbackgroundDropdown.AddItem(Translations.Translate("YAT_QM_TRS"));

            thumbnailBarbackgroundDropdown.selectedIndex              = Settings.thumbnailBarBackgroundOption;
            thumbnailBarbackgroundDropdown.relativePosition           = new Vector3(thumbnailBarBackgroundLabel.relativePosition.x + 230, thumbnailBarBackgroundLabel.relativePosition.y - 7f);
            thumbnailBarbackgroundDropdown.eventSelectedIndexChanged += (c, p) =>
            {
                Settings.thumbnailBarBackgroundOption = thumbnailBarbackgroundDropdown.selectedIndex;
                XMLUtils.SaveSettings();
                YetAnotherToolbar.instance.UpdateThumbnailBarBackground();
            };

            tsBarBackgroundLabel                  = AddUIComponent <UILabel>();
            tsBarBackgroundLabel.text             = Translations.Translate("YAT_QM_TSB");
            tsBarBackgroundLabel.textScale        = 0.8f;
            tsBarBackgroundLabel.textColor        = new Color32(0, 0, 0, 255);
            tsBarBackgroundLabel.relativePosition = new Vector3(title.relativePosition.x, thumbnailBarBackgroundLabel.relativePosition.y + thumbnailBarBackgroundLabel.height + 30);

            tsBarBackgroundDropdown = SamsamTS.UIUtils.CreateDropDown(this);
            tsBarBackgroundDropdown.normalBgSprite = "TextFieldPanelHovered";
            tsBarBackgroundDropdown.size           = new Vector2(205, 25);
            tsBarBackgroundDropdown.listHeight     = 270;
            tsBarBackgroundDropdown.itemHeight     = 30;
            tsBarBackgroundDropdown.AddItem(Translations.Translate("YAT_QM_PB_OR"));
            tsBarBackgroundDropdown.AddItem(Translations.Translate("YAT_QM_DRK") + " - 75%");
            tsBarBackgroundDropdown.AddItem(Translations.Translate("YAT_QM_DRK") + " - 50%");
            tsBarBackgroundDropdown.AddItem(Translations.Translate("YAT_QM_DRK") + " - 25%");
            tsBarBackgroundDropdown.AddItem(Translations.Translate("YAT_QM_TRS"));

            tsBarBackgroundDropdown.selectedIndex              = Settings.tsBarBackgroundOption;
            tsBarBackgroundDropdown.relativePosition           = new Vector3(tsBarBackgroundLabel.relativePosition.x + 230, tsBarBackgroundLabel.relativePosition.y - 7f);
            tsBarBackgroundDropdown.eventSelectedIndexChanged += (c, p) =>
            {
                Settings.tsBarBackgroundOption = tsBarBackgroundDropdown.selectedIndex;
                XMLUtils.SaveSettings();
                YetAnotherToolbar.instance.UpdateTSBarBackground();
            };

            infoPanelBackgroundLabel                  = AddUIComponent <UILabel>();
            infoPanelBackgroundLabel.text             = Translations.Translate("YAT_QM_IPB");
            infoPanelBackgroundLabel.textScale        = 0.8f;
            infoPanelBackgroundLabel.textColor        = new Color32(0, 0, 0, 255);
            infoPanelBackgroundLabel.relativePosition = new Vector3(title.relativePosition.x, tsBarBackgroundLabel.relativePosition.y + tsBarBackgroundLabel.height + 30);

            infoPanelBackgroundDropdown = SamsamTS.UIUtils.CreateDropDown(this);
            infoPanelBackgroundDropdown.normalBgSprite = "TextFieldPanelHovered";
            infoPanelBackgroundDropdown.size           = new Vector2(205, 25);
            infoPanelBackgroundDropdown.listHeight     = 270;
            infoPanelBackgroundDropdown.itemHeight     = 30;
            infoPanelBackgroundDropdown.AddItem(Translations.Translate("YAT_QM_PB_OR"));
            infoPanelBackgroundDropdown.AddItem(Translations.Translate("YAT_QM_DRK") + " - 75%");
            infoPanelBackgroundDropdown.AddItem(Translations.Translate("YAT_QM_DRK") + " - 50%");
            infoPanelBackgroundDropdown.AddItem(Translations.Translate("YAT_QM_DRK") + " - 25%");
            infoPanelBackgroundDropdown.AddItem(Translations.Translate("YAT_QM_TRS"));

            infoPanelBackgroundDropdown.selectedIndex              = Settings.infoPanelBackgroundOption;
            infoPanelBackgroundDropdown.relativePosition           = new Vector3(infoPanelBackgroundLabel.relativePosition.x + 230, infoPanelBackgroundLabel.relativePosition.y - 7f);
            infoPanelBackgroundDropdown.eventSelectedIndexChanged += (c, p) =>
            {
                Settings.infoPanelBackgroundOption = infoPanelBackgroundDropdown.selectedIndex;
                XMLUtils.SaveSettings();
                YetAnotherToolbar.instance.UpdateInfoPanelBackground();
            };

            AssetEditorModeCheck();
        }
Esempio n. 32
0
        public override void Start()
        {
            base.Start();

            // Zoning
            zoningToggles = new UICheckBox[10];
            zoningToggles[(int)Category.ResidentialLow] = UIUtils.CreateIconToggle(this, "Thumbnails", "ZoningResidentialLow", "ZoningResidentialLowDisabled");
            zoningToggles[(int)Category.ResidentialHigh] = UIUtils.CreateIconToggle(this, "Thumbnails", "ZoningResidentialHigh", "ZoningResidentialHighDisabled");
            zoningToggles[(int)Category.CommercialLow] = UIUtils.CreateIconToggle(this, "Thumbnails", "ZoningCommercialLow", "ZoningCommercialLowDisabled");
            zoningToggles[(int)Category.CommercialHigh] = UIUtils.CreateIconToggle(this, "Thumbnails", "ZoningCommercialHigh", "ZoningCommercialHighDisabled");
            zoningToggles[(int)Category.Industrial] = UIUtils.CreateIconToggle(this, "Thumbnails", "ZoningIndustrial", "ZoningIndustrialDisabled");
            zoningToggles[(int)Category.Farming] = UIUtils.CreateIconToggle(this, "Ingame", "IconPolicyFarming", "IconPolicyFarmingDisabled");
            zoningToggles[(int)Category.Forestry] = UIUtils.CreateIconToggle(this, "Ingame", "IconPolicyForest", "IconPolicyForestDisabled");
            zoningToggles[(int)Category.Oil] = UIUtils.CreateIconToggle(this, "Ingame", "IconPolicyOil", "IconPolicyOilDisabled");
            zoningToggles[(int)Category.Ore] = UIUtils.CreateIconToggle(this, "Ingame", "IconPolicyOre", "IconPolicyOreDisabled");
            zoningToggles[(int)Category.Office] = UIUtils.CreateIconToggle(this, "Thumbnails", "ZoningOffice", "ZoningOfficeDisabled");

            for (int i = 0; i < 10; i++)
            {
                zoningToggles[i].relativePosition = new Vector3(40 * i, 0);
                zoningToggles[i].isChecked = true;
                zoningToggles[i].readOnly = true;
                zoningToggles[i].checkedBoxObject.isInteractive = false; // Don't eat my double click event please

                zoningToggles[i].eventClick += (c, p) =>
                {
                    ((UICheckBox)c).isChecked = !((UICheckBox)c).isChecked;
                    eventFilteringChanged(this, 0);
                };

                zoningToggles[i].eventDoubleClick += (c, p) =>
                {
                    for (int j = 0; j < 10; j++)
                        zoningToggles[j].isChecked = false;
                    ((UICheckBox)c).isChecked = true;

                    eventFilteringChanged(this, 0);
                };
            }

            allZones = UIUtils.CreateButton(this);
            allZones.width = 55;
            allZones.text = "All";
            allZones.relativePosition = new Vector3(400, 5);

            allZones.eventClick += (c, p) =>
            {
                for (int i = 0; i < 10; i++)
                {
                    zoningToggles[i].isChecked = true;
                }
                eventFilteringChanged(this, 0);
            };

            noZones = UIUtils.CreateButton(this);
            noZones.width = 55;
            noZones.text = "None";
            noZones.relativePosition = new Vector3(460, 5);

            noZones.eventClick += (c, p) =>
            {
                for (int i = 0; i < 10; i++)
                {
                    zoningToggles[i].isChecked = false;
                }
                eventFilteringChanged(this, 0);
            };

            // Display
            UILabel display = AddUIComponent<UILabel>();
            display.textScale = 0.8f;
            display.padding = new RectOffset(0, 0, 8, 0);
            display.text = "Display: ";
            display.relativePosition = new Vector3(0, 40);

            origin = UIUtils.CreateDropDown(this);
            origin.width = 90;
            origin.AddItem("All");
            origin.AddItem("Default");
            origin.AddItem("Custom");
            origin.selectedIndex = 0;
            origin.relativePosition = new Vector3(display.relativePosition.x + display.width + 5, 40);

            origin.eventSelectedIndexChanged += (c, i) => eventFilteringChanged(this, 1);

            status = UIUtils.CreateDropDown(this);
            status.width = 90;
            status.AddItem("All");
            status.AddItem("Included");
            status.AddItem("Excluded");
            status.selectedIndex = 0;
            status.relativePosition = new Vector3(origin.relativePosition.x + origin.width + 5, 40);

            status.eventSelectedIndexChanged += (c, i) => eventFilteringChanged(this, 2);

            // Level
            UILabel levelLabel = AddUIComponent<UILabel>();
            levelLabel.textScale = 0.8f;
            levelLabel.padding = new RectOffset(0, 0, 8, 0);
            levelLabel.text = "Level: ";
            levelLabel.relativePosition = new Vector3(status.relativePosition.x + status.width + 10, 40);

            levelFilter = UIUtils.CreateDropDown(this);
            levelFilter.width = 55;
            levelFilter.AddItem("All");
            levelFilter.AddItem("1");
            levelFilter.AddItem("2");
            levelFilter.AddItem("3");
            levelFilter.AddItem("4");
            levelFilter.AddItem("5");
            levelFilter.selectedIndex = 0;
            levelFilter.relativePosition = new Vector3(levelLabel.relativePosition.x + levelLabel.width + 5, 40);

            levelFilter.eventSelectedIndexChanged += (c, i) => eventFilteringChanged(this, 3);

            // Size
            UILabel sizeLabel = AddUIComponent<UILabel>();
            sizeLabel.textScale = 0.8f;
            sizeLabel.padding = new RectOffset(0, 0, 8, 0);
            sizeLabel.text = "Size: ";
            sizeLabel.relativePosition = new Vector3(levelFilter.relativePosition.x + levelFilter.width + 10, 40);

            sizeFilterX = UIUtils.CreateDropDown(this);
            sizeFilterX.width = 55;
            sizeFilterX.AddItem("All");
            sizeFilterX.AddItem("1");
            sizeFilterX.AddItem("2");
            sizeFilterX.AddItem("3");
            sizeFilterX.AddItem("4");
            sizeFilterX.selectedIndex = 0;
            sizeFilterX.relativePosition = new Vector3(sizeLabel.relativePosition.x + sizeLabel.width + 5, 40);

            UILabel XLabel = AddUIComponent<UILabel>();
            XLabel.textScale = 0.8f;
            XLabel.padding = new RectOffset(0, 0, 8, 0);
            XLabel.text = "X";
            XLabel.isVisible = false;
            XLabel.relativePosition = new Vector3(sizeFilterX.relativePosition.x + sizeFilterX.width - 5, 40);

            sizeFilterY = UIUtils.CreateDropDown(this);
            sizeFilterY.width = 45;
            sizeFilterY.AddItem("1");
            sizeFilterY.AddItem("2");
            sizeFilterY.AddItem("3");
            sizeFilterY.AddItem("4");
            sizeFilterY.selectedIndex = 0;
            sizeFilterY.isVisible = false;
            sizeFilterY.relativePosition = new Vector3(XLabel.relativePosition.x + XLabel.width + 5, 40);

            sizeFilterX.eventSelectedIndexChanged += (c, i) =>
            {
                if (i == 0)
                {
                    sizeFilterX.width = 55;
                    XLabel.isVisible = false;
                    sizeFilterY.isVisible = false;
                }
                else
                {
                    sizeFilterX.width = 45;
                    XLabel.isVisible = true;
                    sizeFilterY.isVisible = true;
                }

                eventFilteringChanged(this, 4);
            };

            sizeFilterY.eventSelectedIndexChanged += (c, i) => eventFilteringChanged(this, 4);

            // Name filter
            UILabel nameLabel = AddUIComponent<UILabel>();
            nameLabel.textScale = 0.8f;
            nameLabel.padding = new RectOffset(0, 0, 8, 0);
            nameLabel.relativePosition = new Vector3(width - 250, 0);
            nameLabel.text = "Name: ";

            nameFilter = UIUtils.CreateTextField(this);
            nameFilter.width = 200;
            nameFilter.height = 30;
            nameFilter.padding = new RectOffset(6, 6, 6, 6);
            nameFilter.relativePosition = new Vector3(width - nameFilter.width, 0);

            nameFilter.eventTextChanged += (c, s) => eventFilteringChanged(this, 5);
            nameFilter.eventTextSubmitted += (c, s) => eventFilteringChanged(this, 5);
        }
Esempio n. 33
0
        public override void Start()
        {
            base.Start();

            // Zoning
            zoningToggles = new UICheckBox[NumOfCategories];
            for (int i = 0; i < NumOfCategories; i++)
            {
                zoningToggles[i] = UIUtils.CreateIconToggle(this, CategoryIcons.atlases[i], CategoryIcons.spriteNames[i], CategoryIcons.spriteNames[i] + "Disabled");
                zoningToggles[i].tooltip = CategoryIcons.tooltips[i];
                zoningToggles[i].relativePosition = new Vector3(40 * i, 0);
                zoningToggles[i].isChecked = true;
                zoningToggles[i].readOnly = true;
                zoningToggles[i].checkedBoxObject.isInteractive = false; // Don't eat my double click event please

                zoningToggles[i].eventClick += (c, p) =>
                {
                    ((UICheckBox)c).isChecked = !((UICheckBox)c).isChecked;
                    eventFilteringChanged(this, 0);
                };

                zoningToggles[i].eventDoubleClick += (c, p) =>
                {
                    for (int j = 0; j < NumOfCategories; j++)
                        zoningToggles[j].isChecked = false;
                    ((UICheckBox)c).isChecked = true;

                    eventFilteringChanged(this, 0);
                };
            }

            allZones = UIUtils.CreateButton(this);
            allZones.width = 55;
            allZones.text = "All";
            allZones.relativePosition = new Vector3(480, 5);

            allZones.eventClick += (c, p) =>
            {
                for (int i = 0; i < NumOfCategories; i++)
                {
                    zoningToggles[i].isChecked = true;
                }
                eventFilteringChanged(this, 0);
            };

            noZones = UIUtils.CreateButton(this);
            noZones.width = 55;
            noZones.text = "None";
            noZones.relativePosition = new Vector3(540, 5);

            noZones.eventClick += (c, p) =>
            {
                for (int i = 0; i < NumOfCategories; i++)
                {
                    zoningToggles[i].isChecked = false;
                }
                eventFilteringChanged(this, 0);
            };

            // Display
            UILabel display = AddUIComponent<UILabel>();
            display.textScale = 0.8f;
            display.padding = new RectOffset(0, 0, 8, 0);
            display.text = "Display: ";
            display.relativePosition = new Vector3(0, 40);

            origin = UIUtils.CreateDropDown(this);
            origin.width = 90;
            origin.AddItem("All");
            origin.AddItem("Default");
            origin.AddItem("Custom");
            origin.AddItem("Cloned");
            origin.selectedIndex = 0;
            origin.relativePosition = new Vector3(display.relativePosition.x + display.width + 5, 40);

            origin.eventSelectedIndexChanged += (c, i) => eventFilteringChanged(this, 1);

            status = UIUtils.CreateDropDown(this);
            status.width = 90;
            status.AddItem("All");
            status.AddItem("Included");
            status.AddItem("Excluded");
            status.selectedIndex = 0;
            status.relativePosition = new Vector3(origin.relativePosition.x + origin.width + 5, 40);

            status.eventSelectedIndexChanged += (c, i) => eventFilteringChanged(this, 2);

            // Level
            UILabel levelLabel = AddUIComponent<UILabel>();
            levelLabel.textScale = 0.8f;
            levelLabel.padding = new RectOffset(0, 0, 8, 0);
            levelLabel.text = "Level: ";
            levelLabel.relativePosition = new Vector3(status.relativePosition.x + status.width + 10, 40);

            levelFilter = UIUtils.CreateDropDown(this);
            levelFilter.width = 55;
            levelFilter.AddItem("All");
            levelFilter.AddItem("1");
            levelFilter.AddItem("2");
            levelFilter.AddItem("3");
            levelFilter.AddItem("4");
            levelFilter.AddItem("5");
            levelFilter.selectedIndex = 0;
            levelFilter.relativePosition = new Vector3(levelLabel.relativePosition.x + levelLabel.width + 5, 40);

            levelFilter.eventSelectedIndexChanged += (c, i) => eventFilteringChanged(this, 3);

            // Size
            UILabel sizeLabel = AddUIComponent<UILabel>();
            sizeLabel.textScale = 0.8f;
            sizeLabel.padding = new RectOffset(0, 0, 8, 0);
            sizeLabel.text = "Size: ";
            sizeLabel.relativePosition = new Vector3(levelFilter.relativePosition.x + levelFilter.width + 10, 40);

            sizeFilterX = UIUtils.CreateDropDown(this);
            sizeFilterX.width = 55;
            sizeFilterX.AddItem("All");
            sizeFilterX.AddItem("1");
            sizeFilterX.AddItem("2");
            sizeFilterX.AddItem("3");
            sizeFilterX.AddItem("4");
            sizeFilterX.selectedIndex = 0;
            sizeFilterX.relativePosition = new Vector3(sizeLabel.relativePosition.x + sizeLabel.width + 5, 40);

            UILabel XLabel = AddUIComponent<UILabel>();
            XLabel.textScale = 0.8f;
            XLabel.padding = new RectOffset(0, 0, 8, 0);
            XLabel.text = "X";
            XLabel.isVisible = false;
            XLabel.relativePosition = new Vector3(sizeFilterX.relativePosition.x + sizeFilterX.width - 5, 40);

            sizeFilterY = UIUtils.CreateDropDown(this);
            sizeFilterY.width = 45;
            sizeFilterY.AddItem("1");
            sizeFilterY.AddItem("2");
            sizeFilterY.AddItem("3");
            sizeFilterY.AddItem("4");
            sizeFilterY.selectedIndex = 0;
            sizeFilterY.isVisible = false;
            sizeFilterY.relativePosition = new Vector3(XLabel.relativePosition.x + XLabel.width + 5, 40);

            sizeFilterX.eventSelectedIndexChanged += (c, i) =>
            {
                if (i == 0)
                {
                    sizeFilterX.width = 55;
                    XLabel.isVisible = false;
                    sizeFilterY.isVisible = false;
                }
                else
                {
                    sizeFilterX.width = 45;
                    XLabel.isVisible = true;
                    sizeFilterY.isVisible = true;
                }

                eventFilteringChanged(this, 4);
            };

            sizeFilterY.eventSelectedIndexChanged += (c, i) => eventFilteringChanged(this, 4);

            // Name filter
            UILabel nameLabel = AddUIComponent<UILabel>();
            nameLabel.textScale = 0.8f;
            nameLabel.padding = new RectOffset(0, 0, 8, 0);
            nameLabel.relativePosition = new Vector3(width - 250, 0);
            nameLabel.text = "Name: ";

            nameFilter = UIUtils.CreateTextField(this);
            nameFilter.width = 200;
            nameFilter.height = 30;
            nameFilter.padding = new RectOffset(6, 6, 6, 6);
            nameFilter.relativePosition = new Vector3(width - nameFilter.width, 0);

            nameFilter.eventTextChanged += (c, s) => eventFilteringChanged(this, 5);
            nameFilter.eventTextSubmitted += (c, s) => eventFilteringChanged(this, 5);
        }