Exemplo n.º 1
0
 private void ShowPanel()
 {
     if (!m_panel.isVisible)
     {
         m_panel.isVisible = true;
         m_panel.BringToFront();
     }
 }
        private void CreateButton()
        {
            m_button                  = AddUIComponent <UIButton>();
            m_button.atlas            = ResourceLoader.GetAtlas("Ingame");
            m_button.name             = "FRT_MainButton";
            m_button.size             = new Vector2(36, 36);
            m_button.textScale        = 0.7f;
            m_button.playAudioEvents  = true;
            m_button.relativePosition = Vector2.zero;

            m_button.tooltip = "Fine Road Tool " + ModInfo.Version + "\n\nClick here for Tool Options";

            m_button.textColor        = Color.white;
            m_button.textScale        = 0.7f;
            m_button.dropShadowOffset = new Vector2(2, -2);
            m_button.useDropShadow    = true;

            m_button.textHorizontalAlignment = UIHorizontalAlignment.Center;
            m_button.wordWrap = true;

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

            m_button.eventClick += (c, p) => { base.OnClick(p); };

            eventCheckChanged += (c, isChecked) =>
            {
                if (isChecked)
                {
                    if (m_toolOptionsPanel.absolutePosition.x < 0)
                    {
                        m_toolOptionsPanel.absolutePosition = new Vector2(absolutePosition.x - ((m_toolOptionsPanel.width - m_button.width) / 2), absolutePosition.y - m_toolOptionsPanel.height);
                    }

                    Vector2 resolution = GetUIView().GetScreenResolution();

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

                    m_button.normalBgSprite = "OptionBaseFocused";

                    m_toolOptionsPanel.BringToFront();
                    UpdateInfo();
                    windowVisible.value = true;
                }
                else
                {
                    m_button.normalBgSprite = "OptionBase";
                    windowVisible.value     = false;
                }
                UpdateInfo();
            };
        }
Exemplo n.º 3
0
        internal void RenderList()
        {
            // Remove items
            foreach (var child in _items)
            {
                Destroy(child);
            }

            _items.Clear();

            // Add items
            var index = 0;

            foreach (var item in List)
            {
                DebugUtils.Log($"rendering item {index} {item.NetInfo} at {item.HorizontalOffset}");

                var comp = AddUIComponent <UINetTypeItem>();
                comp.NetInfo          = item.NetInfo;
                comp.HorizontalOffset = item.HorizontalOffset;
                comp.VerticalOffset   = item.VerticalOffset;
                comp.IsReversed       = item.IsReversed;
                comp.Index            = index++;

                comp.OnDeleteCallback = () =>
                {
                    // remove item from list
                    List.RemoveAt(comp.Index);
                    RenderList();
                    Changed();
                };

                comp.OnChangedCallback = () =>
                {
                    var i = List[comp.Index];
                    i.HorizontalOffset = comp.HorizontalOffset;
                    i.VerticalOffset   = comp.VerticalOffset;
                    i.NetInfo          = comp.DropDown.selectedIndex == 0
                        ? PrefabCollection <NetInfo> .FindLoaded(_currentTool.NetInfo.name)
                        : ParallelRoadTool.AvailableRoadTypes[comp.DropDown.selectedIndex];

                    i.IsReversed = comp.ReverseCheckbox.isChecked;

                    DebugUtils.Message(
                        $"OnChangedCallback item #{comp.Index}, net={i.NetInfo.GenerateBeautifiedNetName()}, HorizontalOffset={i.HorizontalOffset}, VerticalOffset={i.VerticalOffset}, IsReversed={i.IsReversed}");

                    Changed();
                };

                _items.Add(comp);
            }

            _space.BringToFront();
        }
Exemplo n.º 4
0
        public void RenderList()
        {
            // Remove items
            foreach (UINetTypeItem child in m_items)
            {
                Destroy(child);
            }

            m_items.Clear();

            // Add items
            int index = 0;

            foreach (NetTypeItem item in list)
            {
                DebugUtils.Log($"rendering item {index} {item.netInfo} at {item.offset}");
                var comp = AddUIComponent <UINetTypeItem>();
                comp.netInfo = item.netInfo;
                comp.offset  = item.offset;
                comp.index   = index++;
                //comp.RenderItem();

                comp.OnDeleteCallback = () =>
                {
                    // remove item from list
                    list.RemoveAt(comp.index);
                    RenderList();
                    Changed();
                };

                comp.OnChangedCallback = () =>
                {
                    //item.offset = comp.offset;
                    NetTypeItem i = list[comp.index];
                    i.offset = comp.offset;
                    DebugUtils.Message($"OnChangedCallback {comp.index} now at {item.offset}");
                    Changed();
                };

                m_items.Add(comp);
            }

            m_space.BringToFront();
        }
Exemplo n.º 5
0
        // This method has to be called when the theme list was modified!
        public static void RefreshThemesContainer()
        {
            if (container == null)
            {
                return;
            }

            themePolicyButtons.rowsData.m_buffer = BuildingThemesManager.instance.GetAllThemes().ToArray();
            themePolicyButtons.rowsData.m_size   = themePolicyButtons.rowsData.m_buffer.Length;
            Array.Sort(themePolicyButtons.rowsData.m_buffer as Configuration.Theme[], ThemeCompare);

            controls.autoSize         = true;
            themePolicyButtons.height = Mathf.Min(themePolicyButtons.rowsData.m_size * themePolicyButtons.rowHeight, container.height - controls.height - 5);
            themePolicyButtons.Refresh();

            if (controls != null)
            {
                controls.BringToFront();
            }
        }
Exemplo n.º 6
0
        private void init()
        {
            //create panel
            infoPanel       = (UIPanel)UIView.GetAView().AddUIComponent(typeof(UIPanel));
            infoPanel.size  = size;
            infoPanel.name  = "infoPanel";
            infoPanel.color = new Color32(0, 0, 100, 230);

            //init some settings
            infoPanel.backgroundSprite    = "GenericPanel";
            infoPanel.autoLayoutDirection = LayoutDirection.Vertical;
            infoPanel.autoLayoutStart     = LayoutStart.TopLeft;
            infoPanel.autoLayout          = true;
            infoPanel.autoLayoutPadding   = new RectOffset(0, 0, 0, 0);
            infoPanel.CenterToParent();
            infoPanel.eventClick += new MouseEventHandler(panelClick);

            //not sure if even needed
            infoPanel.Start();
            infoPanel.Update();


            //header Panel
            UIPanel headerpanel;

            headerpanel                  = (UIPanel)infoPanel.AddUIComponent(typeof(UIPanel));
            headerpanel.height           = 35;
            headerpanel.width            = size.x;
            headerpanel.backgroundSprite = "GenericPanel";
            headerpanel.color            = new Color32(0, 0, 100, 200);

            //header text
            UILabel headertext;

            headertext      = headerpanel.AddUIComponent <UILabel>();
            headertext.text = "City Zones";
            headertext.CenterToParent();

            infoPanel.BringToFront();
            infoPanel.position = new Vector3(-Screen.width + (size.x + 110), (size.y / 2) + 40, 0);
        }//end init
Exemplo n.º 7
0
        public void AddItem(NetTypeItem item, bool isCurrentItem = false)
        {
            var component = AddUIComponent <UINetTypeItem>();

            if (!isCurrentItem)
            {
                component.NetInfo          = item.NetInfo;
                component.HorizontalOffset = item.HorizontalOffset;
                component.VerticalOffset   = item.VerticalOffset;
                component.IsReversed       = item.IsReversed;
                component.Index            = _items.Count;
                component.OnChanged       += UiNetTypeItemOnOnChanged;
                component.OnDeleteClicked += UiNetTypeItemOnOnDeleteClicked;
                _items.Add(component);
            }
            else
            {
                component.OnAddClicked += UiNetTypeItemOnOnAddClicked;
                component.IsCurrentItem = true;
            }

            _space.BringToFront();
        }
        internal void CreateGraphics()
        {
            try {
                var uiView = UIView.GetAView();
                TextureDB.LoadFavCimsTextures();
                Atlas.LoadAtlasIcons();

                ////////////////////////////////////////////////
                ///////////Favorite Button Manu Panel/////////
                ///////////////////////////////////////////////

                //MainMenuPos = UIView.GetAView().FindUIComponent<UITabstrip> ("MainToolstrip");
                MainMenuPos = UIView.Find <UITabstrip> ("MainToolstrip");

                if (MainMenuPos.Find <FavoritesCimsButton>("FavCimsMenuPanel") != null)
                {
                    FavCimsMenuPanel = MainMenuPos.Find <FavoritesCimsButton>("FavCimsMenuPanel");
                }
                else
                {
                    FavCimsMenuPanel = MainMenuPos.AddUIComponent(typeof(FavoritesCimsButton)) as FavoritesCimsButton;
                }

                ////////////////////////////////////////////////
                ////////////////Favorite Panel////////////////
                ///////////////////////////////////////////////

                FullScreenContainer = UIView.Find <UIPanel> ("FullScreenContainer");
                FavCimsPanel        = FullScreenContainer.AddUIComponent <FavoriteCimsMainPanel> ();
                FavCimsPanel.Hide();

                FullScreenContainer.eventMouseDown += delegate {
                    if (!FavCimsPanel.containsMouse)
                    {
                        FavCimsPanel.SendToBack();
                    }
                    else
                    {
                        FavCimsPanel.BringToFront();
                    }
                };

                ////////////////////////////////////////////////
                ////////////Humans Button & Subscribe///////////
                ///////////////////////////////////////////////

                FavCimsHumanPanel = FullScreenContainer.Find <UIPanel> ("(Library) CitizenWorldInfoPanel");

                if (FavCimsHumanPanel != null)
                {
                    if (FavCimsHumanPanel.GetComponentInChildren <AddToFavButton>() != null)
                    {
                        FavStarButton = FavCimsHumanPanel.GetComponentInChildren <AddToFavButton>();
                    }
                    else
                    {
                        FavStarButton = FavCimsHumanPanel.AddUIComponent(typeof(AddToFavButton)) as AddToFavButton;
                    }
                }

                GenerateFamilyDetailsTpl();
            } catch (Exception e) {
                Debug.Error("OnLoad List Error : " + e.ToString());
            }
        }
Exemplo n.º 9
0
        private void SetupControls()
        {
            UIPanel panel = AddUIComponent <UIPanel>();

            panel.gameObject.AddComponent <UICustomControl>();

            panel.backgroundSprite = "UnlockingPanel";
            panel.width            = width - 10;
            panel.height           = height - 75;
            panel.relativePosition = new Vector3(5, 0);

            // Max Speed
            UILabel maxSpeedLabel = panel.AddUIComponent <UILabel>();

            maxSpeedLabel.text             = Translations.Translate("AVO_MOD_OP06");
            maxSpeedLabel.textScale        = 0.8f;
            maxSpeedLabel.relativePosition = new Vector3(15, 14);

            m_maxSpeed = UIUtils.CreateTextField(panel);
            m_maxSpeed.numericalOnly    = true;
            m_maxSpeed.width            = 75;
            m_maxSpeed.tooltip          = Translations.Translate("AVO_MOD_OP07");
            m_maxSpeed.relativePosition = new Vector3(15, 33);

            kmhLabel                  = panel.AddUIComponent <UILabel>();
            kmhLabel.text             = "km/h";
            kmhLabel.textScale        = 0.8f;
            kmhLabel.relativePosition = new Vector3(95, 38);

            // Acceleration
            UILabel accelerationLabel = panel.AddUIComponent <UILabel>();

            accelerationLabel.text             = Translations.Translate("AVO_MOD_OP08");
            accelerationLabel.textScale        = 0.8f;
            accelerationLabel.relativePosition = new Vector3(160, 13);

            m_acceleration = UIUtils.CreateTextField(panel);
            m_acceleration.numericalOnly    = true;
            m_acceleration.allowFloats      = true;
            m_acceleration.width            = 60;
            m_acceleration.tooltip          = Translations.Translate("AVO_MOD_OP09");
            m_acceleration.relativePosition = new Vector3(160, 33);

            // Braking
            m_braking = UIUtils.CreateTextField(panel);
            m_braking.numericalOnly    = true;
            m_braking.allowFloats      = true;
            m_braking.width            = 60;
            m_braking.tooltip          = Translations.Translate("AVO_MOD_OP10");
            m_braking.relativePosition = new Vector3(230, 33);

            // Turning
            m_turning = UIUtils.CreateTextField(panel);
            m_turning.numericalOnly    = true;
            m_turning.allowFloats      = true;
            m_turning.width            = 60;
            m_turning.tooltip          = Translations.Translate("AVO_MOD_OP11");
            m_turning.relativePosition = new Vector3(300, 33);

            // Springs
            UILabel springsLabel = panel.AddUIComponent <UILabel>();

            springsLabel.text             = Translations.Translate("AVO_MOD_OP12");
            springsLabel.textScale        = 0.8f;
            springsLabel.relativePosition = new Vector3(15, 66);

            m_springs = UIUtils.CreateTextField(panel);
            m_springs.numericalOnly    = true;
            m_springs.allowFloats      = true;
            m_springs.width            = 60;
            m_springs.tooltip          = Translations.Translate("AVO_MOD_OP13");
            m_springs.relativePosition = new Vector3(15, 85);

            // Dampers
            m_dampers = UIUtils.CreateTextField(panel);
            m_dampers.numericalOnly    = true;
            m_dampers.allowFloats      = true;
            m_dampers.width            = 60;
            m_dampers.tooltip          = Translations.Translate("AVO_MOD_OP14");
            m_dampers.relativePosition = new Vector3(85, 85);

            // LeanMultiplier
            UILabel leanMultiplierLabel = panel.AddUIComponent <UILabel>();

            leanMultiplierLabel.text             = Translations.Translate("AVO_MOD_OP15");
            leanMultiplierLabel.textScale        = 0.8f;
            leanMultiplierLabel.relativePosition = new Vector3(160, 66);

            m_leanMultiplier = UIUtils.CreateTextField(panel);
            m_leanMultiplier.numericalOnly    = true;
            m_leanMultiplier.allowFloats      = true;
            m_leanMultiplier.width            = 60;
            m_leanMultiplier.tooltip          = Translations.Translate("AVO_MOD_OP16");
            m_leanMultiplier.relativePosition = new Vector3(160, 85);

            // NodMultiplier
            m_nodMultiplier = UIUtils.CreateTextField(panel);
            m_nodMultiplier.numericalOnly    = true;
            m_nodMultiplier.allowFloats      = true;
            m_nodMultiplier.width            = 60;
            m_nodMultiplier.tooltip          = Translations.Translate("AVO_MOD_OP17");
            m_nodMultiplier.relativePosition = new Vector3(230, 85);

            // Colors
            m_useColors                  = UIUtils.CreateCheckBox(panel);
            m_useColors.text             = Translations.Translate("AVO_MOD_OP18");
            m_useColors.isChecked        = true;
            m_useColors.width            = width - 40;
            m_useColors.tooltip          = Translations.Translate("AVO_MOD_OP19");
            m_useColors.relativePosition = new Vector3(15, 116);

            m_color0                      = UIUtils.CreateColorField(panel);
            m_color0.name                 = "AVO-color0";
            m_color0.popupTopmostRoot     = false;
            m_color0.relativePosition     = new Vector3(35, 135);
            m_color0_hex                  = UIUtils.CreateTextField(panel);
            m_color0_hex.maxLength        = 6;
            m_color0_hex.relativePosition = new Vector3(80, 137);

            m_color1                      = UIUtils.CreateColorField(panel);
            m_color1.name                 = "AVO-color1";
            m_color1.popupTopmostRoot     = false;
            m_color1.relativePosition     = new Vector3(35, 160);
            m_color1_hex                  = UIUtils.CreateTextField(panel);
            m_color1_hex.maxLength        = 6;
            m_color1_hex.relativePosition = new Vector3(80, 162);

            m_color2                      = UIUtils.CreateColorField(panel);
            m_color2.name                 = "AVO-color2";
            m_color2.popupTopmostRoot     = false;
            m_color2.relativePosition     = new Vector3(182, 135);
            m_color2_hex                  = UIUtils.CreateTextField(panel);
            m_color2_hex.maxLength        = 6;
            m_color2_hex.relativePosition = new Vector3(225, 137);

            m_color3                      = UIUtils.CreateColorField(panel);
            m_color3.name                 = "AVO-color3";
            m_color3.popupTopmostRoot     = false;
            m_color3.relativePosition     = new Vector3(182, 160);
            m_color3_hex                  = UIUtils.CreateTextField(panel);
            m_color3_hex.maxLength        = 6;
            m_color3_hex.relativePosition = new Vector3(225, 162);

            m_useColorsLabel = panel.AddUIComponent <UILabel>();
            m_useColorsLabel.Hide();
            m_useColorsLabel.textScale        = 0.8f;
            m_useColorsLabel.text             = Translations.Translate("AVO_MOD_OP20");
            m_useColorsLabel.relativePosition = new Vector3(15, 116);

            // Enable & BackEngine
            m_enabled                  = UIUtils.CreateCheckBox(panel);
            m_enabled.text             = Translations.Translate("AVO_MOD_OP21");
            m_enabled.isChecked        = true;
            m_enabled.width            = width - 40;
            m_enabled.tooltip          = Translations.Translate("AVO_MOD_OP22");
            m_enabled.relativePosition = new Vector3(15, 195);

            m_addBackEngine                  = UIUtils.CreateCheckBox(panel);
            m_addBackEngine.text             = Translations.Translate("AVO_MOD_OP23");
            m_addBackEngine.isChecked        = false;
            m_addBackEngine.width            = width - 40;
            m_addBackEngine.tooltip          = Translations.Translate("AVO_MOD_OP24");
            m_addBackEngine.relativePosition = new Vector3(15, 215);

            // LargeVehicle Setting for NoBigTruck Delivery Mod
            m_isLargeVehicle                  = UIUtils.CreateCheckBox(panel);
            m_isLargeVehicle.text             = Translations.Translate("AVO_MOD_OP25");
            m_isLargeVehicle.width            = width - 40;
            m_isLargeVehicle.tooltip          = Translations.Translate("AVO_MOD_OP26");
            m_isLargeVehicle.relativePosition = new Vector3(15, 215);

            // Capacity
            UIPanel capacityPanel = panel.AddUIComponent <UIPanel>();

            capacityPanel.size             = Vector2.zero;
            capacityPanel.relativePosition = new Vector3(15, 240);

            capacityLabel                  = capacityPanel.AddUIComponent <UILabel>();
            capacityLabel.text             = Translations.Translate("AVO_MOD_CAPA");
            capacityLabel.textScale        = 0.8f;
            capacityLabel.relativePosition = new Vector3(0, 2);

            m_capacity = UIUtils.CreateTextField(capacityPanel);
            m_capacity.numericalOnly    = true;
            m_capacity.maxLength        = 8;
            m_capacity.width            = 100;
            m_capacity.tooltip          = Translations.Translate("AVO_MOD_OP27");
            m_capacity.relativePosition = new Vector3(0, 21);

            m_planesize                  = capacityPanel.AddUIComponent <UILabel>();
            m_planesize.textScale        = 0.8f;
            m_planesize.relativePosition = new Vector3(170, 2);

            // Special Capacity
            specialcapacityLabel = capacityPanel.AddUIComponent <UILabel>();
            specialcapacityLabel.Hide();
            specialcapacityLabel.text             = Translations.Translate("AVO_MOD_OP28");
            specialcapacityLabel.textScale        = 0.8f;
            specialcapacityLabel.relativePosition = new Vector3(160, 2);

            m_specialcapacity = UIUtils.CreateTextField(capacityPanel);
            m_specialcapacity.Hide();
            m_specialcapacity.numericalOnly    = true;
            m_specialcapacity.maxLength        = 8;
            m_specialcapacity.width            = 100;
            m_specialcapacity.tooltip          = Translations.Translate("AVO_MOD_OP29");
            m_specialcapacity.relativePosition = new Vector3(160, 21);

            // Userguide Special Capacity Button
            m_userguidespecialcapacity = UIUtils.CreateButton(capacityPanel);
            m_userguidespecialcapacity.Hide();
            m_userguidespecialcapacity.normalBgSprite   = "EconomyMoreInfo";
            m_userguidespecialcapacity.hoveredBgSprite  = "EconomyMoreInfoHovered";
            m_userguidespecialcapacity.size             = new Vector2(14f, 14f);
            m_userguidespecialcapacity.tooltip          = Translations.Translate("AVO_MOD_OP30");
            m_userguidespecialcapacity.relativePosition = new Vector3(265, 24);

            // Transport Line Overview Button
            m_lineoverview = UIUtils.CreateButton(panel);
            m_lineoverview.Hide();
            m_lineoverview.textScale             = 0.8f;
            m_lineoverview.height                = 18;
            m_lineoverview.textVerticalAlignment = UIVerticalAlignment.Bottom;
            m_lineoverview.text             = Translations.Translate("AVO_MOD_OP31");
            m_lineoverview.width            = 335;
            m_lineoverview.tooltip          = Translations.Translate("AVO_MOD_OP32");
            m_lineoverview.relativePosition = new Vector3(15, 194);

            // Userguide Spawn Button
            m_userguidespawn = UIUtils.CreateButton(panel);
            m_userguidespawn.Hide();
            m_userguidespawn.normalBgSprite   = "EconomyMoreInfo";
            m_userguidespawn.hoveredBgSprite  = "EconomyMoreInfoHovered";
            m_userguidespawn.size             = new Vector2(14f, 14f);
            m_userguidespawn.tooltip          = Translations.Translate("AVO_MOD_OP33");
            m_userguidespawn.relativePosition = new Vector3(355, 195);

            // Buslabel
            bustrailerLabel                  = panel.AddUIComponent <UILabel>();
            bustrailerLabel.textScale        = 0.8f;
            bustrailerLabel.text             = Translations.Translate("AVO_MOD_OP34");
            bustrailerLabel.relativePosition = new Vector3(15, 194);

            // Restore default
            m_restore                  = UIUtils.CreateButton(panel);
            m_restore.text             = Translations.Translate("AVO_MOD_OP35");
            m_restore.width            = 120;
            m_restore.tooltip          = Translations.Translate("AVO_MOD_OP36");
            m_restore.relativePosition = new Vector3(250, height - 45);

            // Remove Vehicles
            m_removeLabel                  = this.AddUIComponent <UILabel>();
            m_removeLabel.text             = Translations.Translate("AVO_MOD_OP37");
            m_removeLabel.textScale        = 0.8f;
            m_removeLabel.relativePosition = new Vector3(10, height - 65);

            m_clearVehicles                  = UIUtils.CreateButton(this);
            m_clearVehicles.text             = Translations.Translate("AVO_MOD_OP38");
            m_clearVehicles.width            = 120;
            m_clearVehicles.tooltip          = Translations.Translate("AVO_MOD_OP39");
            m_clearVehicles.relativePosition = new Vector3(5, height - 45);

            m_clearParked                  = UIUtils.CreateButton(this);
            m_clearParked.text             = Translations.Translate("AVO_MOD_OP40");
            m_clearParked.width            = 120;
            m_clearParked.tooltip          = Translations.Translate("AVO_MOD_OP41");
            m_clearParked.relativePosition = new Vector3(130, height - 45);

            panel.BringToFront();

            // Event handlers
            m_maxSpeed.eventTextSubmitted       += OnMaxSpeedSubmitted;
            m_acceleration.eventTextSubmitted   += OnAccelerationSubmitted;
            m_braking.eventTextSubmitted        += OnBrakingSubmitted;
            m_turning.eventTextSubmitted        += OnTurningSubmitted;
            m_springs.eventTextSubmitted        += OnSpringsSubmitted;
            m_dampers.eventTextSubmitted        += OnDampersSubmitted;
            m_leanMultiplier.eventTextSubmitted += OnleanMultiplierSubmitted;
            m_nodMultiplier.eventTextSubmitted  += OnnodMultiplierSubmitted;

            m_useColors.eventCheckChanged += OnCheckChanged;

            MouseEventHandler mousehandler = (c, p) => { if (m_initialized)
                                                         {
                                                             (parent as UIMainPanel).ChangePreviewColor((c as UIColorField).selectedColor);
                                                         }
            };

            m_color0.eventMouseEnter += mousehandler;
            m_color1.eventMouseEnter += mousehandler;
            m_color2.eventMouseEnter += mousehandler;
            m_color3.eventMouseEnter += mousehandler;

            m_color0_hex.eventMouseEnter += (c, p) => { if (m_initialized)
                                                        {
                                                            (parent as UIMainPanel).ChangePreviewColor(m_color0.selectedColor);
                                                        }
            };
            m_color1_hex.eventMouseEnter += (c, p) => { if (m_initialized)
                                                        {
                                                            (parent as UIMainPanel).ChangePreviewColor(m_color1.selectedColor);
                                                        }
            };
            m_color2_hex.eventMouseEnter += (c, p) => { if (m_initialized)
                                                        {
                                                            (parent as UIMainPanel).ChangePreviewColor(m_color2.selectedColor);
                                                        }
            };
            m_color3_hex.eventMouseEnter += (c, p) => { if (m_initialized)
                                                        {
                                                            (parent as UIMainPanel).ChangePreviewColor(m_color3.selectedColor);
                                                        }
            };

            m_color0.eventSelectedColorChanged += OnColorChanged;
            m_color1.eventSelectedColorChanged += OnColorChanged;
            m_color2.eventSelectedColorChanged += OnColorChanged;
            m_color3.eventSelectedColorChanged += OnColorChanged;

            m_color0_hex.eventTextSubmitted += OnColorHexSubmitted;
            m_color1_hex.eventTextSubmitted += OnColorHexSubmitted;
            m_color2_hex.eventTextSubmitted += OnColorHexSubmitted;
            m_color3_hex.eventTextSubmitted += OnColorHexSubmitted;

            m_enabled.eventCheckChanged        += OnCheckChanged;
            m_addBackEngine.eventCheckChanged  += OnCheckChanged;
            m_isLargeVehicle.eventCheckChanged += OnCheckChanged;

            m_capacity.eventTextSubmitted        += OnCapacitySubmitted;
            m_specialcapacity.eventTextSubmitted += OnSpecialCapacitySubmitted;

            m_restore.eventClick += (c, p) =>
            {
                m_initialized = false;
                bool isEnabled = m_options.enabled;
                DefaultOptions.Restore(m_options.prefab);
                VehicleOptions.UpdateTransfertVehicles();

                VehicleOptions.prefabUpdateEngine = m_options.prefab;
                VehicleOptions.prefabUpdateUnits  = m_options.prefab;
                SimulationManager.instance.AddAction(VehicleOptions.UpdateBackEngines);
                SimulationManager.instance.AddAction(VehicleOptions.UpdateCapacityUnits);

                Show(m_options);

                if (m_options.enabled != isEnabled)
                {
                    eventEnableCheckChanged(this, m_options.enabled);
                }
            };

            m_clearVehicles.eventClick            += OnClearVehicleClicked;
            m_clearParked.eventClick              += OnClearVehicleClicked;
            m_lineoverview.eventClick             += OnlineoverviewClicked;
            m_userguidespawn.eventClick           += OnUserGuideSpawnClicked;
            m_userguidespecialcapacity.eventClick += OnUserGuideSpecialCapacityClicked;
        }
        internal void CreateGraphics()
        {
            try {

                var uiView = UIView.GetAView();
                TextureDB.LoadFavCimsTextures();
                Atlas.LoadAtlasIcons();

                ////////////////////////////////////////////////
                ///////////Favorite Button Manu Panel/////////
                ///////////////////////////////////////////////

                //MainMenuPos = UIView.GetAView().FindUIComponent<UITabstrip> ("MainToolstrip");
                MainMenuPos = UIView.Find<UITabstrip> ("MainToolstrip");

                if(MainMenuPos.Find<FavoritesCimsButton>("FavCimsMenuPanel") != null) {
                    FavCimsMenuPanel = MainMenuPos.Find<FavoritesCimsButton>("FavCimsMenuPanel");
                }else{
                    FavCimsMenuPanel = MainMenuPos.AddUIComponent(typeof(FavoritesCimsButton)) as FavoritesCimsButton;
                }

                ////////////////////////////////////////////////
                ////////////////Favorite Panel////////////////
                ///////////////////////////////////////////////

                FullScreenContainer = UIView.Find<UIPanel> ("FullScreenContainer");
                FavCimsPanel = FullScreenContainer.AddUIComponent<FavoriteCimsMainPanel> ();
                FavCimsPanel.Hide ();

                FullScreenContainer.eventMouseDown += delegate {
                    if (!FavCimsPanel.containsMouse) {
                        FavCimsPanel.SendToBack ();
                    } else {
                        FavCimsPanel.BringToFront ();
                    }
                };

                ////////////////////////////////////////////////
                ////////////Humans Button & Subscribe///////////
                ///////////////////////////////////////////////

                FavCimsHumanPanel = FullScreenContainer.Find<UIPanel> ("(Library) CitizenWorldInfoPanel");

                if (FavCimsHumanPanel != null) {
                    if(FavCimsHumanPanel.GetComponentInChildren<AddToFavButton>() != null) {
                        FavStarButton = FavCimsHumanPanel.GetComponentInChildren<AddToFavButton>();
                    }else{
                        FavStarButton = FavCimsHumanPanel.AddUIComponent(typeof(AddToFavButton)) as AddToFavButton;
                    }
                }

                GenerateFamilyDetailsTpl();

            } catch (Exception e) {
                Debug.Error ("OnLoad List Error : " + e.ToString ());
            }
        }
        private void SetupControls()
        {
            UIPanel panel = AddUIComponent <UIPanel>();

            panel.gameObject.AddComponent <UICustomControl>();

            panel.backgroundSprite = "UnlockingPanel";
            panel.width            = width - 10;
            panel.height           = height - 75;
            panel.relativePosition = new Vector3(5, 0);

            // Max Speed
            UILabel maxSpeedLabel = panel.AddUIComponent <UILabel>();

            maxSpeedLabel.text             = "Maximum speed:";
            maxSpeedLabel.textScale        = 0.8f;
            maxSpeedLabel.relativePosition = new Vector3(15, 15);

            m_maxSpeed = UIUtils.CreateTextField(panel);
            m_maxSpeed.numericalOnly    = true;
            m_maxSpeed.width            = 75;
            m_maxSpeed.tooltip          = "Change the maximum speed of the vehicle\nPlease note that vehicles do not go beyond speed limits";
            m_maxSpeed.relativePosition = new Vector3(15, 35);

            UILabel kmh = panel.AddUIComponent <UILabel>();

            kmh.text             = "km/h";
            kmh.textScale        = 0.8f;
            kmh.relativePosition = new Vector3(95, 40);

            // Acceleration
            UILabel accelerationLabel = panel.AddUIComponent <UILabel>();

            accelerationLabel.text             = "Acceleration/Brake:";
            accelerationLabel.textScale        = 0.8f;
            accelerationLabel.relativePosition = new Vector3(160, 15);

            m_acceleration = UIUtils.CreateTextField(panel);
            m_acceleration.numericalOnly    = true;
            m_acceleration.allowFloats      = true;
            m_acceleration.width            = 60;
            m_acceleration.tooltip          = "Change the vehicle acceleration factor";
            m_acceleration.relativePosition = new Vector3(160, 35);

            // Braking
            m_braking = UIUtils.CreateTextField(panel);
            m_braking.numericalOnly    = true;
            m_braking.allowFloats      = true;
            m_braking.width            = 60;
            m_braking.tooltip          = "Change the vehicle braking factor";
            m_braking.relativePosition = new Vector3(230, 35);

            // Colors
            m_useColors                  = UIUtils.CreateCheckBox(panel);
            m_useColors.text             = "Color variations:";
            m_useColors.isChecked        = true;
            m_useColors.width            = width - 40;
            m_useColors.tooltip          = "Enable color variations\nA random color is chosen between the four following colors";
            m_useColors.relativePosition = new Vector3(15, 70);

            m_color0                      = UIUtils.CreateColorField(panel);
            m_color0.name                 = "AVO-color0";
            m_color0.popupTopmostRoot     = false;
            m_color0.relativePosition     = new Vector3(13, 95 - 2);
            m_color0_hex                  = UIUtils.CreateTextField(panel);
            m_color0_hex.maxLength        = 6;
            m_color0_hex.relativePosition = new Vector3(55, 95);

            m_color1                      = UIUtils.CreateColorField(panel);
            m_color1.name                 = "AVO-color1";
            m_color1.popupTopmostRoot     = false;
            m_color1.relativePosition     = new Vector3(13, 120 - 2);
            m_color1_hex                  = UIUtils.CreateTextField(panel);
            m_color1_hex.maxLength        = 6;
            m_color1_hex.relativePosition = new Vector3(55, 120);

            m_color2                      = UIUtils.CreateColorField(panel);
            m_color2.name                 = "AVO-color2";
            m_color2.popupTopmostRoot     = false;
            m_color2.relativePosition     = new Vector3(158, 95 - 2);
            m_color2_hex                  = UIUtils.CreateTextField(panel);
            m_color2_hex.maxLength        = 6;
            m_color2_hex.relativePosition = new Vector3(200, 95);

            m_color3                      = UIUtils.CreateColorField(panel);
            m_color3.name                 = "AVO-color3";
            m_color3.popupTopmostRoot     = false;
            m_color3.relativePosition     = new Vector3(158, 120 - 2);
            m_color3_hex                  = UIUtils.CreateTextField(panel);
            m_color3_hex.maxLength        = 6;
            m_color3_hex.relativePosition = new Vector3(200, 120);

            // Enable & BackEngine
            m_enabled                  = UIUtils.CreateCheckBox(panel);
            m_enabled.text             = "Allow this vehicle to spawn";
            m_enabled.isChecked        = true;
            m_enabled.width            = width - 40;
            m_enabled.tooltip          = "Make sure you have at least one vehicle allowed to spawn for that category";
            m_enabled.relativePosition = new Vector3(15, 155);;

            m_addBackEngine                  = UIUtils.CreateCheckBox(panel);
            m_addBackEngine.text             = "Replace last car with engine";
            m_addBackEngine.isChecked        = false;
            m_addBackEngine.width            = width - 40;
            m_addBackEngine.tooltip          = "Make the last car of this train be an engine";
            m_addBackEngine.relativePosition = new Vector3(15, 175);

            // Capacity
            UIPanel capacityPanel = panel.AddUIComponent <UIPanel>();

            capacityPanel.size             = Vector2.zero;
            capacityPanel.relativePosition = new Vector3(15, 200);

            UILabel capacityLabel = capacityPanel.AddUIComponent <UILabel>();

            capacityLabel.text             = "Capacity:";
            capacityLabel.textScale        = 0.8f;
            capacityLabel.relativePosition = Vector3.zero;

            m_capacity = UIUtils.CreateTextField(capacityPanel);
            m_capacity.numericalOnly    = true;
            m_capacity.width            = 110;
            m_capacity.tooltip          = "Change the capacity of the vehicle";
            m_capacity.relativePosition = new Vector3(0, 20);

            // Restore default
            m_restore                  = UIUtils.CreateButton(panel);
            m_restore.text             = "Restore default";
            m_restore.width            = 130;
            m_restore.tooltip          = "Restore all values to default";
            m_restore.relativePosition = new Vector3(160, 215);

            // Remove Vehicles
            m_removeLabel                  = this.AddUIComponent <UILabel>();
            m_removeLabel.text             = "Remove vehicles:";
            m_removeLabel.textScale        = 0.8f;
            m_removeLabel.relativePosition = new Vector3(10, height - 60);

            m_clearVehicles                  = UIUtils.CreateButton(this);
            m_clearVehicles.text             = "Driving";
            m_clearVehicles.width            = 90f;
            m_clearVehicles.tooltip          = "Remove all driving vehicles of that type\nHold the SHIFT key to remove all types";
            m_clearVehicles.relativePosition = new Vector3(10, height - 40);

            m_clearParked                  = UIUtils.CreateButton(this);
            m_clearParked.text             = "Parked";
            m_clearParked.width            = 90f;
            m_clearParked.tooltip          = "Remove all parked vehicles of that type\nHold the SHIFT key to remove all types";
            m_clearParked.relativePosition = new Vector3(105, height - 40);

            panel.BringToFront();

            // Event handlers
            m_maxSpeed.eventTextSubmitted     += OnMaxSpeedSubmitted;
            m_acceleration.eventTextSubmitted += OnAccelerationSubmitted;
            m_braking.eventTextSubmitted      += OnBrakingSubmitted;

            m_useColors.eventCheckChanged += OnCheckChanged;

            MouseEventHandler mousehandler = (c, p) => { if (m_initialized)
                                                         {
                                                             (parent as UIMainPanel).ChangePreviewColor((c as UIColorField).selectedColor);
                                                         }
            };

            m_color0.eventMouseEnter += mousehandler;
            m_color1.eventMouseEnter += mousehandler;
            m_color2.eventMouseEnter += mousehandler;
            m_color3.eventMouseEnter += mousehandler;

            m_color0_hex.eventMouseEnter += (c, p) => { if (m_initialized)
                                                        {
                                                            (parent as UIMainPanel).ChangePreviewColor(m_color0.selectedColor);
                                                        }
            };
            m_color1_hex.eventMouseEnter += (c, p) => { if (m_initialized)
                                                        {
                                                            (parent as UIMainPanel).ChangePreviewColor(m_color1.selectedColor);
                                                        }
            };
            m_color2_hex.eventMouseEnter += (c, p) => { if (m_initialized)
                                                        {
                                                            (parent as UIMainPanel).ChangePreviewColor(m_color2.selectedColor);
                                                        }
            };
            m_color3_hex.eventMouseEnter += (c, p) => { if (m_initialized)
                                                        {
                                                            (parent as UIMainPanel).ChangePreviewColor(m_color3.selectedColor);
                                                        }
            };

            m_color0.eventSelectedColorChanged += OnColorChanged;
            m_color1.eventSelectedColorChanged += OnColorChanged;
            m_color2.eventSelectedColorChanged += OnColorChanged;
            m_color3.eventSelectedColorChanged += OnColorChanged;

            m_color0_hex.eventTextSubmitted += OnColorHexSubmitted;
            m_color1_hex.eventTextSubmitted += OnColorHexSubmitted;
            m_color2_hex.eventTextSubmitted += OnColorHexSubmitted;
            m_color3_hex.eventTextSubmitted += OnColorHexSubmitted;

            m_enabled.eventCheckChanged       += OnCheckChanged;
            m_addBackEngine.eventCheckChanged += OnCheckChanged;

            m_capacity.eventTextSubmitted += OnCapacitySubmitted;

            m_restore.eventClick += (c, p) =>
            {
                m_initialized = false;
                bool isEnabled = m_options.enabled;
                DefaultOptions.Restore(m_options.prefab);
                VehicleOptions.UpdateTransfertVehicles();

                VehicleOptions.prefabUpdateEngine = m_options.prefab;
                VehicleOptions.prefabUpdateUnits  = m_options.prefab;
                new EnumerableActionThread(VehicleOptions.UpdateBackEngines);
                new EnumerableActionThread(VehicleOptions.UpdateCapacityUnits);

                Show(m_options);

                if (m_options.enabled != isEnabled)
                {
                    eventEnableCheckChanged(this, m_options.enabled);
                }
            };

            m_clearVehicles.eventClick += OnClearVehicleClicked;
            m_clearParked.eventClick   += OnClearVehicleClicked;
        }
        private void SetupControls()
        {
            UIPanel panel = AddUIComponent <UIPanel>();

            panel.gameObject.AddComponent <UICustomControl>();

            panel.backgroundSprite = "UnlockingPanel";
            panel.width            = width - 10;
            panel.height           = height - 75;
            panel.relativePosition = new Vector3(5, 0);

            // Max Speed
            UILabel maxSpeedLabel = panel.AddUIComponent <UILabel>();

            maxSpeedLabel.text             = "Maximum speed:";
            maxSpeedLabel.textScale        = 0.8f;
            maxSpeedLabel.relativePosition = new Vector3(15, 14);

            m_maxSpeed = UIUtils.CreateTextField(panel);
            m_maxSpeed.numericalOnly    = true;
            m_maxSpeed.width            = 75;
            m_maxSpeed.tooltip          = "Change the maximum speed of the vehicle\nPlease note that vehicles do not go beyond speed limits";
            m_maxSpeed.relativePosition = new Vector3(15, 33);

            kmhLabel                  = panel.AddUIComponent <UILabel>();
            kmhLabel.text             = "km/h";
            kmhLabel.textScale        = 0.8f;
            kmhLabel.relativePosition = new Vector3(95, 38);

            // Acceleration
            UILabel accelerationLabel = panel.AddUIComponent <UILabel>();

            accelerationLabel.text             = "Acceleration/Brake/Turning:";
            accelerationLabel.textScale        = 0.8f;
            accelerationLabel.relativePosition = new Vector3(160, 13);

            m_acceleration = UIUtils.CreateTextField(panel);
            m_acceleration.numericalOnly    = true;
            m_acceleration.allowFloats      = true;
            m_acceleration.width            = 60;
            m_acceleration.tooltip          = "Change the vehicle acceleration factor";
            m_acceleration.relativePosition = new Vector3(160, 33);

            // Braking
            m_braking = UIUtils.CreateTextField(panel);
            m_braking.numericalOnly    = true;
            m_braking.allowFloats      = true;
            m_braking.width            = 60;
            m_braking.tooltip          = "Change the vehicle braking factor";
            m_braking.relativePosition = new Vector3(230, 33);

            // Turning
            m_turning = UIUtils.CreateTextField(panel);
            m_turning.numericalOnly    = true;
            m_turning.allowFloats      = true;
            m_turning.width            = 60;
            m_turning.tooltip          = "Change the vehicle turning factor;\nDefines how well the car corners";
            m_turning.relativePosition = new Vector3(300, 33);

            // Springs
            UILabel springsLabel = panel.AddUIComponent <UILabel>();

            springsLabel.text             = "Springs/Dampers:";
            springsLabel.textScale        = 0.8f;
            springsLabel.relativePosition = new Vector3(15, 66);

            m_springs = UIUtils.CreateTextField(panel);
            m_springs.numericalOnly    = true;
            m_springs.allowFloats      = true;
            m_springs.width            = 60;
            m_springs.tooltip          = "Change the vehicle spring factor;\nDefines how much the suspension moves";
            m_springs.relativePosition = new Vector3(15, 85);

            // Dampers
            m_dampers = UIUtils.CreateTextField(panel);
            m_dampers.numericalOnly    = true;
            m_dampers.allowFloats      = true;
            m_dampers.width            = 60;
            m_dampers.tooltip          = "Change the vehicle damper factor;\nDefines how quickly the suspension returns to the default state";
            m_dampers.relativePosition = new Vector3(85, 85);

            // LeanMultiplier
            UILabel leanMultiplierLabel = panel.AddUIComponent <UILabel>();

            leanMultiplierLabel.text             = "Lean/Nod Multiplier:";
            leanMultiplierLabel.textScale        = 0.8f;
            leanMultiplierLabel.relativePosition = new Vector3(160, 66);

            m_leanMultiplier = UIUtils.CreateTextField(panel);
            m_leanMultiplier.numericalOnly    = true;
            m_leanMultiplier.allowFloats      = true;
            m_leanMultiplier.width            = 60;
            m_leanMultiplier.tooltip          = "Change the vehicle lean multiplication factor;\nDefines how much the vehicle leans to the sides when turning";
            m_leanMultiplier.relativePosition = new Vector3(160, 85);

            // NodMultiplier
            m_nodMultiplier = UIUtils.CreateTextField(panel);
            m_nodMultiplier.numericalOnly    = true;
            m_nodMultiplier.allowFloats      = true;
            m_nodMultiplier.width            = 60;
            m_nodMultiplier.tooltip          = "Change the vehicle nod multiplication factor;\nDefines how much the vehicle nods forward/backward when braking or accelerating";
            m_nodMultiplier.relativePosition = new Vector3(230, 85);

            // Colors
            m_useColors                  = UIUtils.CreateCheckBox(panel);
            m_useColors.text             = "Enable Color variations:";
            m_useColors.isChecked        = true;
            m_useColors.width            = width - 40;
            m_useColors.tooltip          = "Enable color variations\nA random color is chosen between the four following colors";
            m_useColors.relativePosition = new Vector3(15, 116);

            m_color0                      = UIUtils.CreateColorField(panel);
            m_color0.name                 = "AVO-color0";
            m_color0.popupTopmostRoot     = false;
            m_color0.relativePosition     = new Vector3(35, 135);
            m_color0_hex                  = UIUtils.CreateTextField(panel);
            m_color0_hex.maxLength        = 6;
            m_color0_hex.relativePosition = new Vector3(80, 137);

            m_color1                      = UIUtils.CreateColorField(panel);
            m_color1.name                 = "AVO-color1";
            m_color1.popupTopmostRoot     = false;
            m_color1.relativePosition     = new Vector3(35, 160);
            m_color1_hex                  = UIUtils.CreateTextField(panel);
            m_color1_hex.maxLength        = 6;
            m_color1_hex.relativePosition = new Vector3(80, 162);

            m_color2                      = UIUtils.CreateColorField(panel);
            m_color2.name                 = "AVO-color2";
            m_color2.popupTopmostRoot     = false;
            m_color2.relativePosition     = new Vector3(182, 135);
            m_color2_hex                  = UIUtils.CreateTextField(panel);
            m_color2_hex.maxLength        = 6;
            m_color2_hex.relativePosition = new Vector3(225, 137);

            m_color3                      = UIUtils.CreateColorField(panel);
            m_color3.name                 = "AVO-color3";
            m_color3.popupTopmostRoot     = false;
            m_color3.relativePosition     = new Vector3(182, 160);
            m_color3_hex                  = UIUtils.CreateTextField(panel);
            m_color3_hex.maxLength        = 6;
            m_color3_hex.relativePosition = new Vector3(225, 162);

            m_useColorsLabel = panel.AddUIComponent <UILabel>();
            m_useColorsLabel.Hide();
            m_useColorsLabel.textScale        = 0.8f;
            m_useColorsLabel.text             = "Colors are managed by Vehicle Color Expander";
            m_useColorsLabel.relativePosition = new Vector3(15, 116);

            // Enable & BackEngine
            m_enabled                  = UIUtils.CreateCheckBox(panel);
            m_enabled.text             = "Allow this vehicle to spawn";
            m_enabled.isChecked        = true;
            m_enabled.width            = width - 40;
            m_enabled.tooltip          = "Make sure you have at least one vehicle allowed to spawn for that category";
            m_enabled.relativePosition = new Vector3(15, 195);;

            m_addBackEngine                  = UIUtils.CreateCheckBox(panel);
            m_addBackEngine.text             = "Replace last car with engine";
            m_addBackEngine.isChecked        = false;
            m_addBackEngine.width            = width - 40;
            m_addBackEngine.tooltip          = "Make the last car of this train be an engine";
            m_addBackEngine.relativePosition = new Vector3(15, 215);

            // LargeVehicle Setting for NoBigTruck Delivery Mod
            m_isLargeVehicle                  = UIUtils.CreateCheckBox(panel);
            m_isLargeVehicle.text             = "Flag as Large Vehicle";
            m_isLargeVehicle.width            = width - 40;
            m_isLargeVehicle.tooltip          = "Prevent vehicles with trailer to deliver to small buildings\n\nNeeds No Big Trucks mod to work";
            m_isLargeVehicle.relativePosition = new Vector3(15, 215);

            // Capacity
            UIPanel capacityPanel = panel.AddUIComponent <UIPanel>();

            capacityPanel.size             = Vector2.zero;
            capacityPanel.relativePosition = new Vector3(15, 240);

            capacityLabel                  = capacityPanel.AddUIComponent <UILabel>();
            capacityLabel.text             = "Capacity: ";
            capacityLabel.textScale        = 0.8f;
            capacityLabel.relativePosition = new Vector3(0, 2);

            m_capacity = UIUtils.CreateTextField(capacityPanel);
            m_capacity.numericalOnly    = true;
            m_capacity.maxLength        = 8;
            m_capacity.width            = 100;
            m_capacity.tooltip          = "Change the capacity of the vehicle";
            m_capacity.relativePosition = new Vector3(0, 21);

            // Special Capacity
            specialcapacityLabel = capacityPanel.AddUIComponent <UILabel>();
            specialcapacityLabel.Hide();
            specialcapacityLabel.text             = "Special Capacity: ";
            specialcapacityLabel.textScale        = 0.8f;
            specialcapacityLabel.relativePosition = new Vector3(160, 2);

            m_specialcapacity = UIUtils.CreateTextField(capacityPanel);
            m_specialcapacity.Hide();
            m_specialcapacity.numericalOnly    = true;
            m_specialcapacity.maxLength        = 8;
            m_specialcapacity.width            = 100;
            m_specialcapacity.tooltip          = "Change special parameters of the vehicle";
            m_specialcapacity.relativePosition = new Vector3(160, 21);

            // Userguide Special Capacity Button
            m_userguidespecialcapacity = UIUtils.CreateButton(capacityPanel);
            m_userguidespecialcapacity.Hide();
            m_userguidespecialcapacity.normalBgSprite   = "EconomyMoreInfo";
            m_userguidespecialcapacity.hoveredBgSprite  = "EconomyMoreInfoHovered";
            m_userguidespecialcapacity.size             = new Vector2(14f, 14f);
            m_userguidespecialcapacity.tooltip          = "If you do not know, what this value is:\nDo not touch it!\n\nClick for User Guide: Special Capacity";
            m_userguidespecialcapacity.relativePosition = new Vector3(265, 24);

            // Transport Line Overview Button
            m_lineoverview = UIUtils.CreateButton(panel);
            m_lineoverview.Hide();
            m_lineoverview.textScale             = 0.8f;
            m_lineoverview.height                = 18;
            m_lineoverview.textVerticalAlignment = UIVerticalAlignment.Bottom;
            m_lineoverview.text             = "Manage Spawning in Transport Line Overview";
            m_lineoverview.width            = 335;
            m_lineoverview.tooltip          = "Open the Transport Line Overview and manage the vehicle spawning";
            m_lineoverview.relativePosition = new Vector3(15, 194);

            // Userguide Spawn Button
            m_userguidespawn = UIUtils.CreateButton(panel);
            m_userguidespawn.Hide();
            m_userguidespawn.normalBgSprite   = "EconomyMoreInfo";
            m_userguidespawn.hoveredBgSprite  = "EconomyMoreInfoHovered";
            m_userguidespawn.size             = new Vector2(14f, 14f);
            m_userguidespawn.tooltip          = "Click for User Guide: Spawn Control";
            m_userguidespawn.relativePosition = new Vector3(355, 195);

            // Buslabel
            bustrailerLabel           = panel.AddUIComponent <UILabel>();
            bustrailerLabel.textScale = 0.8f;
            bustrailerLabel.text      = "Bus trailers spawning is controlled by the main\n" +
                                        "Bus vehicle. Settings must be configured from\n" +
                                        "the Transport Line Overview panel.";
            bustrailerLabel.relativePosition = new Vector3(15, 194);

            // Restore default
            m_restore                  = UIUtils.CreateButton(panel);
            m_restore.text             = "Default Values";
            m_restore.width            = 120;
            m_restore.tooltip          = "Restore all values to default";
            m_restore.relativePosition = new Vector3(250, height - 45);

            // Remove Vehicles
            m_removeLabel                  = this.AddUIComponent <UILabel>();
            m_removeLabel.text             = "Global Actions for: ";
            m_removeLabel.textScale        = 0.8f;
            m_removeLabel.relativePosition = new Vector3(10, height - 65);

            m_clearVehicles                  = UIUtils.CreateButton(this);
            m_clearVehicles.text             = "Remove Driving";
            m_clearVehicles.width            = 120;
            m_clearVehicles.tooltip          = "Remove all driving vehicles of that type\nHold the SHIFT key to remove all types";
            m_clearVehicles.relativePosition = new Vector3(5, height - 45);

            m_clearParked                  = UIUtils.CreateButton(this);
            m_clearParked.text             = "Remove Parked";
            m_clearParked.width            = 120;
            m_clearParked.tooltip          = "Remove all parked vehicles of that type\nHold the SHIFT key to remove all types";
            m_clearParked.relativePosition = new Vector3(130, height - 45);

            panel.BringToFront();

            // Event handlers
            m_maxSpeed.eventTextSubmitted       += OnMaxSpeedSubmitted;
            m_acceleration.eventTextSubmitted   += OnAccelerationSubmitted;
            m_braking.eventTextSubmitted        += OnBrakingSubmitted;
            m_turning.eventTextSubmitted        += OnTurningSubmitted;
            m_springs.eventTextSubmitted        += OnSpringsSubmitted;
            m_dampers.eventTextSubmitted        += OnDampersSubmitted;
            m_leanMultiplier.eventTextSubmitted += OnleanMultiplierSubmitted;
            m_nodMultiplier.eventTextSubmitted  += OnnodMultiplierSubmitted;

            m_useColors.eventCheckChanged += OnCheckChanged;

            MouseEventHandler mousehandler = (c, p) => { if (m_initialized)
                                                         {
                                                             (parent as UIMainPanel).ChangePreviewColor((c as UIColorField).selectedColor);
                                                         }
            };

            m_color0.eventMouseEnter += mousehandler;
            m_color1.eventMouseEnter += mousehandler;
            m_color2.eventMouseEnter += mousehandler;
            m_color3.eventMouseEnter += mousehandler;

            m_color0_hex.eventMouseEnter += (c, p) => { if (m_initialized)
                                                        {
                                                            (parent as UIMainPanel).ChangePreviewColor(m_color0.selectedColor);
                                                        }
            };
            m_color1_hex.eventMouseEnter += (c, p) => { if (m_initialized)
                                                        {
                                                            (parent as UIMainPanel).ChangePreviewColor(m_color1.selectedColor);
                                                        }
            };
            m_color2_hex.eventMouseEnter += (c, p) => { if (m_initialized)
                                                        {
                                                            (parent as UIMainPanel).ChangePreviewColor(m_color2.selectedColor);
                                                        }
            };
            m_color3_hex.eventMouseEnter += (c, p) => { if (m_initialized)
                                                        {
                                                            (parent as UIMainPanel).ChangePreviewColor(m_color3.selectedColor);
                                                        }
            };

            m_color0.eventSelectedColorChanged += OnColorChanged;
            m_color1.eventSelectedColorChanged += OnColorChanged;
            m_color2.eventSelectedColorChanged += OnColorChanged;
            m_color3.eventSelectedColorChanged += OnColorChanged;

            m_color0_hex.eventTextSubmitted += OnColorHexSubmitted;
            m_color1_hex.eventTextSubmitted += OnColorHexSubmitted;
            m_color2_hex.eventTextSubmitted += OnColorHexSubmitted;
            m_color3_hex.eventTextSubmitted += OnColorHexSubmitted;

            m_enabled.eventCheckChanged        += OnCheckChanged;
            m_addBackEngine.eventCheckChanged  += OnCheckChanged;
            m_isLargeVehicle.eventCheckChanged += OnCheckChanged;

            m_capacity.eventTextSubmitted        += OnCapacitySubmitted;
            m_specialcapacity.eventTextSubmitted += OnSpecialCapacitySubmitted;

            m_restore.eventClick += (c, p) =>
            {
                m_initialized = false;
                bool isEnabled = m_options.enabled;
                DefaultOptions.Restore(m_options.prefab);
                VehicleOptions.UpdateTransfertVehicles();

                VehicleOptions.prefabUpdateEngine = m_options.prefab;
                VehicleOptions.prefabUpdateUnits  = m_options.prefab;
                new EnumerableActionThread(VehicleOptions.UpdateBackEngines);
                new EnumerableActionThread(VehicleOptions.UpdateCapacityUnits);

                Show(m_options);

                if (m_options.enabled != isEnabled)
                {
                    eventEnableCheckChanged(this, m_options.enabled);
                }
            };

            m_clearVehicles.eventClick            += OnClearVehicleClicked;
            m_clearParked.eventClick              += OnClearVehicleClicked;
            m_lineoverview.eventClick             += OnlineoverviewClicked;
            m_userguidespawn.eventClick           += OnUserGuideSpawnClicked;
            m_userguidespecialcapacity.eventClick += OnUserGuideSpecialCapacityClicked;
        }