Exemplo n.º 1
0
        public static void SetupBrushStrengthPanel(UIComponent brushOptionsPanel)
        {
            var brushStrengthPanel = brushOptionsPanel.AddUIComponent<UIPanel>();
            brushStrengthPanel.size = new Vector2(197, 49);
            brushStrengthPanel.relativePosition = new Vector2(17, 110);
            brushStrengthPanel.name = "Strength";
            var brushStrengthLabel = brushStrengthPanel.AddUIComponent<UILabel>();
            brushStrengthLabel.localeID = "MAPEDITOR_BRUSHSTRENGTH";
            brushStrengthLabel.size = new Vector2(131, 19);
            brushStrengthLabel.relativePosition = new Vector3(-5, 7);
            var brushStrengthText = brushStrengthPanel.AddUIComponent<UITextField>();
            brushStrengthText.name = "BrushStrength";
            brushStrengthText.size = new Vector2(60, 18);
            brushStrengthText.normalBgSprite = "TextFieldPanel";
            brushStrengthText.relativePosition = new Vector3(125, 7, 0);
            brushStrengthText.builtinKeyNavigation = true;
            brushStrengthText.isInteractive = true;
            brushStrengthText.readOnly = false;
            brushStrengthText.selectionSprite = "EmptySprite";
            brushStrengthText.selectionBackgroundColor = new Color32(0, 172, 234, 255);

            var brushStrengthSlider = brushStrengthPanel.AddUIComponent<UISlider>();
            brushStrengthSlider.name = "BrushStrength";
            brushStrengthSlider.relativePosition = new Vector3(13, 30, 0);
            brushStrengthSlider.backgroundSprite = "ScrollbarTrack";
            brushStrengthSlider.size = new Vector2(171, 12);
            brushStrengthSlider.minValue = 0;
            brushStrengthSlider.maxValue = 1;
            brushStrengthSlider.stepSize = 0.01f;
            var brushStrengthSliderThumb = brushStrengthSlider.AddUIComponent<UISlicedSprite>();
            brushStrengthSliderThumb.spriteName = "ScrollbarThumb";
            brushStrengthSliderThumb.size = new Vector2(10, 20);
            brushStrengthSlider.thumbObject = brushStrengthSliderThumb;
        }
Exemplo n.º 2
0
        public static UICheckBox CreateCheckBox(UIComponent parent)
        {
            UICheckBox checkBox = parent.AddUIComponent<UICheckBox>();

            checkBox.width = parent.width;
            checkBox.height = 20f;
            checkBox.clipChildren = true;

            UISprite sprite = checkBox.AddUIComponent<UISprite>();
            sprite.spriteName = "ToggleBase";
            sprite.size = new Vector2(16f, 16f);
            sprite.relativePosition = Vector3.zero;

            checkBox.checkedBoxObject = sprite.AddUIComponent<UISprite>();
            ((UISprite)checkBox.checkedBoxObject).spriteName = "ToggleBaseFocused";
            checkBox.checkedBoxObject.size = new Vector2(16f, 16f);
            checkBox.checkedBoxObject.relativePosition = Vector3.zero;

            checkBox.label = checkBox.AddUIComponent<UILabel>();
            checkBox.label.text = " ";
            checkBox.label.textScale = 0.9f;
            checkBox.label.relativePosition = new Vector3(22f, 2f);

            return checkBox;
        }
Exemplo n.º 3
0
        public static UIDropDown CreateDropDown(UIComponent parent)
        {
            UIDropDown dropDown = parent.AddUIComponent<UIDropDown>();
            dropDown.atlas = defaultAtlas;
            dropDown.size = new Vector2(90f, 30f);
            dropDown.listBackground = "GenericPanelLight";
            dropDown.itemHeight = 30;
            dropDown.itemHover = "ListItemHover";
            dropDown.itemHighlight = "ListItemHighlight";
            dropDown.normalBgSprite = "ButtonMenu";
            dropDown.disabledBgSprite = "ButtonMenuDisabled";
            dropDown.hoveredBgSprite = "ButtonMenuHovered";
            dropDown.focusedBgSprite = "ButtonMenu";
            dropDown.listWidth = 90;
            dropDown.listHeight = 500;
            dropDown.foregroundSpriteMode = UIForegroundSpriteMode.Stretch;
            dropDown.popupColor = new Color32(45, 52, 61, 255);
            dropDown.popupTextColor = new Color32(170, 170, 170, 255);
            dropDown.zOrder = 1;
            dropDown.textScale = 0.8f;
            dropDown.verticalAlignment = UIVerticalAlignment.Middle;
            dropDown.horizontalAlignment = UIHorizontalAlignment.Left;
            dropDown.selectedIndex = 0;
            dropDown.textFieldPadding = new RectOffset(8, 0, 8, 0);
            dropDown.itemPadding = new RectOffset(14, 0, 8, 0);

            UIButton button = dropDown.AddUIComponent<UIButton>();
            dropDown.triggerButton = button;
            button.atlas = defaultAtlas;
            button.text = "";
            button.size = dropDown.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;

            dropDown.eventSizeChanged += new PropertyChangedEventHandler<Vector2>((c, t) =>
            {
                button.size = t; dropDown.listWidth = (int)t.x;
            });

            return dropDown;
        }
Exemplo n.º 4
0
        // Figuring all this was a pain (no documentation whatsoever)
        // So if your are using it for your mod consider thanking me (SamsamTS)
        // Extended Public Transport UI's code helped me a lot so thanks a lot AcidFire
        public static UIButton CreateButton(UIComponent parent)
        {
            UIButton button = (UIButton)parent.AddUIComponent<UIButton>();
            button.atlas = defaultAtlas;
            button.size = new Vector2(90f, 30f);
            button.textScale = 0.9f;
            button.normalBgSprite = "ButtonMenu";
            button.hoveredBgSprite = "ButtonMenuHovered";
            button.pressedBgSprite = "ButtonMenuPressed";
            button.canFocus = false;

            return button;
        }
Exemplo n.º 5
0
        // Figuring all this was a pain (no documentation whatsoever)
        // So if your are using it for your mod consider thanking me (SamsamTS)
        // Extended Public Transport UI's code helped me a lot so thanks a lot AcidFire
        public static UIButton CreateButton(UIComponent parent)
        {
            UIButton button = parent.AddUIComponent<UIButton>();

            button.size = new Vector2(90f, 30f);
            button.textScale = 0.9f;
            button.normalBgSprite = "ButtonMenu";
            button.hoveredBgSprite = "ButtonMenuHovered";
            button.pressedBgSprite = "ButtonMenuPressed";
            button.disabledBgSprite = "ButtonMenuDisabled";
            button.disabledTextColor = new Color32(128, 128, 128, 255);
            button.canFocus = false;

            return button;
        }
Exemplo n.º 6
0
        public static void SetupTitle(string text, UIComponent parentPanel)
        {
            var title = parentPanel.AddUIComponent<UIPanel>();
            title.size = new Vector2(parentPanel.width, 40);
            title.canFocus = true;
            title.isInteractive = true;
            title.relativePosition = Vector3.zero;

            var dragHandle = title.AddUIComponent<UIDragHandle>();
            dragHandle.size = title.size;
            dragHandle.relativePosition = Vector3.zero;
            dragHandle.target = parentPanel;

            var windowName = dragHandle.AddUIComponent<UILabel>();
            windowName.relativePosition = new Vector3(60, 13);
            windowName.text = text;
        }
Exemplo n.º 7
0
 public static void SetupBrushSelectPanel(UIComponent brushOptionsPanel)
 {
     var brushSelectPanel = brushOptionsPanel.AddUIComponent<UIPanel>();
     brushSelectPanel.size = new Vector2(255, 321);
     brushSelectPanel.relativePosition = new Vector2(3, 180);
     brushSelectPanel.name = "Brushes";
     var scrollablePanel = brushSelectPanel.AddUIComponent<UIScrollablePanel>();
     scrollablePanel.name = "BrushesContainer";
     scrollablePanel.size = new Vector2(219, 321);
     scrollablePanel.relativePosition = new Vector2(3, 0);
     scrollablePanel.backgroundSprite = "GenericPanel";
     scrollablePanel.autoLayout = true;
     scrollablePanel.autoLayoutDirection = LayoutDirection.Horizontal;
     scrollablePanel.autoLayoutStart = LayoutStart.TopLeft;
     scrollablePanel.autoLayoutPadding = new RectOffset(5, 5, 5, 5);
     scrollablePanel.scrollPadding = new RectOffset(10, 10, 10, 10);
     scrollablePanel.wrapLayout = true;
     scrollablePanel.clipChildren = true;
     scrollablePanel.freeScroll = false;
     var verticalScrollbar = UIUtil.SetUpScrollbar(brushSelectPanel);
     scrollablePanel.verticalScrollbar = verticalScrollbar;
     verticalScrollbar.relativePosition = new Vector2(206, 0);
 }
        public static UIScrollbar SetUpScrollbar(UIComponent comp)
        {
            var scrollbar = comp.AddUIComponent<UIScrollbar>();
            scrollbar.name = "Scrollbar";
            scrollbar.width = 20f;
            scrollbar.height = comp.height;
            scrollbar.orientation = UIOrientation.Vertical;
            scrollbar.pivot = UIPivotPoint.BottomLeft;
            scrollbar.AlignTo(comp, UIAlignAnchor.TopRight);
            scrollbar.minValue = 0;
            scrollbar.value = 0;
            scrollbar.incrementAmount = 50;

            UISlicedSprite tracSprite = scrollbar.AddUIComponent<UISlicedSprite>();
            tracSprite.relativePosition = Vector2.zero;
            tracSprite.autoSize = true;
            tracSprite.size = tracSprite.parent.size;
            tracSprite.fillDirection = UIFillDirection.Vertical;
            tracSprite.spriteName = "ScrollbarTrack";
            tracSprite.name = "Track";
            scrollbar.trackObject = tracSprite;
            scrollbar.trackObject.height = scrollbar.height;

            UISlicedSprite thumbSprite = tracSprite.AddUIComponent<UISlicedSprite>();
            thumbSprite.relativePosition = Vector2.zero;
            thumbSprite.fillDirection = UIFillDirection.Vertical;
            thumbSprite.autoSize = true;
            thumbSprite.width = thumbSprite.parent.width - 8;
            thumbSprite.spriteName = "ScrollbarThumb";
            thumbSprite.name = "Thumb";

            scrollbar.thumbObject = thumbSprite;
            scrollbar.isVisible = true;
            scrollbar.isEnabled = true;
            return scrollbar;
        }
 public static DropDown Create(UIComponent parent)
 {
     return(parent.AddUIComponent <DropDown>());
 }
        public static void makeSettings(UIHelperBase helper)
        {
            // tabbing code is borrowed from RushHour mod
            // https://github.com/PropaneDragon/RushHour/blob/release/RushHour/Options/OptionHandler.cs

            UIHelper    actualHelper = helper as UIHelper;
            UIComponent container    = actualHelper.self as UIComponent;

            UITabstrip tabStrip = container.AddUIComponent <UITabstrip>();

            tabStrip.relativePosition = new Vector3(0, 0);
            tabStrip.size             = new Vector2(container.width - 20, 40);

            UITabContainer tabContainer = container.AddUIComponent <UITabContainer>();

            tabContainer.relativePosition = new Vector3(0, 40);
            tabContainer.size             = new Vector2(container.width - 20, container.height - tabStrip.height - 20);
            tabStrip.tabPages             = tabContainer;

            int tabIndex = 0;

            // GENERAL

            AddOptionTab(tabStrip, Translation.GetString("General"));            // tabStrip.AddTab(Translation.GetString("General"), tabTemplate, true);
            tabStrip.selectedIndex = tabIndex;

            UIPanel currentPanel = tabStrip.tabContainer.components[tabIndex] as UIPanel;

            currentPanel.autoLayout              = true;
            currentPanel.autoLayoutDirection     = LayoutDirection.Vertical;
            currentPanel.autoLayoutPadding.top   = 5;
            currentPanel.autoLayoutPadding.left  = 10;
            currentPanel.autoLayoutPadding.right = 10;

            UIHelper panelHelper = new UIHelper(currentPanel);

            simAccuracyDropdown = panelHelper.AddDropdown(Translation.GetString("Simulation_accuracy") + ":", new string[] { Translation.GetString("Very_high"), Translation.GetString("High"), Translation.GetString("Medium"), Translation.GetString("Low"), Translation.GetString("Very_Low") }, simAccuracy, onSimAccuracyChanged) as UIDropDown;

            var featureGroup = panelHelper.AddGroup(Translation.GetString("Activated_features"));

            enablePrioritySignsToggle        = featureGroup.AddCheckbox(Translation.GetString("Priority_signs"), prioritySignsEnabled, onPrioritySignsEnabledChanged) as UICheckBox;
            enableTimedLightsToggle          = featureGroup.AddCheckbox(Translation.GetString("Timed_traffic_lights"), timedLightsEnabled, onTimedLightsEnabledChanged) as UICheckBox;
            enableCustomSpeedLimitsToggle    = featureGroup.AddCheckbox(Translation.GetString("Speed_limits"), customSpeedLimitsEnabled, onCustomSpeedLimitsEnabledChanged) as UICheckBox;
            enableVehicleRestrictionsToggle  = featureGroup.AddCheckbox(Translation.GetString("Vehicle_restrictions"), vehicleRestrictionsEnabled, onVehicleRestrictionsEnabledChanged) as UICheckBox;
            enableJunctionRestrictionsToggle = featureGroup.AddCheckbox(Translation.GetString("Junction_restrictions"), junctionRestrictionsEnabled, onJunctionRestrictionsEnabledChanged) as UICheckBox;
            enableLaneConnectorToggle        = featureGroup.AddCheckbox(Translation.GetString("Lane_connector"), laneConnectorEnabled, onLaneConnectorEnabledChanged) as UICheckBox;

            // GAMEPLAY
            ++tabIndex;

            AddOptionTab(tabStrip, Translation.GetString("Gameplay"));
            tabStrip.selectedIndex = tabIndex;

            currentPanel                         = tabStrip.tabContainer.components[tabIndex] as UIPanel;
            currentPanel.autoLayout              = true;
            currentPanel.autoLayoutDirection     = LayoutDirection.Vertical;
            currentPanel.autoLayoutPadding.top   = 5;
            currentPanel.autoLayoutPadding.left  = 10;
            currentPanel.autoLayoutPadding.right = 10;

            panelHelper = new UIHelper(currentPanel);

            var vehBehaviorGroup = panelHelper.AddGroup(Translation.GetString("Vehicle_behavior"));

            recklessDriversDropdown            = vehBehaviorGroup.AddDropdown(Translation.GetString("Reckless_driving") + ":", new string[] { Translation.GetString("Path_Of_Evil_(10_%)"), Translation.GetString("Rush_Hour_(5_%)"), Translation.GetString("Minor_Complaints_(2_%)"), Translation.GetString("Holy_City_(0_%)") }, recklessDrivers, onRecklessDriversChanged) as UIDropDown;
            realisticSpeedsToggle              = vehBehaviorGroup.AddCheckbox(Translation.GetString("Realistic_speeds"), realisticSpeeds, onRealisticSpeedsChanged) as UICheckBox;
            strongerRoadConditionEffectsToggle = vehBehaviorGroup.AddCheckbox(Translation.GetString("Road_condition_has_a_bigger_impact_on_vehicle_speed"), strongerRoadConditionEffects, onStrongerRoadConditionEffectsChanged) as UICheckBox;
            enableDespawningToggle             = vehBehaviorGroup.AddCheckbox(Translation.GetString("Enable_despawning"), enableDespawning, onEnableDespawningChanged) as UICheckBox;

            var vehAiGroup = panelHelper.AddGroup(Translation.GetString("Advanced_Vehicle_AI"));

            advancedAIToggle = vehAiGroup.AddCheckbox(Translation.GetString("Enable_Advanced_Vehicle_AI"), advancedAI, onAdvancedAIChanged) as UICheckBox;
#if DEBUG
            //if (SystemInfo.processorCount >= DYNAMIC_RECALC_MIN_PROCESSOR_COUNT)
            //dynamicPathRecalculationToggle = vehAiGroup.AddCheckbox(Translation.GetString("Enable_dynamic_path_calculation"), dynamicPathRecalculation, onDynamicPathRecalculationChanged) as UICheckBox;
#endif
            highwayRulesToggle    = vehAiGroup.AddCheckbox(Translation.GetString("Enable_highway_specific_lane_merging/splitting_rules"), highwayRules, onHighwayRulesChanged) as UICheckBox;
            preferOuterLaneToggle = vehAiGroup.AddCheckbox(Translation.GetString("Heavy_trucks_prefer_outer_lanes_on_highways"), preferOuterLane, onPreferOuterLaneChanged) as UICheckBox;

            var parkAiGroup = panelHelper.AddGroup(Translation.GetString("Parking_AI"));
            prohibitPocketCarsToggle = parkAiGroup.AddCheckbox(Translation.GetString("Enable_more_realistic_parking") + " (BETA feature)", prohibitPocketCars, onProhibitPocketCarsChanged) as UICheckBox;

            // VEHICLE RESTRICTIONS
            ++tabIndex;

            AddOptionTab(tabStrip, Translation.GetString("Policies_&_Restrictions"));
            tabStrip.selectedIndex = tabIndex;

            currentPanel                         = tabStrip.tabContainer.components[tabIndex] as UIPanel;
            currentPanel.autoLayout              = true;
            currentPanel.autoLayoutDirection     = LayoutDirection.Vertical;
            currentPanel.autoLayoutPadding.top   = 5;
            currentPanel.autoLayoutPadding.left  = 10;
            currentPanel.autoLayoutPadding.right = 10;

            panelHelper = new UIHelper(currentPanel);

            var atJunctionsGroup = panelHelper.AddGroup(Translation.GetString("At_junctions"));
#if DEBUG
            allRelaxedToggle = atJunctionsGroup.AddCheckbox(Translation.GetString("All_vehicles_may_ignore_lane_arrows"), allRelaxed, onAllRelaxedChanged) as UICheckBox;
#endif
            relaxedBussesToggle = atJunctionsGroup.AddCheckbox(Translation.GetString("Busses_may_ignore_lane_arrows"), relaxedBusses, onRelaxedBussesChanged) as UICheckBox;
            allowEnterBlockedJunctionsToggle = atJunctionsGroup.AddCheckbox(Translation.GetString("Vehicles_may_enter_blocked_junctions"), allowEnterBlockedJunctions, onAllowEnterBlockedJunctionsChanged) as UICheckBox;
            allowUTurnsToggle = atJunctionsGroup.AddCheckbox(Translation.GetString("Vehicles_may_do_u-turns_at_junctions"), allowUTurns, onAllowUTurnsChanged) as UICheckBox;
            allowLaneChangesWhileGoingStraightToggle = atJunctionsGroup.AddCheckbox(Translation.GetString("Vehicles_going_straight_may_change_lanes_at_junctions"), allowLaneChangesWhileGoingStraight, onAllowLaneChangesWhileGoingStraightChanged) as UICheckBox;

            if (SteamHelper.IsDLCOwned(SteamHelper.DLC.NaturalDisastersDLC))
            {
                var inCaseOfEmergencyGroup = panelHelper.AddGroup(Translation.GetString("In_case_of_emergency"));
                evacBussesMayIgnoreRulesToggle = inCaseOfEmergencyGroup.AddCheckbox(Translation.GetString("Evacuation_busses_may_ignore_traffic_rules"), evacBussesMayIgnoreRules, onEvacBussesMayIgnoreRulesChanged) as UICheckBox;
            }

            // OVERLAYS
            ++tabIndex;

            AddOptionTab(tabStrip, Translation.GetString("Overlays"));
            tabStrip.selectedIndex = tabIndex;

            currentPanel                         = tabStrip.tabContainer.components[tabIndex] as UIPanel;
            currentPanel.autoLayout              = true;
            currentPanel.autoLayoutDirection     = LayoutDirection.Vertical;
            currentPanel.autoLayoutPadding.top   = 5;
            currentPanel.autoLayoutPadding.left  = 10;
            currentPanel.autoLayoutPadding.right = 10;

            panelHelper = new UIHelper(currentPanel);

            prioritySignsOverlayToggle        = panelHelper.AddCheckbox(Translation.GetString("Priority_signs"), prioritySignsOverlay, onPrioritySignsOverlayChanged) as UICheckBox;
            timedLightsOverlayToggle          = panelHelper.AddCheckbox(Translation.GetString("Timed_traffic_lights"), timedLightsOverlay, onTimedLightsOverlayChanged) as UICheckBox;
            speedLimitsOverlayToggle          = panelHelper.AddCheckbox(Translation.GetString("Speed_limits"), speedLimitsOverlay, onSpeedLimitsOverlayChanged) as UICheckBox;
            vehicleRestrictionsOverlayToggle  = panelHelper.AddCheckbox(Translation.GetString("Vehicle_restrictions"), vehicleRestrictionsOverlay, onVehicleRestrictionsOverlayChanged) as UICheckBox;
            junctionRestrictionsOverlayToggle = panelHelper.AddCheckbox(Translation.GetString("Junction_restrictions"), junctionRestrictionsOverlay, onJunctionRestrictionsOverlayChanged) as UICheckBox;
            connectedLanesOverlayToggle       = panelHelper.AddCheckbox(Translation.GetString("Connected_lanes"), connectedLanesOverlay, onConnectedLanesOverlayChanged) as UICheckBox;
            nodesOverlayToggle = panelHelper.AddCheckbox(Translation.GetString("Nodes_and_segments"), nodesOverlay, onNodesOverlayChanged) as UICheckBox;
            showLanesToggle    = panelHelper.AddCheckbox(Translation.GetString("Lanes"), showLanes, onShowLanesChanged) as UICheckBox;
#if DEBUG
            vehicleOverlayToggle  = panelHelper.AddCheckbox(Translation.GetString("Vehicles"), vehicleOverlay, onVehicleOverlayChanged) as UICheckBox;
            citizenOverlayToggle  = panelHelper.AddCheckbox(Translation.GetString("Citizens"), citizenOverlay, onCitizenOverlayChanged) as UICheckBox;
            buildingOverlayToggle = panelHelper.AddCheckbox(Translation.GetString("Buildings"), buildingOverlay, onBuildingOverlayChanged) as UICheckBox;
#endif

            // MAINTENANCE
            ++tabIndex;

            AddOptionTab(tabStrip, Translation.GetString("Maintenance"));
            tabStrip.selectedIndex = tabIndex;

            currentPanel                         = tabStrip.tabContainer.components[tabIndex] as UIPanel;
            currentPanel.autoLayout              = true;
            currentPanel.autoLayoutDirection     = LayoutDirection.Vertical;
            currentPanel.autoLayoutPadding.top   = 5;
            currentPanel.autoLayoutPadding.left  = 10;
            currentPanel.autoLayoutPadding.right = 10;

            panelHelper = new UIHelper(currentPanel);

            forgetTrafficLightsBtn = panelHelper.AddButton(Translation.GetString("Forget_toggled_traffic_lights"), onClickForgetToggledLights) as UIButton;
            resetStuckEntitiesBtn  = panelHelper.AddButton(Translation.GetString("Reset_stuck_cims_and_vehicles"), onClickResetStuckEntities) as UIButton;
#if DEBUG
            resetSpeedLimitsBtn = panelHelper.AddButton(Translation.GetString("Reset_custom_speed_limits"), onClickResetSpeedLimits) as UIButton;
#endif
            reloadGlobalConfBtn = panelHelper.AddButton(Translation.GetString("Reload_global_configuration"), onClickReloadGlobalConf) as UIButton;
            resetGlobalConfBtn  = panelHelper.AddButton(Translation.GetString("Reset_global_configuration"), onClickResetGlobalConf) as UIButton;
#if DEBUG
            // DEBUG

            /*++tabIndex;
             *
             * settingsButton = tabStrip.AddTab("Debug", tabTemplate, true);
             * settingsButton.textPadding = new RectOffset(10, 10, 10, 10);
             * settingsButton.autoSize = true;
             * settingsButton.tooltip = "Debug";
             *
             * currentPanel = tabStrip.tabContainer.components[tabIndex] as UIPanel;
             * currentPanel.autoLayout = true;
             * currentPanel.autoLayoutDirection = LayoutDirection.Vertical;
             * currentPanel.autoLayoutPadding.top = 5;
             * currentPanel.autoLayoutPadding.left = 10;
             * currentPanel.autoLayoutPadding.right = 10;
             *
             * panelHelper = new UIHelper(currentPanel);
             *
             * debugSwitchFields.Clear();
             * for (int i = 0; i < debugSwitches.Length; ++i) {
             *      int index = i;
             *      string varName = $"Debug switch #{i}";
             *      debugSwitchFields.Add(panelHelper.AddCheckbox(varName, debugSwitches[i], delegate (bool newVal) { onBoolValueChanged(varName, newVal, ref debugSwitches[index]); }) as UICheckBox);
             * }
             *
             * debugValueFields.Clear();
             * for (int i = 0; i < debugValues.Length; ++i) {
             *      int index = i;
             *      string varName = $"Debug value #{i}";
             *      debugValueFields.Add(panelHelper.AddTextfield(varName, String.Format("{0:0.##}", debugValues[i]), delegate(string newValStr) { onFloatValueChanged(varName, newValStr, ref debugValues[index]); }, null) as UITextField);
             * }*/
#endif

            tabStrip.selectedIndex = 0;
        }
Exemplo n.º 11
0
        public static void CreateSpace(float width, float height, UIComponent parent)
        {
            UIPanel panel = parent.AddUIComponent <UIPanel>();

            panel.size = new Vector2(width, height);
        }
Exemplo n.º 12
0
        public override void OnLevelLoaded(LoadMode mode)
        {
            if (ResolveOverlapsTool.instance == null)
            {
                ToolController toolController = GameObject.FindObjectOfType <ToolController>();
                ResolveOverlapsTool.instance         = toolController.gameObject.AddComponent <ResolveOverlapsTool>();
                ResolveOverlapsTool.instance.enabled = false;
            }

            // Load Sprites
            LoadSprites();

            // Initiate UI
            // 1.1 - modular?
            UIPanel modsPanel    = (UIPanel)UIView.Find("ElektrixModsPanel");
            int     toggleClicks = 0;

            if (modsPanel == null)
            {
                UIComponent TSBar = UIView.Find("TSBar");
                UIPanel     elektrixModsBackground = TSBar.AddUIComponent <UIPanel>();
                elektrixModsBackground.name             = "ElektrixMB";
                elektrixModsBackground.absolutePosition = new Vector2(config.PanelX, config.PanelY);
                elektrixModsBackground.width            = 60f;
                elektrixModsBackground.height           = 60f;
                elektrixModsBackground.zOrder           = 1;

                UIButton doneButton = elektrixModsBackground.AddUIComponent <UIButton>();
                doneButton.normalBgSprite   = "GenericPanel";
                doneButton.width            = 100f;
                doneButton.height           = 50f;
                doneButton.relativePosition = new Vector2(70f, 5f);
                doneButton.text             = "Done";
                doneButton.hoveredTextColor = new Color32(0, 255, 255, 1);
                doneButton.Hide();
                doneButton.zOrder = 99;

                UIDragHandle handle = elektrixModsBackground.AddUIComponent <UIDragHandle>();
                handle.name             = "ElektrixDragHandle";
                handle.relativePosition = Vector2.zero;
                handle.width            = elektrixModsBackground.width - 5;
                handle.height           = elektrixModsBackground.height - 5;
                handle.zOrder           = 0;
                handle.target           = elektrixModsBackground;
                handle.Start();
                handle.enabled = false;

                elektrixModsBackground.zOrder = 9;
                handle.zOrder = 10;

                elektrixModsBackground.eventDoubleClick += (component, ms) =>
                {
                    handle.zOrder = 13;
                    doneButton.Show();
                    handle.enabled = true;
                };

                doneButton.eventClick += (component, ms) =>
                {
                    doneButton.Hide();
                    handle.zOrder  = 10;
                    handle.enabled = false;

                    config.PanelX = (int)elektrixModsBackground.absolutePosition.x;
                    config.PanelY = (int)elektrixModsBackground.absolutePosition.y;
                    Configuration <ElektrixModsConfiguration> .Save();
                };

                if (m_atlasLoaded)
                {
                    elektrixModsBackground.atlas            = SpriteUtilities.GetAtlas(m_atlasName);
                    elektrixModsBackground.backgroundSprite = "Blank";
                }
                else
                {
                    elektrixModsBackground.backgroundSprite = "GenericPanelLight";
                }


                elektrixModsBackground.color = new Color32(96, 96, 96, 255);

                UIButton elektrixModsToggle = elektrixModsBackground.AddUIComponent <UIButton>();
                elektrixModsToggle.disabledTextColor = new Color32(128, 128, 128, 255);
                ElektrixUI.SetupButtonStateSprites(ref elektrixModsToggle, "ToolbarIconGroup1");
                elektrixModsToggle.relativePosition = new Vector3(5f, 0f);
                elektrixModsToggle.size             = new Vector2(45f, 50f);
                elektrixModsToggle.name             = "ElektrixModsButton";
                elektrixModsToggle.zOrder           = 11;
                if (m_atlasLoaded)
                {
                    UISprite internalSprite = elektrixModsToggle.AddUIComponent <UISprite>();
                    internalSprite.atlas            = SpriteUtilities.GetAtlas(m_atlasName);
                    internalSprite.spriteName       = "Elektrix";
                    internalSprite.relativePosition = new Vector3(-3, 0);
                    internalSprite.width            = internalSprite.height = 50f;
                }
                else
                {
                    elektrixModsToggle.text = "E";
                }
                elektrixModsToggle.textScale               = 1.3f;
                elektrixModsToggle.textVerticalAlignment   = UIVerticalAlignment.Middle;
                elektrixModsToggle.textHorizontalAlignment = UIHorizontalAlignment.Center;

                modsPanel = elektrixModsBackground.AddUIComponent <UIPanel>();
                modsPanel.backgroundSprite = "GenericPanelLight";
                modsPanel.color            = new Color32(96, 96, 96, 255);
                modsPanel.name             = "ElektrixModsPanel";
                modsPanel.width            = 0;
                modsPanel.relativePosition = new Vector3(0, -modsPanel.height - 7);
                modsPanel.Hide();

                UILabel panelLabel = modsPanel.AddUIComponent <UILabel>();
                panelLabel.text             = "Elektrix's Mods";
                panelLabel.relativePosition = new Vector3(12f, 12f);

                elektrixModsToggle.eventClicked += (component, click) =>
                {
                    toggleClicks++;
                    if (toggleClicks == 1)
                    {
                        elektrixModsToggle.Focus();
                        modsPanel.Show();
                    }
                    else
                    {
                        elektrixModsToggle.Unfocus();
                        toggleClicks = 0;
                        modsPanel.Hide();
                    }
                };
            }

            modsPanel = (UIPanel)UIView.Find("ElektrixModsPanel");

            UIPanel backgroundPanel = modsPanel.AddUIComponent <UIPanel>();

            backgroundPanel.backgroundSprite = "GenericPanelLight";
            backgroundPanel.name             = "E3";
            backgroundPanel.height           = 50f;
            backgroundPanel.width            = 135f;
            backgroundPanel.relativePosition = new Vector3(10f, 40f + 70f);

            UIButton resolveOverlapsTool = backgroundPanel.AddUIComponent <UIButton>();
            int      buttonClicks        = 0;

            ElektrixUI.SetupButtonStateSprites(ref resolveOverlapsTool, "OptionBase", true);
            resolveOverlapsTool.size             = new Vector2(45f, 45f);
            resolveOverlapsTool.relativePosition = new Vector3(5f, 2.5f);
            resolveOverlapsTool.name             = "E3A";
            if (m_atlasLoaded)
            {
                UISprite internalSprite = resolveOverlapsTool.AddUIComponent <UISprite>();
                internalSprite.atlas            = SpriteUtilities.GetAtlas(m_atlasName);
                internalSprite.spriteName       = "ResolveOverlaps";
                internalSprite.relativePosition = Vector3.zero;
                internalSprite.width            = internalSprite.height = 50f;
            }
            else
            {
                resolveOverlapsTool.text = "R";
            }
            resolveOverlapsTool.textScale = 1.3f;

            UIButton addNodeTool   = backgroundPanel.AddUIComponent <UIButton>();
            int      button2Clicks = 0;

            ElektrixUI.SetupButtonStateSprites(ref addNodeTool, "OptionBase", true);
            addNodeTool.size             = new Vector2(45f, 45f);
            addNodeTool.relativePosition = new Vector3(55f, 2.5f);
            addNodeTool.name             = "E3B";
            if (m_atlasLoaded)
            {
                UISprite internalSprite2 = addNodeTool.AddUIComponent <UISprite>();
                internalSprite2.atlas            = SpriteUtilities.GetAtlas(m_atlasName);
                internalSprite2.spriteName       = "AddNode";
                internalSprite2.relativePosition = Vector3.zero;
                internalSprite2.width            = internalSprite2.height = 50f;
            }
            else
            {
                resolveOverlapsTool.text = "A";
            }
            resolveOverlapsTool.textScale = 1.3f;

            // Final overrides
            //UIPanel modsPanel = (UIPanel) UIView.Find("ElektrixModsPanel");
            IList <UIComponent> panels = modsPanel.components;
            float longestPanelWidth    = 0;

            for (int i = 0; i < panels.Count; i++)
            {
                if (!(panels[i] is UIPanel))
                {
                    continue;
                }
                panels[i].relativePosition = new Vector3(panels[i].relativePosition.x, 35 + (60 * (i - 1)));
                if (panels[i].width > longestPanelWidth)
                {
                    longestPanelWidth = panels[i].width;
                }
            }

            modsPanel.height           = 40f + (modsPanel.childCount - 1) * 60f;
            modsPanel.width            = 20f + longestPanelWidth;
            modsPanel.relativePosition = new Vector3(0, -modsPanel.height - 7);

            // Events
            resolveOverlapsTool.eventClicked += (component, click) =>
            {
                if (!ResolveOverlapsTool.instance.enabled)
                {
                    buttonClicks = 0;
                }

                buttonClicks++;
                if (buttonClicks == 1)
                {
                    resolveOverlapsTool.Focus();
                    ResolveOverlapsTool.instance.enabled = true;
                    ResolveOverlapsTool.instance.mode    = 0;
                }
                else
                {
                    resolveOverlapsTool.Unfocus();
                    buttonClicks = 0;
                    ResolveOverlapsTool.instance.enabled = false;
                    ResolveOverlapsTool.instance.mode    = 0;
                    ToolsModifierControl.SetTool <DefaultTool>();
                }
            };

            addNodeTool.eventClicked += (component, click) =>
            {
                if (!ResolveOverlapsTool.instance.enabled)
                {
                    button2Clicks = 0;
                }

                button2Clicks++;
                if (button2Clicks == 1)
                {
                    addNodeTool.Focus();
                    ResolveOverlapsTool.instance.enabled = true;
                    ResolveOverlapsTool.instance.mode    = 1;
                }
                else
                {
                    addNodeTool.Unfocus();
                    button2Clicks = 0;
                    ResolveOverlapsTool.instance.enabled = false;
                    ResolveOverlapsTool.instance.mode    = 0;
                    ToolsModifierControl.SetTool <DefaultTool>();
                }
            };
        }
Exemplo n.º 13
0
        //public static UICheckBox CreateCheckBox(UIComponent parent, string spriteName, string toolTip, bool value)
        //{
        //    return CreateCheckBox(parent, spriteName, toolTip, value, new Vector2(36, 36));
        // }

        public static UICheckBox CreateCheckBox(UIComponent parent,
                                                string spriteName,
                                                string toolTip,
                                                bool value,
                                                bool isStatic = false)
        {
            var checkBox = parent.AddUIComponent <UICheckBox>();

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

            var button = checkBox.AddUIComponent <UIButton>();

            button.name             = $"{Configuration.ResourcePrefix}{spriteName}";
            button.atlas            = !isStatic ? TextureAtlas : DefaultAtlas;
            button.tooltip          = toolTip;
            button.relativePosition = new Vector2(0, 0);

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

            button.normalFgSprite = spriteName;
            if (!isStatic)
            {
                button.hoveredFgSprite  = spriteName + "Hovered";
                button.pressedFgSprite  = spriteName + "Pressed";
                button.disabledFgSprite = spriteName + "Disabled";
            }

            checkBox.isChecked = value;
            if (value)
            {
                button.normalBgSprite = "OptionBaseFocused";
                if (!isStatic)
                {
                    button.normalFgSprite = spriteName + "Focused";
                }
            }

            checkBox.eventCheckChanged += (c, s) =>
            {
                if (s)
                {
                    button.normalBgSprite = "OptionBaseFocused";
                    if (!isStatic)
                    {
                        button.normalFgSprite = spriteName + "Focused";
                    }
                }
                else
                {
                    button.normalBgSprite = "OptionBase";
                    if (!isStatic)
                    {
                        button.normalFgSprite = spriteName;
                    }
                }
            };

            return(checkBox);
        }
Exemplo n.º 14
0
        public static void MakeSettings(UIHelperBase helper)
        {
            LoadSetting();
            UIHelper    actualHelper = helper as UIHelper;
            UIComponent container    = actualHelper.self as UIComponent;

            UITabstrip tabStrip = container.AddUIComponent <UITabstrip>();

            tabStrip.relativePosition = new Vector3(0, 0);
            tabStrip.size             = new Vector2(container.width - 20, 40);

            UITabContainer tabContainer = container.AddUIComponent <UITabContainer>();

            tabContainer.relativePosition = new Vector3(0, 40);
            tabContainer.size             = new Vector2(container.width - 20, container.height - tabStrip.height - 20);
            tabStrip.tabPages             = tabContainer;

            int tabIndex = 0;

            // Lane_ShortCut

            AddOptionTab(tabStrip, Localization.Get("BASIC_SETTING"));
            tabStrip.selectedIndex = tabIndex;

            UIPanel currentPanel = tabStrip.tabContainer.components[tabIndex] as UIPanel;

            currentPanel.autoLayout              = true;
            currentPanel.autoLayoutDirection     = LayoutDirection.Vertical;
            currentPanel.autoLayoutPadding.top   = 5;
            currentPanel.autoLayoutPadding.left  = 10;
            currentPanel.autoLayoutPadding.right = 10;

            UIHelper panelHelper = new UIHelper(currentPanel);

            UIHelperBase group = panelHelper.AddGroup(Localization.Get("BASIC_SETTING"));

            group.AddCheckbox(Localization.Get("SHOW_LACK_OF_RESOURCE"), RealCity.debugMode, (index) => debugModeEnable(index));
            group.AddCheckbox(Localization.Get("REDUCE_CARGO_ENABLE"), RealCity.reduceVehicle, (index) => reduceVehicleEnable(index));
            group.AddCheckbox(Localization.Get("NO_PASSENGERCAR"), RealCity.noPassengerCar, (index) => noPassengerCarEnable(index));
            group.AddButton(Localization.Get("RESET_VALUE"), Loader.InitData);

            if (Loader.isTransportLinesManagerRunning)
            {
                UIHelperBase group1 = panelHelper.AddGroup(Localization.Get("TLMRUNNING"));
            }
            else
            {
                UIHelperBase group1 = panelHelper.AddGroup(Localization.Get("TLMNOTRUNNING"));
            }

            ++tabIndex;

            AddOptionTab(tabStrip, Localization.Get("SPTB"));
            tabStrip.selectedIndex = tabIndex;

            currentPanel                         = tabStrip.tabContainer.components[tabIndex] as UIPanel;
            currentPanel.autoLayout              = true;
            currentPanel.autoLayoutDirection     = LayoutDirection.Vertical;
            currentPanel.autoLayoutPadding.top   = 5;
            currentPanel.autoLayoutPadding.left  = 10;
            currentPanel.autoLayoutPadding.right = 10;

            panelHelper = new UIHelper(currentPanel);
            var generalGroup2 = panelHelper.AddGroup(Localization.Get("SMART_PUBLIC_TRANSPORT_BUDGET_WEEKDAY")) as UIHelper;

            morningBudgetWeekDaySlider = generalGroup2.AddSlider(Localization.Get("WEEKDAY_MORNING_BUDGET") + "(" + morningBudgetWeekDay.ToString() + "%)", 10, 300, 5, morningBudgetWeekDay, onMorningBudgetWeekDayChanged) as UISlider;
            morningBudgetWeekDaySlider.parent.Find <UILabel>("Label").width = 500f;
            eveningBudgetWeekDaySlider = generalGroup2.AddSlider(Localization.Get("WEEKDAY_EVENING_BUDGET") + "(" + eveningBudgetWeekDay.ToString() + "%)", 10, 300, 5, eveningBudgetWeekDay, onEveningBudgetWeekDayChanged) as UISlider;
            eveningBudgetWeekDaySlider.parent.Find <UILabel>("Label").width = 500f;
            deepNightBudgetWeekDaySlider = generalGroup2.AddSlider(Localization.Get("WEEKDAY_DEEPNIGHT_BUDGET") + "(" + deepNightBudgetWeekDay.ToString() + "%)", 10, 300, 5, deepNightBudgetWeekDay, onDeepNightBudgetWeekDayChanged) as UISlider;
            deepNightBudgetWeekDaySlider.parent.Find <UILabel>("Label").width = 500f;
            otherBudgetWeekDaySlider = generalGroup2.AddSlider(Localization.Get("WEEKDAY_OTHER_BUDGET") + "(" + otherBudgetWeekDay.ToString() + "%)", 10, 300, 5, otherBudgetWeekDay, onOtherBudgetWeekDayChanged) as UISlider;
            otherBudgetWeekDaySlider.parent.Find <UILabel>("Label").width = 500f;

            var generalGroup3 = panelHelper.AddGroup(Localization.Get("SMART_PUBLIC_TRANSPORT_BUDGET_WEEKEND")) as UIHelper;

            morningBudgetWeekEndSlider = generalGroup3.AddSlider(Localization.Get("WEEKEND_MORNING_BUDGET") + "(" + morningBudgetWeekEnd.ToString() + "%)", 10, 300, 5, morningBudgetWeekEnd, onMorningBudgetWeekEndChanged) as UISlider;
            morningBudgetWeekEndSlider.parent.Find <UILabel>("Label").width = 500f;
            eveningBudgetWeekEndSlider = generalGroup3.AddSlider(Localization.Get("WEEKEND_EVENING_BUDGET") + "(" + eveningBudgetWeekEnd.ToString() + "%)", 10, 300, 5, eveningBudgetWeekEnd, onEveningBudgetWeekEndChanged) as UISlider;
            eveningBudgetWeekEndSlider.parent.Find <UILabel>("Label").width = 500f;
            deepNightBudgetWeekEndSlider = generalGroup3.AddSlider(Localization.Get("WEEKEND_DEEPNIGHT_BUDGET") + "(" + deepNightBudgetWeekEnd.ToString() + "%)", 10, 300, 5, deepNightBudgetWeekEnd, onDeepNightBudgetWeekEndChanged) as UISlider;
            deepNightBudgetWeekEndSlider.parent.Find <UILabel>("Label").width = 500f;
            otherBudgetWeekEndSlider = generalGroup3.AddSlider(Localization.Get("WEEKEND_OTHER_BUDGET") + "(" + otherBudgetWeekEnd.ToString() + "%)", 10, 300, 5, otherBudgetWeekEnd, onOtherBudgetWeekEndChanged) as UISlider;
            otherBudgetWeekEndSlider.parent.Find <UILabel>("Label").width = 500f;

            ++tabIndex;

            AddOptionTab(tabStrip, Localization.Get("SPTB2"));
            tabStrip.selectedIndex = tabIndex;

            currentPanel                         = tabStrip.tabContainer.components[tabIndex] as UIPanel;
            currentPanel.autoLayout              = true;
            currentPanel.autoLayoutDirection     = LayoutDirection.Vertical;
            currentPanel.autoLayoutPadding.top   = 5;
            currentPanel.autoLayoutPadding.left  = 10;
            currentPanel.autoLayoutPadding.right = 10;

            panelHelper = new UIHelper(currentPanel);
            var generalGroup4 = panelHelper.AddGroup(Localization.Get("SMART_PUBLIC_TRANSPORT_BUDGET_MAX")) as UIHelper;

            morningBudgetMaxSlider = generalGroup4.AddSlider(Localization.Get("MAX_MORNING_BUDGET") + "(" + morningBudgetMax.ToString() + "%)", 10, 300, 5, morningBudgetMax, onMorningBudgetMaxChanged) as UISlider;
            morningBudgetMaxSlider.parent.Find <UILabel>("Label").width = 500f;
            eveningBudgetMaxSlider = generalGroup4.AddSlider(Localization.Get("MAX_EVENING_BUDGET") + "(" + eveningBudgetMax.ToString() + "%)", 10, 300, 5, eveningBudgetMax, onEveningBudgetMaxChanged) as UISlider;
            eveningBudgetMaxSlider.parent.Find <UILabel>("Label").width = 500f;
            deepNightBudgetMaxSlider = generalGroup4.AddSlider(Localization.Get("MAX_DEEPNIGHT_BUDGET") + "(" + deepNightBudgetMax.ToString() + "%)", 10, 300, 5, deepNightBudgetMax, onDeepNightBudgetMaxChanged) as UISlider;
            deepNightBudgetMaxSlider.parent.Find <UILabel>("Label").width = 500f;
            otherBudgetMaxSlider = generalGroup4.AddSlider(Localization.Get("MAX_OTHER_BUDGET") + "(" + otherBudgetMax.ToString() + "%)", 10, 300, 5, otherBudgetMax, onOtherBudgetMaxChanged) as UISlider;
            otherBudgetMaxSlider.parent.Find <UILabel>("Label").width = 500f;

            var generalGroup5 = panelHelper.AddGroup(Localization.Get("SMART_PUBLIC_TRANSPORT_BUDGET_MIN")) as UIHelper;

            morningBudgetMinSlider = generalGroup5.AddSlider(Localization.Get("MIN_MORNING_BUDGET") + "(" + morningBudgetMin.ToString() + "%)", 10, 300, 5, morningBudgetMin, onMorningBudgetMinChanged) as UISlider;
            morningBudgetMinSlider.parent.Find <UILabel>("Label").width = 500f;
            eveningBudgetMinSlider = generalGroup5.AddSlider(Localization.Get("MIN_EVENING_BUDGET") + "(" + eveningBudgetMin.ToString() + "%)", 10, 300, 5, eveningBudgetMin, onEveningBudgetMinChanged) as UISlider;
            eveningBudgetMinSlider.parent.Find <UILabel>("Label").width = 500f;
            deepNightBudgetMinSlider = generalGroup5.AddSlider(Localization.Get("MIN_DEEPNIGHT_BUDGET") + "(" + deepNightBudgetMin.ToString() + "%)", 10, 300, 5, deepNightBudgetMin, onDeepNightBudgetMinChanged) as UISlider;
            deepNightBudgetMinSlider.parent.Find <UILabel>("Label").width = 500f;
            otherBudgetMinSlider = generalGroup5.AddSlider(Localization.Get("MIN_OTHER_BUDGET") + "(" + otherBudgetMin.ToString() + "%)", 10, 300, 5, otherBudgetMin, onOtherBudgetMinChanged) as UISlider;
            otherBudgetMinSlider.parent.Find <UILabel>("Label").width = 500f;

            SaveSetting();
        }
Exemplo n.º 15
0
        public static void SetUpUndoModififcationPanel(UIComponent optionsBar)
        {
            if (GameObject.Find("UndoTerrainPanel") != null)
            {
                return;
            }
            var undoPanel = optionsBar.AddUIComponent<UIPanel>();
            undoPanel.name = "UndoTerrainPanel";
            undoPanel.backgroundSprite = "MenuPanel2";
            undoPanel.size = new Vector2(231, 106);
            undoPanel.isVisible = false;
            undoPanel.relativePosition = new Vector3(-256, -594);
            UIUtil.SetupTitle("", undoPanel);
            var applyButton = undoPanel.AddUIComponent<UIButton>();
            applyButton.name = "Apply";
            applyButton.localeID = "MAPEDITOR_UNDO_TERRAIN";
            applyButton.size = new Vector2(191, 38);
            applyButton.relativePosition = new Vector3(20, 54);
            applyButton.normalBgSprite = "ButtonMenu";
            applyButton.hoveredBgSprite = "ButtonMenuHovered";
            applyButton.pressedBgSprite = "ButtonMenuPressed";
            applyButton.disabledBgSprite = "ButtonMenuDisabled";
            applyButton.canFocus = false;
            var utoPanel = undoPanel.gameObject.AddComponent<UndoTerrainOptionPanel>();
            applyButton.eventClick += (component, eventParam) => { utoPanel.UndoTerrain(); };

            var toolField = typeof(UndoTerrainOptionPanel).GetField("m_TerrainTool", BindingFlags.Instance | BindingFlags.NonPublic);
            toolField.SetValue(utoPanel, ToolsModifierControl.GetTool<TerrainTool>());
        }
Exemplo n.º 16
0
        public static void SetupLevelHeightPanel(UIComponent optionsBar)
        {
            if (GameObject.Find("LevelHeightPanel") != null)
            {
                return;
            }
            var levelHeightPanel = optionsBar.AddUIComponent<UIPanel>();
            levelHeightPanel.backgroundSprite = "MenuPanel2";
            levelHeightPanel.isVisible = false;
            levelHeightPanel.size = new Vector2(231, 108);
            levelHeightPanel.relativePosition = new Vector2(-256, -702);
            levelHeightPanel.name = "LevelHeightPanel";
            UIUtil.SetupTitle("", levelHeightPanel);
            var heightLabel = levelHeightPanel.AddUIComponent<UILabel>();
            heightLabel.name = "HeightLabel";
            heightLabel.localeID = "MAPEDITOR_TERRAINLEVEL";
            heightLabel.size = new Vector2(134, 18);
            heightLabel.relativePosition = new Vector3(13, 56);
            var heightText = levelHeightPanel.AddUIComponent<UITextField>();
            heightText.name = "Height";
            heightText.size = new Vector2(52, 18);
            heightText.normalBgSprite = "TextFieldPanel";
            heightText.relativePosition = new Vector3(150, 56);
            heightText.builtinKeyNavigation = true;
            heightText.isInteractive = true;
            heightText.readOnly = false;
            heightText.selectionSprite = "EmptySprite";
            heightText.selectionBackgroundColor = new Color32(0, 172, 234, 255);

            var heightSlider = levelHeightPanel.AddUIComponent<UISlider>();
            heightSlider.name = "Height";
            heightSlider.relativePosition = new Vector3(28, 79);
            heightSlider.backgroundSprite = "ScrollbarTrack";
            heightSlider.size = new Vector2(174, 12);
            heightSlider.minValue = 0.0f;
            heightSlider.maxValue = 1024.0f;
            heightSlider.stepSize = 0.01f;
            var heightSliderThumb = heightSlider.AddUIComponent<UISlicedSprite>();
            heightSliderThumb.spriteName = "ScrollbarThumb";
            heightSliderThumb.size = new Vector2(10, 20);
            heightSlider.thumbObject = heightSliderThumb;

            levelHeightPanel.gameObject.AddComponent<LevelHeightOptionPanel>();
        }
Exemplo n.º 17
0
        private static UITextField CreateTextField(UIComponent parent)
        {
            var textField = parent.AddUIComponent<UITextField>();

            textField.size = new Vector2(90f, 20f);
            textField.padding = new RectOffset(0, 0, 7, 0);
            textField.builtinKeyNavigation = true;
            textField.isInteractive = true;
            textField.readOnly = false;
            textField.horizontalAlignment = UIHorizontalAlignment.Center;
            textField.selectionSprite = "EmptySprite";
            textField.selectionBackgroundColor = new Color32(0, 172, 234, 255);
            textField.normalBgSprite = "TextFieldPanel";
            textField.hoveredBgSprite = "TextFieldPanelHovered";
            textField.focusedBgSprite = "TextFieldPanelHovered";
            textField.textColor = new Color32(0, 0, 0, 255);
            textField.disabledTextColor = new Color32(0, 0, 0, 128);
            textField.color = new Color32(255, 255, 255, 255);
            textField.eventGotFocus += (component, param) => component.color = new Color32(253, 227, 144, 255);
            textField.eventLostFocus += (component, param) => component.color = new Color32(255, 255, 255, 255);
            return textField;
        }
 public static StopListBox Create(UIComponent parent)
 {
     return(parent.AddUIComponent <StopListBox>());
 }
        //Special Thanks to boformer's NetworkSkins.UI.Util for this!
        public static UIDropDown CreateDropDown(UIComponent parent, float textScale, RectOffset textPadding, Vector2 size, int itemWidth, int itemHeight, int maxItems, int itemSpacing)
        {
            //dropdown
            UIDropDown _dropDown = parent.AddUIComponent <UIDropDown>();

            _dropDown.size = size;
            _dropDown.horizontalAlignment = UIHorizontalAlignment.Left;
            _dropDown.verticalAlignment   = UIVerticalAlignment.Middle;

            itemSpacing = Mathf.Clamp(itemSpacing, 0, itemHeight * 10);
            maxItems    = Mathf.Clamp(maxItems, 1, 50);

            _dropDown.autoListWidth  = false;
            _dropDown.autoSize       = false;
            _dropDown.listBackground = "OptionsDropboxListbox";
            _dropDown.listWidth      = itemWidth;
            _dropDown.listHeight     = itemSpacing + ((itemHeight + itemSpacing) * maxItems);
            _dropDown.listPosition   = UIDropDown.PopupListPosition.Below;
            _dropDown.listPadding    = new RectOffset(itemSpacing, itemSpacing, itemSpacing, itemSpacing);

            _dropDown.itemHeight    = itemHeight;
            _dropDown.itemHover     = "ListItemHover";
            _dropDown.itemHover     = "ListItemHover";
            _dropDown.itemHighlight = "ListItemHighlight";
            _dropDown.itemPadding   = new RectOffset(14, 0, itemSpacing * 2, 0);

            _dropDown.normalBgSprite   = "OptionsDropbox";
            _dropDown.disabledBgSprite = "OptionsDropboxDisabled";
            _dropDown.hoveredBgSprite  = "OptionsDropboxHovered";
            _dropDown.focusedBgSprite  = "OptionsDropboxFocused";

            _dropDown.foregroundSpriteMode = UIForegroundSpriteMode.Stretch;

            _dropDown.popupColor     = new Color32(45, 52, 61, 255);
            _dropDown.popupTextColor = new Color32(170, 170, 170, 255);

            _dropDown.textScale        = textScale;
            _dropDown.textFieldPadding = textPadding;

            _dropDown.playAudioEvents = true;

            _dropDown.zOrder        = 1;
            _dropDown.selectedIndex = 0;

            //button
            UIButton _button = _dropDown.AddUIComponent <UIButton>();

            _dropDown.triggerButton = _button;

            _button.size                = _dropDown.size;
            _button.relativePosition    = new Vector3(0f, 0f);
            _button.horizontalAlignment = UIHorizontalAlignment.Right;
            _button.verticalAlignment   = UIVerticalAlignment.Middle;

            _button.text      = "";
            _button.textScale = textScale;
            _button.textHorizontalAlignment = UIHorizontalAlignment.Left;
            _button.textVerticalAlignment   = UIVerticalAlignment.Middle;
            _button.textPadding             = textPadding;

            _button.playAudioEvents = true;

            _button.zOrder = 0;

            //events
            _dropDown.eventSizeChanged += delegate(UIComponent c, Vector2 t)
            {
                _button.size        = t;
                _dropDown.listWidth = (int)t.x;
            };

            //finally
            return(_dropDown);
        }
Exemplo n.º 20
0
        public void CreateButtons()
        {
            buttons = new List <UIButton>();
            UIView uiView = UIView.GetAView();

            UIComponent tsBar = uiView.FindUIComponent("TSBar");

            if (mainButton == null)
            {
                var atlas = UIX.CreateTextureAtlas("AdvancedBuildingUI", new string[] { "AdvancedBuilding" }, "AdvancedBuilding.");

                panel = tsBar.AddUIComponent <UIPanel>();

                panel.backgroundSprite = "MenuPanel2";
                panel.name             = "BuildingPanel";
                panel.isVisible        = false;
                panel.width            = 300;
                panel.height           = 400;
                panel.absolutePosition = new Vector2(40, 80);

                panel.eventVisibilityChanged += panel_eventVisibilityChanged;

                UIX.Panel(panel, "Advanced building");


                var bulldozeButton = UIView.GetAView().FindUIComponent <UIMultiStateButton>("BulldozerButton");
                mainButton       = bulldozeButton.parent.AddUIComponent <UIButton>();
                mainButton.atlas = atlas;
                UIX.Button(mainButton, "AdvancedBuilding", new Vector2(43, 49));

                mainButton.relativePosition = new Vector2
                                              (
                    bulldozeButton.relativePosition.x + bulldozeButton.width / 2.0f - (mainButton.width + bulldozeButton.width) * 2,
                    bulldozeButton.relativePosition.y + bulldozeButton.height / 2.0f - mainButton.height / 2.0f
                                              );

                mainButton.eventClick += buttonClick;
                mainButton.name        = "AdvancedBuildButton";

                ServiceDropdown();
                LevelDropdown();
                ItemsDropdown();
                ModesDropdown();
                NetToolDropdown();
                PropToolDropdown();

                serviceDropdown.relativePosition  = new Vector3(110.0f, 50.0f);
                levelDropdown.relativePosition    = new Vector3(110.0f, 90.0f);
                itemsDropdown.relativePosition    = new Vector3(110.0f, 130.0f);
                modesDropdown.relativePosition    = new Vector3(110.0f, 170.0f);
                netToolDropdown.relativePosition  = new Vector3(110.0f, 230.0f);
                propToolDropdown.relativePosition = new Vector3(110.0f, 270.0f);

                var label1 = UIX.Label(panel, "Service", new Vector3(10, 50));
                label1.textAlignment     = UIHorizontalAlignment.Right;
                label1.verticalAlignment = UIVerticalAlignment.Middle;
                label1.size = new Vector2(90, 30);

                var label2 = UIX.Label(panel, "Level", new Vector3(10, 90));
                label2.textAlignment     = UIHorizontalAlignment.Right;
                label2.verticalAlignment = UIVerticalAlignment.Middle;
                label2.size = new Vector2(90, 30);

                var label3 = UIX.Label(panel, "Items", new Vector3(10, 130));
                label3.textAlignment     = UIHorizontalAlignment.Right;
                label3.verticalAlignment = UIVerticalAlignment.Middle;
                label3.size = new Vector2(90, 30);

                var label4 = UIX.Label(panel, "Build mode", new Vector3(10, 170));
                label4.textAlignment     = UIHorizontalAlignment.Right;
                label4.verticalAlignment = UIVerticalAlignment.Middle;
                label4.size = new Vector2(90, 30);

                var label5 = UIX.Label(panel, "Networks", new Vector3(10, 230));
                label5.textAlignment     = UIHorizontalAlignment.Right;
                label5.verticalAlignment = UIVerticalAlignment.Middle;
                label5.size = new Vector2(90, 30);

                var label6 = UIX.Label(panel, "Props", new Vector3(10, 270));
                label6.textAlignment     = UIHorizontalAlignment.Right;
                label6.verticalAlignment = UIVerticalAlignment.Middle;
                RefreshButtons();
            }
        }
Exemplo n.º 21
0
 public static GoalProgressPanel CreateProgressPanel(UIComponent parent, int pos, IGoal goal)
 {
     GoalProgressPanel progressPanel = parent.AddUIComponent<GoalProgressPanel> ();
     progressPanel.Start ();
     progressPanel.PopulatePanel (parent, pos, goal);
     return progressPanel;
 }
        /// <summary>
        /// Creates a toggle button (multi-state button) with THREE states: State 0, State 1, and State 2.
        /// </summary>
        /// <param name="bgPrefix0">State 0: background sprite prefix</param>
        /// <param name="bgPrefix1">State 1: background sprite prefix</param>
        /// <param name="bgPrefix2">State 2: background sprite prefix</param>
        /// <param name="fgPrefix0">State 0: foreground sprite prefix</param>
        /// <param name="fgPrefix1">State 1: foreground sprite prefix</param>
        /// <param name="fgPrefix2">State 2: foreground sprite prefix</param>
        /// <returns></returns>
        public static UIMultiStateButton AddAThreeStateButton(UIComponent parent, string name, UITextureAtlas atlas, string bgPrefix0, string bgPrefix1, string bgPrefix2, string fgPrefix0, string fgPrefix1, string fgPrefix2)
        {
            UIMultiStateButton _toggleButton = parent.AddUIComponent <UIMultiStateButton>();

            _toggleButton.name       = name;
            _toggleButton.cachedName = name;

            _toggleButton.atlas = atlas;

            UIMultiStateButton.SpriteSetState fgSpriteSetState = _toggleButton.foregroundSprites;
            UIMultiStateButton.SpriteSetState bgSpriteSetState = _toggleButton.backgroundSprites;

            if (fgSpriteSetState == null || bgSpriteSetState == null)
            {
                Debug.LogError("[PLT]: UIMultiStateButton missing SpriteSetState");
            }

            UIMultiStateButton.SpriteSet fgSpriteSet0 = fgSpriteSetState[0];
            UIMultiStateButton.SpriteSet bgSpriteSet0 = bgSpriteSetState[0];

            if (fgSpriteSet0 == null)
            {
                fgSpriteSetState.AddState();
                fgSpriteSet0 = fgSpriteSetState[0];
            }
            if (bgSpriteSet0 == null)
            {
                bgSpriteSetState.AddState();
                bgSpriteSet0 = bgSpriteSetState[0];
            }

            //add state '0'
            if (fgPrefix0 != "")
            {
                fgSpriteSet0.normal   = (fgPrefix0 + "");
                fgSpriteSet0.focused  = (fgPrefix0 + "Focused");
                fgSpriteSet0.hovered  = (fgPrefix0 + "Hovered");
                fgSpriteSet0.pressed  = (fgPrefix0 + "Pressed");
                fgSpriteSet0.disabled = (fgPrefix0 + "Disabled");
            }
            if (bgPrefix0 != "")
            {
                bgSpriteSet0.normal   = (bgPrefix0 + "");
                bgSpriteSet0.focused  = (bgPrefix0 + "Focused");
                bgSpriteSet0.hovered  = (bgPrefix0 + "Hovered");
                bgSpriteSet0.pressed  = (bgPrefix0 + "Pressed");
                bgSpriteSet0.disabled = (bgPrefix0 + "Disabled");
            }

            //add state '1'
            fgSpriteSetState.AddState();
            bgSpriteSetState.AddState();
            UIMultiStateButton.SpriteSet fgSpriteSet1 = fgSpriteSetState[1];
            UIMultiStateButton.SpriteSet bgSpriteSet1 = bgSpriteSetState[1];
            if (fgPrefix1 != "")
            {
                fgSpriteSet1.normal   = (fgPrefix1 + "");
                fgSpriteSet1.focused  = (fgPrefix1 + "Focused");
                fgSpriteSet1.hovered  = (fgPrefix1 + "Hovered");
                fgSpriteSet1.pressed  = (fgPrefix1 + "Pressed");
                fgSpriteSet1.disabled = (fgPrefix1 + "Disabled");
            }
            if (bgPrefix1 != "")
            {
                bgSpriteSet1.normal   = (bgPrefix1 + "");
                bgSpriteSet1.focused  = (bgPrefix1 + "Focused");
                bgSpriteSet1.hovered  = (bgPrefix1 + "Hovered");
                bgSpriteSet1.pressed  = (bgPrefix1 + "Pressed");
                bgSpriteSet1.disabled = (bgPrefix1 + "Disabled");
            }

            //add state '2'
            fgSpriteSetState.AddState();
            bgSpriteSetState.AddState();
            UIMultiStateButton.SpriteSet fgSpriteSet2 = fgSpriteSetState[2];
            UIMultiStateButton.SpriteSet bgSpriteSet2 = bgSpriteSetState[2];
            if (fgPrefix2 != "")
            {
                fgSpriteSet2.normal   = (fgPrefix2 + "");
                fgSpriteSet2.focused  = (fgPrefix2 + "Focused");
                fgSpriteSet2.hovered  = (fgPrefix2 + "Hovered");
                fgSpriteSet2.pressed  = (fgPrefix2 + "Pressed");
                fgSpriteSet2.disabled = (fgPrefix2 + "Disabled");
            }
            if (bgPrefix2 != "")
            {
                bgSpriteSet2.normal   = (bgPrefix2 + "");
                bgSpriteSet2.focused  = (bgPrefix2 + "Focused");
                bgSpriteSet2.hovered  = (bgPrefix2 + "Hovered");
                bgSpriteSet2.pressed  = (bgPrefix2 + "Pressed");
                bgSpriteSet2.disabled = (bgPrefix2 + "Disabled");
            }

            //initial value
            _toggleButton.state                = UIMultiStateButton.ButtonState.Normal;
            _toggleButton.activeStateIndex     = 0;
            _toggleButton.foregroundSpriteMode = UIForegroundSpriteMode.Scale;
            _toggleButton.spritePadding        = new RectOffset(0, 0, 0, 0);
            _toggleButton.autoSize             = false;
            _toggleButton.canFocus             = false;
            _toggleButton.enabled              = true;
            _toggleButton.isInteractive        = true;
            _toggleButton.isVisible            = true;

            return(_toggleButton);
        }
Exemplo n.º 23
0
        /// <summary>
        /// Sets up tool tips. Would have been much easier if they would have let us specify the name of the components.
        /// </summary>
        /// <param name="component"></param>
        /// <returns></returns>
        private System.Collections.IEnumerator DoToolTips(UIComponent component)
        {
            yield return new WaitForSeconds(0.300f);  //pause for 1/2 second then come back and do rest.
            try
            {
                if (Mod.DEBUG_LOG_ON) { Helper.dbgLog("Refreshing tooltips telemetrylevel=" + Mod.config.TelemetryLevel.ToString()); }

                UICheckBox[] cb = component.GetComponentsInChildren<UICheckBox>(true);
                if (cb != null && cb.Length > 0)
                {
                    for (int i = 0; i < (cb.Length); i++)
                    {
                        switch (cb[i].text)
                        {
                            case "Enable Verbose Logging":
                                cb[i].tooltip = "Enables detailed logging for debugging purposes\n See config file for even more options, unless there are problems you probably don't want to enable this.";
                                break;
                            //case "Disable OnAppStartup":
                            //    cb[i].tooltip = "Disables telemetry sent for when you boot up the game exe.\n**Please Note: This setting does nothing atm, mods load too late to change this\n if you want to disable this you must use patched Assemembly-CSharp.dll";
                            //    cb[i].isChecked = Helper.HasTelemFlag(Mod.config.TelemetryLevel, Helper.TelemOption.DisableOnAppStart);
                            //    break;
                            //case "Disable Machine Info":
                            //    cb[i].tooltip = "Disables telemetry sent for when you boot up the game exe.\n it includes information to id your specific computer spec & steamid or paradox login\n**Please Note: This setting does nothing atm, mods load too late to change this\n if you want to disable this you must use patched Assemembly-CSharp.dll";
                            //    cb[i].isChecked = Helper.HasTelemFlag(Mod.config.TelemetryLevel, Helper.TelemOption.DisableMachineInfo);
                            //    break;
                            case "Disable Custom Content":
                                cb[i].tooltip = "Disables telemetry about what custom content you load with a map.\n It includes information such has counts of building,props,trees,vehicles,mods, and details about every enabled mod.";
                                cb[i].isChecked = Helper.HasTelemFlag(Mod.config.TelemetryLevel, Helper.TelemOption.DisableCustomContent );
                                break;
                            case "Disable Session Start":
                                cb[i].tooltip = "Disables telemetry about what Session Starts(loading a map).\n it includes information such has mapname,mapfilename,loadmode,environment,inverted traffic and map guid.";
                                cb[i].isChecked = Helper.HasTelemFlag(Mod.config.TelemetryLevel, Helper.TelemOption.DisableStartSession);
                                break;
                            case "Disable Session Loaded":
                                cb[i].tooltip = "Disables telemetry about a Loaded Session (map loading completed).\n it includes information such has current time, time in your map, and how long part of the load took to execute.";
                                cb[i].isChecked = Helper.HasTelemFlag(Mod.config.TelemetryLevel, Helper.TelemOption.DisableSessionLoaded );
                                break;
                            case "Disable Session End":
                                cb[i].tooltip = "Disables telemetry about a Session End (map unloaded).\n it includes data that a session has ended, and of what type it was (map,game,asset).";
                                cb[i].isChecked = Helper.HasTelemFlag(Mod.config.TelemetryLevel, Helper.TelemOption.DisableEndSession);
                                break;
                            case "Disable Exception Reporting":
                                cb[i].tooltip = "Disables telemetry about an Exception Error occuring.\n This only sends the 'type' of error and the basic error message, it does not send a stack trace.";
                                cb[i].isChecked = Helper.HasTelemFlag(Mod.config.TelemetryLevel, Helper.TelemOption.DisableExceptionReporting);
                                break;
                            case "Disable OnAppQuit":
                                cb[i].tooltip = "Disables telemetry sent when you exit the game.\n This includes data that you exited the game and a timestamp.";
                                cb[i].isChecked = Helper.HasTelemFlag(Mod.config.TelemetryLevel, Helper.TelemOption.DisableOnQuit);
                                break;
                            case "Disable Store Clicks":
                                cb[i].tooltip = "Disables telemetry sent when you click on a store item.\n This only sends that you clicked on the store button.";
                                cb[i].isChecked = Helper.HasTelemFlag(Mod.config.TelemetryLevel, Helper.TelemOption.DisableOnStoreClick);
                                break;
                            case "Disable Feed Clicks":
                                cb[i].tooltip = "Disables telemetry sent when you click on a workshop feed\\news item \n This sends that you clicked on one and the target steamAppID or url upon which you clicked.";
                                cb[i].isChecked = Helper.HasTelemFlag(Mod.config.TelemetryLevel, Helper.TelemOption.DisableOnClicks);
                                break;
                            case "Disable Paradox Login":
                                cb[i].tooltip = "Disables telemetry sent when the game logs you into your paradox account \n This sends data that you were auto-logged in and a timestamp.";
                                cb[i].isChecked = Helper.HasTelemFlag(Mod.config.TelemetryLevel, Helper.TelemOption.DisableParadoxLogin);
                                break;
                            case "Enable All SendToFile Only":
                                cb[i].tooltip = "Enables all telemetry - but nothing will be sent to Paradox, only logged in your log file.";
                                cb[i].isChecked = Helper.HasTelemFlag(Mod.config.TelemetryLevel, Helper.TelemOption.EnableAllButLogToFileInstead);
                                break;
                            case "DisableWorkshopAdPanel":
                                cb[i].tooltip = "Disables the workshop 'feed' panel, does NOT disable Workshop in general.\n There is no telemetry directly associated with disabling this.\n I simply find the feeds a waste of bandwidth.";
                                cb[i].isChecked = Helper.HasTelemFlag(Mod.config.TelemetryLevel, Helper.TelemOption.DisableWorkshopAdPanel);
                                break;
                            case "NoOpThePush":
                                cb[i].tooltip = "This is a master overide to make Telemetry.Push() (function that sends the data) do absolutely nothing.\n If set nothing will be sent OR even logged (if not in verbose logging mode).";
                                cb[i].isChecked = Helper.HasTelemFlag(Mod.config.TelemetryLevel, Helper.TelemOption.NoOpThePush);
                                break;
                            case "SetURL To LocalHost":
                                cb[i].tooltip = "Sets the Paradox API URL to whatever you have in your config file.\n The default is 'https://localhost:49100/cities' if enabled.\n Can be used if you want to enable everything but send data your own web server.";
                                cb[i].isChecked = Helper.HasTelemFlag(Mod.config.TelemetryLevel, Helper.TelemOption.SetAPIUrlLocalHost);
                                break;

                            case "Disable All Telemetry":
                                cb[i].tooltip = "Disables all telemetry - Nothing will be sent to Paradox.\nYou do NOT have to select the individual options if this is set.\n *Please see note at bottom of options page about the OnAppStartup and MachineInfo telemetry events.";
                                cb[i].isChecked = Helper.HasTelemFlag(Mod.config.TelemetryLevel, Helper.TelemOption.DisableAll);
                                break;
                            case "Enable All Telemetry":
                                cb[i].tooltip = "Enables all telemetry - The game's default behavior.";
                                cb[i].isChecked = Helper.HasTelemFlag(Mod.config.TelemetryLevel, Helper.TelemOption.EnableAll);
                                break;
                            default:
                                break;
                        }
                    }
                }

                List<UIButton> bb = new List<UIButton>();
                component.GetComponentsInChildren<UIButton>(true, bb);
                if ( bb.Count > 0)
                {
                    bb[0].tooltip = "Press this after making changes to ensure all changes are activated.\n ";

                    if (!isMsgLabelSetup)
                    {
                        uiMsg = component.AddUIComponent<UILabel>();
                        isMsgLabelSetup = true;
                        uiMsg.name = "TelemetryMessageText";
                        uiMsg.text = UILABEL_MSG_TEXT;
                        uiMsg.width = 350f;

                        //uiMsg.wordWrap = true;
                        uiMsg.relativePosition = new Vector3(bb[0].relativePosition.x, bb[0].relativePosition.y + 30f);
                        uiMsg.Show();
                    }

                }

                if (Mod.DEBUG_LOG_ON) { Helper.dbgLog("Tooltips set"); }
            }
            catch(Exception ex)
            {
                Helper.dbgLog("", ex, true);
            }
            yield break;
        }
Exemplo n.º 24
0
        private static void Init(UIComponent component, bool b)
        {
            component.eventVisibilityChanged -= new PropertyChangedEventHandler <bool>(Init);

            try
            {
                if (component.objectUserData is PrefabInfo prefab)
                {
                    string name = Asset.GetName(prefab);

                    if (AssetTagList.instance.assets.ContainsKey(name))
                    {
                        ImageUtils.FixThumbnails(prefab, component as UIButton);

                        Asset asset = AssetTagList.instance.assets[name];

                        component.eventVisibilityChanged += (c, p) =>
                        {
                            if (Settings.unlockAll)
                            {
                                c.isEnabled = true;
                            }
                            else
                            {
                                c.isEnabled = ToolsModifierControl.IsUnlocked(prefab.GetUnlockMilestone());
                            }
                        };

                        // Fixing focused texture
                        component.eventClicked += new MouseEventHandler(FixFocusedTexture);

                        // Adding custom tag icon
                        UISprite tagSprite = component.AddUIComponent <UISprite>();
                        tagSprite.size             = new Vector2(20, 16);
                        tagSprite.atlas            = FindIt.atlas;
                        tagSprite.spriteName       = "Tag";
                        tagSprite.opacity          = 0.5f;
                        tagSprite.tooltipBox       = UIView.GetAView().defaultTooltipBox;
                        tagSprite.relativePosition = new Vector3(component.width - tagSprite.width - 5, 5);
                        tagSprite.isVisible        = false;

                        if (CustomTagsLibrary.assetTags.ContainsKey(name))
                        {
                            tagSprite.tooltip = CustomTagsLibrary.assetTags[name];
                        }
                        else
                        {
                            tagSprite.tooltip = null;
                        }

                        tagSprite.eventMouseEnter += (c, p) =>
                        {
                            tagSprite.opacity = 1f;
                        };

                        tagSprite.eventMouseLeave += (c, p) =>
                        {
                            tagSprite.opacity = 0.5f;
                        };

                        tagSprite.eventClick += (c, p) =>
                        {
                            p.Use();

                            UITagsWindow.ShowAt(asset, tagSprite);
                        };

                        component.eventMouseEnter += (c, p) =>
                        {
                            tagSprite.isVisible = true;
                        };

                        component.eventMouseLeave += (c, p) =>
                        {
                            if (asset.tagsCustom.Count == 0)
                            {
                                tagSprite.isVisible = false;
                            }
                        };

                        // Adding steam icon
                        if (asset.steamID != 0)
                        {
                            UISprite steamSprite = component.AddUIComponent <UISprite>();
                            steamSprite.size             = new Vector2(26, 16);
                            steamSprite.atlas            = SamsamTS.UIUtils.GetAtlas("Ingame");
                            steamSprite.spriteName       = "SteamWorkshop";
                            steamSprite.opacity          = 0.05f;
                            steamSprite.tooltipBox       = UIView.GetAView().defaultTooltipBox;
                            steamSprite.relativePosition = new Vector3(component.width - steamSprite.width - 5, component.height - steamSprite.height - 5);
                            steamSprite.eventMouseLeave += (c, p) =>
                            {
                                steamSprite.tooltipBox.Hide();
                            };

                            if (!asset.author.IsNullOrWhiteSpace())
                            {
                                steamSprite.tooltip = "By " + asset.author + "\n" + Translations.Translate("FIF_UIS_WS");
                            }

                            if (PlatformService.IsOverlayEnabled())
                            {
                                steamSprite.eventMouseUp += (c, p) =>
                                {
                                    if (!p.used && p.buttons == UIMouseButton.Right)
                                    {
                                        PublishedFileId publishedFileId = new PublishedFileId(asset.steamID);

                                        if (publishedFileId != PublishedFileId.invalid)
                                        {
                                            PlatformService.ActivateGameOverlayToWorkshopItem(publishedFileId);
                                            p.Use();
                                        }
                                    }
                                };
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Debugging.LogException(e);
            }
        }
Exemplo n.º 25
0
        private static UILabel AddLabel(UIComponent parent, string text, float width, float dropDownHeight)
        {
            var label = parent.AddUIComponent<UILabel>();
            label.text = text;
            label.textScale = .85f;
            label.textColor = new Color32(200, 200, 200, 255);
            label.autoSize = false;
            label.autoHeight = true;
            label.width = width;
            label.textAlignment = UIHorizontalAlignment.Right;
            label.relativePosition = new Vector3(0, Mathf.Round((dropDownHeight - label.height) / 2));

            return label;
        }
Exemplo n.º 26
0
        public override void OnLevelLoaded(LoadMode mode)
        {
            if (NetPickerTool.instance == null)
            {
                ToolController toolController = GameObject.FindObjectOfType <ToolController>();
                NetPickerTool.instance         = toolController.gameObject.AddComponent <NetPickerTool>();
                NetPickerTool.instance.enabled = false;
            }

            if (!config.HasSeenHowToDragTheStupidIcon)
            {
                NetPickerTool.instance.ThrowError("Double-click the Elektrix's Mods icon to move it.");
                config.HasSeenHowToDragTheStupidIcon = true;
                Configuration <ElektrixModsConfiguration> .Save();
            }

            // Load Sprites
            LoadSprites();

            // Initiate UI
            // 1.1 - modular?
            UIPanel modsPanel = (UIPanel)UIView.Find("ElektrixModsPanel");

            if (modsPanel == null)
            {
                UIComponent TSBar = UIView.Find("TSBar");
                UIPanel     elektrixModsBackground = TSBar.AddUIComponent <UIPanel>();
                elektrixModsBackground.name             = "ElektrixMB";
                elektrixModsBackground.absolutePosition = new Vector2(config.PanelX, config.PanelY);
                elektrixModsBackground.width            = 60f;
                elektrixModsBackground.height           = 60f;
                elektrixModsBackground.zOrder           = 1;

                UIButton doneButton = elektrixModsBackground.AddUIComponent <UIButton>();
                doneButton.normalBgSprite   = "GenericPanel";
                doneButton.width            = 100f;
                doneButton.height           = 50f;
                doneButton.relativePosition = new Vector2(70f, 5f);
                doneButton.text             = "Done";
                doneButton.hoveredTextColor = new Color32(0, 255, 255, 1);
                doneButton.Hide();
                doneButton.zOrder = 99;

                UIDragHandle handle = elektrixModsBackground.AddUIComponent <UIDragHandle>();
                handle.name             = "ElektrixDragHandle";
                handle.relativePosition = Vector2.zero;
                handle.width            = elektrixModsBackground.width - 5;
                handle.height           = elektrixModsBackground.height - 5;
                handle.zOrder           = 0;
                handle.target           = elektrixModsBackground;
                handle.Start();
                handle.enabled = false;

                elektrixModsBackground.zOrder = 9;
                handle.zOrder = 10;

                elektrixModsBackground.eventDoubleClick += (component, ms) =>
                {
                    handle.zOrder = 13;
                    doneButton.Show();
                    handle.enabled = true;
                };

                /*
                 * elektrixModsBackground.eventMouseMove += (component, ms) =>
                 * {
                 *  if (ms.buttons.IsFlagSet(UIMouseButton.Right))
                 *  {
                 *      Vector3 mousePos = Input.mousePosition;
                 *      mousePos.y = UIView.GetAView().fixedHeight - mousePos.y;
                 *      elektrixModsBackground.absolutePosition = mousePos + m_deltaPos;
                 *
                 *      Debug.Log(mousePos + ", " + Input.mousePosition);
                 *      config.PanelX = (int)elektrixModsBackground.absolutePosition.x;
                 *      config.PanelY = (int)elektrixModsBackground.absolutePosition.y;
                 *      Configuration<ElektrixModsConfiguration>.Save();
                 *  }
                 * };*/
                /*
                 * elektrixModsBackground.eventMouseDown += (component, ms) =>
                 * {
                 *  if (ms.buttons.IsFlagSet(UIMouseButton.Right))
                 *  {
                 *      Vector3 mousePos = Input.mousePosition;
                 *      mousePos.y = UIView.GetAView().fixedHeight - mousePos.y;
                 *      m_deltaPos = elektrixModsBackground.absolutePosition - mousePos;
                 *      elektrixModsBackground.absolutePosition = mousePos + m_deltaPos;
                 *
                 *
                 *      config.PanelX = (int)elektrixModsBackground.absolutePosition.x;
                 *      config.PanelY = (int)elektrixModsBackground.absolutePosition.y;
                 *      Configuration<ElektrixModsConfiguration>.Save();
                 *  }
                 * };*/

                doneButton.eventClick += (component, ms) =>
                {
                    doneButton.Hide();
                    handle.zOrder  = 10;
                    handle.enabled = false;

                    config.PanelX = (int)elektrixModsBackground.absolutePosition.x;
                    config.PanelY = (int)elektrixModsBackground.absolutePosition.y;
                    Configuration <ElektrixModsConfiguration> .Save();
                };

                if (m_atlasLoaded)
                {
                    elektrixModsBackground.atlas            = SpriteUtilities.GetAtlas(m_atlasName);
                    elektrixModsBackground.backgroundSprite = "Blank";
                }
                else
                {
                    elektrixModsBackground.backgroundSprite = "GenericPanelLight";
                }


                elektrixModsBackground.color = new Color32(96, 96, 96, 255);

                UIButton elektrixModsToggle = elektrixModsBackground.AddUIComponent <UIButton>();
                elektrixModsToggle.disabledTextColor = new Color32(128, 128, 128, 255);
                ElektrixUI.SetupButtonStateSprites(ref elektrixModsToggle, "ToolbarIconGroup1");
                elektrixModsToggle.relativePosition = new Vector3(5f, 0f);
                elektrixModsToggle.size             = new Vector2(45f, 50f);
                elektrixModsToggle.name             = "ElektrixModsButton";
                elektrixModsToggle.zOrder           = 11;
                if (m_atlasLoaded)
                {
                    UISprite internalSprite = elektrixModsToggle.AddUIComponent <UISprite>();
                    internalSprite.atlas            = SpriteUtilities.GetAtlas(m_atlasName);
                    internalSprite.spriteName       = "Elektrix";
                    internalSprite.relativePosition = new Vector3(-3, 0);
                    internalSprite.width            = internalSprite.height = 50f;
                }
                else
                {
                    elektrixModsToggle.text = "E";
                }
                elektrixModsToggle.textScale               = 1.3f;
                elektrixModsToggle.textVerticalAlignment   = UIVerticalAlignment.Middle;
                elektrixModsToggle.textHorizontalAlignment = UIHorizontalAlignment.Center;

                modsPanel = elektrixModsBackground.AddUIComponent <UIPanel>();
                modsPanel.backgroundSprite = "MenuPanel2";
                modsPanel.name             = "ElektrixModsPanel";
                modsPanel.width            = 0;
                modsPanel.relativePosition = new Vector3(0, -modsPanel.height - 7);
                modsPanel.Hide();

                UILabel panelLabel = modsPanel.AddUIComponent <UILabel>();
                panelLabel.text             = "Elektrix's Mods";
                panelLabel.name             = "EL";
                panelLabel.relativePosition = new Vector3(12f, 15f);

                elektrixModsToggle.eventClicked += (component, click) =>
                {
                    if (!modsPanel.isVisible)
                    {
                        elektrixModsToggle.Focus();
                        modsPanel.Show();
                    }
                    else
                    {
                        elektrixModsToggle.Unfocus();
                        modsPanel.Hide();
                    }
                };
            }

            modsPanel = (UIPanel)UIView.Find("ElektrixModsPanel");

            UIPanel backgroundPanel = modsPanel.AddUIComponent <UIPanel>();

            backgroundPanel.backgroundSprite = "GenericPanelWhite";
            backgroundPanel.name             = "E2";
            backgroundPanel.height           = 70f;
            backgroundPanel.width            = 135f;
            backgroundPanel.relativePosition = new Vector3(10f, 0f);
            backgroundPanel.color            = new Color32(91, 97, 106, 255);

            UILabel title = backgroundPanel.AddUIComponent <UILabel>();

            title.text             = "Net Picker";
            title.name             = "E2L";
            title.textScale        = 0.9f;
            title.relativePosition = new Vector3(7f, 7f);

            UIButton netPickerTool = backgroundPanel.AddUIComponent <UIButton>();
            int      netClicks     = 0;

            ElektrixUI.SetupButtonStateSprites(ref netPickerTool, "OptionBase", true);
            netPickerTool.size             = new Vector2(45f, 45f);
            netPickerTool.relativePosition = new Vector3(5f, 22f);
            netPickerTool.name             = "E2A";
            netPickerTool.tooltip          = "Click a road to select it in the roads panel.";
            if (m_atlasLoaded)
            {
                UISprite internalSprite = netPickerTool.AddUIComponent <UISprite>();
                internalSprite.atlas            = SpriteUtilities.GetAtlas(m_atlasName);
                internalSprite.spriteName       = "NetTool";
                internalSprite.relativePosition = Vector3.zero;
                internalSprite.width            = internalSprite.height = 50f;
            }
            else
            {
                netPickerTool.text = "P";
            }
            netPickerTool.textScale = 1.3f;

            UIButton openDescription = backgroundPanel.AddUIComponent <UIButton>();

            openDescription.relativePosition = new Vector3(backgroundPanel.width - 20, 5);
            openDescription.size             = new Vector3(15, 15);
            openDescription.normalFgSprite   = "ToolbarIconHelp";
            openDescription.name             = "E2H";
            openDescription.tooltip          = "Open in Steam Workshop";
            ElektrixUI.SetupButtonStateSprites(ref openDescription, "OptionBase", true);
            if (!PlatformService.IsOverlayEnabled())
            {
                openDescription.isVisible = false;
                openDescription.isEnabled = false;
            }
            openDescription.eventClicked += (component, click) => {
                if (PlatformService.IsOverlayEnabled() && toolID != PublishedFileId.invalid)
                {
                    PlatformService.ActivateGameOverlayToWorkshopItem(toolID);
                }
                openDescription.Unfocus();
            };

            // Final overrides
            //UIPanel modsPanel = (UIPanel) UIView.Find("ElektrixModsPanel");
            IList <UIComponent> panels = modsPanel.components;
            float longestPanelWidth    = 0;

            for (int i = 0; i < panels.Count; i++)
            {
                if (!(panels[i] is UIPanel))
                {
                    continue;
                }
                panels[i].relativePosition = new Vector3(panels[i].relativePosition.x, 50 + (80 * (i - 1)));
                if (panels[i].width > longestPanelWidth)
                {
                    longestPanelWidth = panels[i].width;
                }
            }

            modsPanel.height           = 50f + (modsPanel.childCount - 1) * 80f;
            modsPanel.width            = 20f + longestPanelWidth;
            modsPanel.relativePosition = new Vector3(0, -modsPanel.height - 7);

            // Events
            netPickerTool.eventClicked += (component, click) =>
            {
                if (!NetPickerTool.instance.enabled)
                {
                    netClicks = 0;
                }

                netClicks++;
                if (netClicks == 1)
                {
                    netPickerTool.Focus();
                    NetPickerTool.instance.enabled = true;
                }
                else
                {
                    netPickerTool.Unfocus();
                    netClicks = 0;
                    NetPickerTool.instance.enabled = false;
                    ToolsModifierControl.SetTool <DefaultTool>();
                }
            };
        }
Exemplo n.º 27
0
 private void InitialiseUpdatePanel(UIComponent parent)
 {
     _updatePanel = parent.AddUIComponent <UpdatePanel>();
     _updatePanel.SetPositionSpeakyPoint(new Vector2(parent.position.x, parent.position.y) + new Vector2(parent.size.x - 10, 10));
     _updatePanel.Initialise(CimToolsHandler.CimToolBase);
 }
Exemplo n.º 28
0
        public static UIDropDown CreateDropDown(UIComponent parent, float offset, string label)
        {
            UIPanel container = parent.AddUIComponent <UIPanel>();

            container.height           = 25;
            container.relativePosition = new Vector3(0, offset, 0);

            UILabel serviceLabel = container.AddUIComponent <UILabel>();

            serviceLabel.textScale        = 0.8f;
            serviceLabel.text             = label;
            serviceLabel.relativePosition = new Vector3(15, 6, 0);


            UIDropDown dropDown = container.AddUIComponent <UIDropDown>();

            dropDown.size                 = new Vector2(120f, 25f);
            dropDown.listBackground       = "GenericPanelLight";
            dropDown.itemHeight           = 20;
            dropDown.itemHover            = "ListItemHover";
            dropDown.itemHighlight        = "ListItemHighlight";
            dropDown.normalBgSprite       = "ButtonMenu";
            dropDown.disabledBgSprite     = "ButtonMenuDisabled";
            dropDown.hoveredBgSprite      = "ButtonMenuHovered";
            dropDown.focusedBgSprite      = "ButtonMenu";
            dropDown.listWidth            = 120;
            dropDown.listHeight           = 500;
            dropDown.foregroundSpriteMode = UIForegroundSpriteMode.Stretch;
            dropDown.popupColor           = new Color32(45, 52, 61, 255);
            dropDown.popupTextColor       = new Color32(170, 170, 170, 255);
            dropDown.zOrder               = 1;
            dropDown.textScale            = 0.7f;
            dropDown.verticalAlignment    = UIVerticalAlignment.Middle;
            dropDown.horizontalAlignment  = UIHorizontalAlignment.Left;

            dropDown.textFieldPadding = new RectOffset(8, 0, 8, 0);
            dropDown.itemPadding      = new RectOffset(14, 0, 8, 0);

            dropDown.relativePosition = new Vector3(112, 0, 0);

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

            dropDown.triggerButton         = button;
            button.text                    = "";
            button.size                    = new Vector2(120f, 25f);
            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.spritePadding           = new RectOffset(3, 3, 3, 3);
            button.foregroundSpriteMode    = UIForegroundSpriteMode.Fill;
            button.horizontalAlignment     = UIHorizontalAlignment.Right;
            button.verticalAlignment       = UIVerticalAlignment.Middle;
            button.zOrder                  = 0;
            button.textScale               = 0.8f;

            dropDown.eventSizeChanged += new PropertyChangedEventHandler <Vector2>((c, t) =>
            {
                button.size = t; dropDown.listWidth = (int)t.x;
            });

            return(dropDown);
        }
Exemplo n.º 29
0
        /********** UI building ***********/

        void AddComponents()
        {
            m_bookPanel = this.gameObject.AddComponent <BookPanel>();
            m_bookPanel.transform.parent = m_zonedBuildingInfoPanel.component.transform;
            m_bookPanel.size             = new Vector3(m_zonedBuildingInfoPanel.component.size.x, m_zonedBuildingInfoPanel.component.size.y);//maybe excahnge line with prvious one?
            m_bookPanel.position         = new Vector3(-m_bookPanel.size.x - m_bookInfoPanelLeftMargin, +m_bookPanel.size.y);

            m_bookInfoPanelInitialHeight   = m_bookPanel.height;
            m_bookInfoPanelPageWidth       = m_bookPanel.size.x / 2 - m_bookInfoPanelLeftMargin - m_bookInfoPanelRightPadding;
            m_bookInfoPanelLeftMarginPage2 = m_bookPanel.size.x / 2 + m_bookInfoPanelLeftMargin;

            m_bookInfoPanel = m_bookPanel;

            m_historyTitleLabel           = m_bookInfoPanel.AddUIComponent <UILabel> ();
            m_historyTitleLabel.name      = "History Title";
            m_historyTitleLabel.textScale = 1.2f;
            m_historyTitleLabel.text      = Localization.trad.GetHistoryTitle();
            m_historyTitleLabel.textColor = m_bookTextColor;

            m_recordTitleLabel           = m_bookInfoPanel.AddUIComponent <UILabel> ();
            m_recordTitleLabel.name      = "Record Title";
            m_recordTitleLabel.textScale = 1.2f;
            m_recordTitleLabel.text      = Localization.trad.GetRecordTitle();
            m_recordTitleLabel.textColor = m_bookTextColor;

            m_descriptionTextField                     = m_bookInfoPanel.AddUIComponent <UIMultilineTextField> ();
            m_descriptionTextField.name                = "Building Description";
            m_descriptionTextField.text                = "Enter description";
            m_descriptionTextField.textScale           = 0.8f;
            m_descriptionTextField.width               = m_bookInfoPanelPageWidth;
            m_descriptionTextField.height              = 100f;
            m_descriptionTextField.disabledTextColor   = new Color32(7, 7, 7, 255);
            m_descriptionTextField.textColor           = m_bookTextColor;
            m_descriptionTextField.eventTextSubmitted += (component, param) =>
            {
                SaveDescription(param);
            };
//			m_descriptionTextField.title = "Description";
//			m_descriptionTextField.showTitle = true;
            m_descriptionTextField.defaultText        = Localization.trad.GetDescriptionEmpty();
            m_descriptionTextField.eventHeightChange += (component, height) => {
                ResizePanelHeight();
            };

            int spriteWidth  = 32;
            int spriteHeight = 32;

            string[] tooltips =
            {
                Localization.trad.GetTooltipOff(),
                Localization.trad.GetTooltipHistoryOn(),
                Localization.trad.GetTooltipResiliencyOn()
            };
            m_resilientStateButton = new StatesButton(m_zonedBuildingInfoPanel.component, spriteWidth, spriteHeight, 3, "icons.book.png", "ResilientOwners", tooltips);

            m_resilientStateButton.msb.eventActiveStateIndexChanged += (component, value) => {
                if (!m_allowEvents)
                {
                    return;
                }

                switch (value)
                {
                case 0:
                    m_info.UnsuscribeBuilding(m_currentSelectedBuildingID);
                    HideHistory();
                    break;

                case 1:
                    m_info.AddBuilding(m_currentSelectedBuildingID, false);
                    ShowHistory();
                    CheckUpdateUI(m_currentSelectedBuildingID);
                    break;

                case 2:
                    m_info.AddBuilding(m_currentSelectedBuildingID, true);
                    ShowHistory();
                    break;
                }
            };
            m_resilientStateButton.msb.AlignTo(m_zonedBuildingInfoPanel.component, UIAlignAnchor.TopRight);
            m_resilientStateButton.msb.relativePosition += new Vector3(-50f, 60f, 0f);

            m_familiesHistoryLabel            = m_bookInfoPanel.AddUIComponent <UILabel> ();
            m_familiesHistoryLabel.name       = "Families History";
            m_familiesHistoryLabel.text       = Localization.trad.GetEmptyHouse();
            m_familiesHistoryLabel.textScale  = 0.8f;
            m_familiesHistoryLabel.textColor  = m_bookTextColor;
            m_familiesHistoryLabel.width      = m_bookInfoPanelPageWidth;
            m_familiesHistoryLabel.wordWrap   = true;
            m_familiesHistoryLabel.autoSize   = false;
            m_familiesHistoryLabel.autoHeight = true;

            m_activatedDateLabel           = m_bookInfoPanel.AddUIComponent <UILabel> ();
            m_activatedDateLabel.name      = "Activation Date";
            m_activatedDateLabel.text      = Localization.trad.GetActivationDate();
            m_activatedDateLabel.textScale = 0.8f;
            m_activatedDateLabel.textColor = m_bookTextColor;
            m_activatedDateLabel.width     = m_bookInfoPanelPageWidth;

            m_ageLabel           = m_bookInfoPanel.AddUIComponent <UILabel> ();
            m_ageLabel.name      = "Age";
            m_ageLabel.text      = Localization.trad.GetActivationDate();
            m_ageLabel.textScale = 0.8f;
            m_ageLabel.textColor = m_bookTextColor;
            m_ageLabel.width     = m_bookInfoPanelPageWidth;

            m_statsLabel            = m_bookInfoPanel.AddUIComponent <UILabel> ();
            m_statsLabel.name       = "Stats";
            m_statsLabel.text       = Localization.trad.GetEmptyHouse();      //long enough string
            m_statsLabel.textScale  = 0.8f;
            m_statsLabel.textColor  = m_bookTextColor;
            m_statsLabel.width      = m_bookInfoPanelPageWidth;
            m_statsLabel.wordWrap   = true;
            m_statsLabel.autoSize   = false;
            m_statsLabel.autoHeight = true;

            placeComponents();

//			m_zonedBuildingInfoPanelComponent.eventVisibilityChanged +=(component, param) =>
//			{
//				if(param)
//					OnSelected();
//					//m_info.StartCoroutine(OnSelected());//StartCoroutine on a MonoBehaviour...
//			};

            //m_zonedBuildingInfoPanel.m_IsEmbbeded = true;//one of the condition call to OnPositionChanged, ensure it
            m_zonedBuildingInfoPanel.component.eventPositionChanged += (inst1, inst2) =>
            {
                if (m_zonedBuildingInfoPanel.component.isVisible)
                {
                    OnSelected();
                }
            };

            m_zonedBuildingInfoPanel.component.eventOpacityChanged += (inst1, inst2) =>
            {
                if (m_zonedBuildingInfoPanel.component.isVisible)
                {
                    OnSelected();
                }
            };

            //m_zonedBuildingInfoPanel.component.eventClick += (inst1, inst2) =>
            //{
            //    if (m_zonedBuildingInfoPanel.component.isVisible)
            //        OnSelected();
            //};

            // district panel modifications

            string[] tooltips2 =
            {
                Localization.trad.GetTooltipDistrictOff(),
                Localization.trad.GetTooltipDistrictOn()
            };
            m_resilientStateButton2 = new StatesButton(m_districtInfoPanel.component, spriteWidth, spriteHeight, 2, "icons.star.png", "ResilientOwnersDistricts", tooltips2);

            m_resilientStateButton2.msb.eventActiveStateIndexChanged += (component, value) => {
                if (!m_allowEvents)
                {
                    return;
                }

                switch (value)
                {
                case 0:
                    m_info.UnsuscribeDistrict(m_currentSelectedDistrictID);
                    break;

                case 1:
                    m_info.AddDistrict(m_currentSelectedDistrictID);
                    break;
                }
            };
            m_resilientStateButton2.msb.AlignTo(m_districtInfoPanel.component, UIAlignAnchor.TopRight);
            m_resilientStateButton2.msb.relativePosition += new Vector3(-20f, 90f, 0f);

            m_districtInfoPanel.component.eventPositionChanged += (inst1, inst2) =>
            {
                if (m_districtInfoPanel.component.isVisible)
                {
                    OnSelectedDistricts();
                }
            };

            m_districtInfoPanel.component.eventOpacityChanged += (inst1, inst2) =>
            {
                if (m_districtInfoPanel.component.isVisible)
                {
                    OnSelectedDistricts();
                }
            };
        }
Exemplo n.º 30
0
        public static UIDropDown CreateStyledDropDown(UIComponent parent)
        {
            UIDropDown dropDown = parent.AddUIComponent <UIDropDown>();

            dropDown.size = new Vector2(105f, 24f);
            //dropDown.listBackground = "GenericPanelLight";
            dropDown.listWidth        = 105;
            dropDown.listHeight       = 500;
            dropDown.listBackground   = "LevelBarBackground";
            dropDown.disabledBgSprite = "LevelBarBackground";
            dropDown.focusedBgSprite  = "LevelBarBackground";
            //dropDown.hoveredBgSprite = "LevelBarBackground";
            dropDown.normalBgSprite       = "LevelBarBackground";
            dropDown.foregroundSpriteMode = UIForegroundSpriteMode.Stretch;

            dropDown.textColor           = new Color32(255, 255, 255, 255);
            dropDown.popupColor          = new Color32(255, 255, 255, 255);
            dropDown.popupTextColor      = new Color32(255, 255, 255, 255);
            dropDown.textScale           = 0.8f;
            dropDown.verticalAlignment   = UIVerticalAlignment.Middle;
            dropDown.horizontalAlignment = UIHorizontalAlignment.Left;
            dropDown.textFieldPadding    = new RectOffset(4, 0, 7, 0);
            dropDown.itemHeight          = 24;
            dropDown.itemPadding         = new RectOffset(4, 0, 7, 0);
            //dropDown.itemHover = "LevelBarBackground";
            //dropDown.itemHighlight = "LevelBarBackground";
            dropDown.selectedIndex = 0;
            dropDown.zOrder        = 1;


            //
            UIButton button = dropDown.AddUIComponent <UIButton>();

            dropDown.triggerButton = button;
            //button.text = "";
            button.size                 = new Vector2(105f, 24f);
            button.relativePosition     = new Vector3(0f, 0f);
            button.foregroundSpriteMode = UIForegroundSpriteMode.Fill;
            button.textPadding          = new RectOffset(0, 0, 5, 0);
            button.horizontalAlignment  = UIHorizontalAlignment.Right;
            button.verticalAlignment    = UIVerticalAlignment.Middle;
            //button.color = new Color32(238, 238, 238, 255);
            button.textColor         = new Color32(255, 255, 255, 255);
            button.hoveredTextColor  = new Color32(200, 200, 200, 255);
            button.pressedTextColor  = new Color32(200, 200, 200, 255);
            button.focusedTextColor  = new Color32(200, 200, 200, 255);
            button.disabledTextColor = new Color32(155, 155, 155, 255);
            button.textScale         = 0.8f;
            //button.hoveredBgSprite = "TextFieldUnderline";
            //button.pressedBgSprite = "TextFieldUnderline";
            //button.focusedBgSprite = "TextFieldUnderline";
            button.zOrder = 0;


            dropDown.eventSizeChanged += new PropertyChangedEventHandler <Vector2>((c, t) =>
            {
                button.size = t; dropDown.listWidth = (int)t.x;
            });

            return(dropDown);
        }
Exemplo n.º 31
0
        public static void SetupWaterCapacityPanel(UIComponent waterOptionsPanel)
        {
            var waterCapacityPanel = waterOptionsPanel.AddUIComponent<UIPanel>();
            waterCapacityPanel.size = new Vector2(231, 78);
            waterCapacityPanel.relativePosition = new Vector2(0, 40);
            waterCapacityPanel.name = "Settings";
            var waterCapacityLabel = waterCapacityPanel.AddUIComponent<UILabel>();
            waterCapacityLabel.localeID = "MAPEDITOR_WATERCAPACITY";
            waterCapacityLabel.size = new Vector2(137, 16);
            waterCapacityLabel.relativePosition = new Vector3(10, 16);
            var waterCapacityText = waterCapacityPanel.AddUIComponent<UITextField>();
            waterCapacityText.name = "Capacity";
            waterCapacityText.size = new Vector2(64, 18);
            waterCapacityText.normalBgSprite = "TextFieldPanel";
            waterCapacityText.builtinKeyNavigation = true;
            waterCapacityText.isInteractive = true;
            waterCapacityText.readOnly = false;
            waterCapacityText.selectionSprite = "EmptySprite";
            waterCapacityText.selectionBackgroundColor = new Color32(0, 172, 234, 255);

            waterCapacityText.relativePosition = new Vector3(150, 16, 0);
            var waterCapacitySlider = waterCapacityPanel.AddUIComponent<UISlider>();
            waterCapacitySlider.name = "Capacity";
            waterCapacitySlider.relativePosition = new Vector3(28, 39, 0);
            waterCapacitySlider.backgroundSprite = "ScrollbarTrack";
            waterCapacitySlider.size = new Vector2(174, 12);
            waterCapacitySlider.minValue = 0.0001f;
            waterCapacitySlider.maxValue = 1;
            waterCapacitySlider.stepSize = 0.0001f;
            var waterCapacitySliderThumb = waterCapacitySlider.AddUIComponent<UISlicedSprite>();
            waterCapacitySliderThumb.spriteName = "ScrollbarThumb";
            waterCapacitySliderThumb.size = new Vector2(10, 20);
            waterCapacitySlider.thumbObject = waterCapacitySliderThumb;

            var resetButton = waterOptionsPanel.AddUIComponent<UIButton>();
            resetButton.name = "Apply";
            resetButton.localeID = "MAPEDITOR_RESET_WATER";
            resetButton.size = new Vector2(191, 38);
            resetButton.relativePosition = new Vector3(20, 132);
            resetButton.eventClick += (component, eventParam) => { Singleton<TerrainManager>.instance.WaterSimulation.m_resetWater = true; };
            resetButton.normalBgSprite = "ButtonMenu";
            resetButton.hoveredBgSprite = "ButtonMenuHovered";
            resetButton.pressedBgSprite = "ButtonMenuPressed";
            resetButton.disabledBgSprite = "ButtonMenuDisabled";
            resetButton.canFocus = false;
        }
Exemplo n.º 32
0
        public static void makeSettings(UIHelperBase helper)
        {
            // tabbing code is borrowed from RushHour mod
            // https://github.com/PropaneDragon/RushHour/blob/release/RushHour/Options/OptionHandler.cs
            LoadSetting();
            UIHelper    actualHelper = helper as UIHelper;
            UIComponent container    = actualHelper.self as UIComponent;

            UITabstrip tabStrip = container.AddUIComponent <UITabstrip>();

            tabStrip.relativePosition = new Vector3(0, 0);
            tabStrip.size             = new Vector2(container.width - 20, 40);

            UITabContainer tabContainer = container.AddUIComponent <UITabContainer>();

            tabContainer.relativePosition = new Vector3(0, 40);
            tabContainer.size             = new Vector2(container.width - 20, container.height - tabStrip.height - 20);
            tabStrip.tabPages             = tabContainer;

            int tabIndex = 0;

            // Lane_ShortCut

            AddOptionTab(tabStrip, "Lane ShortCut");
            tabStrip.selectedIndex = tabIndex;

            UIPanel currentPanel = tabStrip.tabContainer.components[tabIndex] as UIPanel;

            currentPanel.autoLayout              = true;
            currentPanel.autoLayoutDirection     = LayoutDirection.Vertical;
            currentPanel.autoLayoutPadding.top   = 5;
            currentPanel.autoLayoutPadding.left  = 10;
            currentPanel.autoLayoutPadding.right = 10;

            UIHelper panelHelper = new UIHelper(currentPanel);

            var generalGroup = panelHelper.AddGroup("Lane Button ShortCut") as UIHelper;
            var panel        = generalGroup.self as UIPanel;

            panel.gameObject.AddComponent <OptionsKeymappingLane>();

            var generalGroup1 = panelHelper.AddGroup("ShortCuts Control") as UIHelper;

            generalGroup1.AddCheckbox("ShortCuts will be used for ToPanel Button", isShortCutsToPanel, (index) => isShortCutsToPanelEnable(index));
            generalGroup1.AddCheckbox("N/NP/N+1 is mutually excluded(select this if you never use ShortCuts)", isMutuallyExclude, (index) => isMutuallyExcludeEnable(index));
            SaveSetting();

            // Function_ShortCut
            ++tabIndex;

            AddOptionTab(tabStrip, "Function ShortCut");
            tabStrip.selectedIndex = tabIndex;

            currentPanel                         = tabStrip.tabContainer.components[tabIndex] as UIPanel;
            currentPanel.autoLayout              = true;
            currentPanel.autoLayoutDirection     = LayoutDirection.Vertical;
            currentPanel.autoLayoutPadding.top   = 5;
            currentPanel.autoLayoutPadding.left  = 10;
            currentPanel.autoLayoutPadding.right = 10;

            panelHelper = new UIHelper(currentPanel);

            generalGroup = panelHelper.AddGroup("Function Button ShortCut") as UIHelper;
            panel        = generalGroup.self as UIPanel;

            panel.gameObject.AddComponent <OptionsKeymappingFunction>();
        }
Exemplo n.º 33
0
        public static UICheckBox CreateIconToggle(UIComponent parent, string atlas, string checkedSprite, string uncheckedSprite)
        {
            UICheckBox checkBox = parent.AddUIComponent<UICheckBox>();

            checkBox.width = 35f;
            checkBox.height = 35f;
            checkBox.clipChildren = true;

            UIPanel panel = checkBox.AddUIComponent<UIPanel>();
            panel.backgroundSprite = "IconPolicyBaseRect";
            panel.size = checkBox.size;
            panel.relativePosition = Vector3.zero;

            checkBox.eventCheckChanged += (c, b) =>
            {
                if (checkBox.isChecked)
                    panel.backgroundSprite = "IconPolicyBaseRect";
                else
                    panel.backgroundSprite = "IconPolicyBaseRectDisabled";
                panel.Invalidate();
            };

            checkBox.eventMouseEnter += (c, p) =>
            {
                panel.backgroundSprite = "IconPolicyBaseRectHovered";
            };

            checkBox.eventMouseLeave += (c, p) =>
            {
                if (checkBox.isChecked)
                    panel.backgroundSprite = "IconPolicyBaseRect";
                else
                    panel.backgroundSprite = "IconPolicyBaseRectDisabled";
            };

            UISprite sprite = panel.AddUIComponent<UISprite>();
            sprite.atlas = GetAtlas(atlas);
            sprite.spriteName = uncheckedSprite;
            sprite.size = checkBox.size;
            sprite.relativePosition = Vector3.zero;

            checkBox.checkedBoxObject = sprite.AddUIComponent<UISprite>();
            ((UISprite)checkBox.checkedBoxObject).atlas = sprite.atlas;
            ((UISprite)checkBox.checkedBoxObject).spriteName = checkedSprite;
            checkBox.checkedBoxObject.size = checkBox.size;
            checkBox.checkedBoxObject.relativePosition = Vector3.zero;

            return checkBox;
        }
Exemplo n.º 34
0
        public static void makeSettings(UIHelperBase helper)
        {
            // tabbing code is borrowed from RushHour mod
            // https://github.com/PropaneDragon/RushHour/blob/release/RushHour/Options/OptionHandler.cs
            LoadSetting();
            UIHelper    actualHelper = helper as UIHelper;
            UIComponent container    = actualHelper.self as UIComponent;

            UITabstrip tabStrip = container.AddUIComponent <UITabstrip>();

            tabStrip.relativePosition = new Vector3(0, 0);
            tabStrip.size             = new Vector2(container.width - 20, 40);

            UITabContainer tabContainer = container.AddUIComponent <UITabContainer>();

            tabContainer.relativePosition = new Vector3(0, 40);
            tabContainer.size             = new Vector2(container.width - 20, container.height - tabStrip.height - 20);
            tabStrip.tabPages             = tabContainer;

            int tabIndex = 0;

            // Lane_ShortCut

            AddOptionTab(tabStrip, Localization.Get("Lane_ShortCut"));
            tabStrip.selectedIndex = tabIndex;

            UIPanel currentPanel = tabStrip.tabContainer.components[tabIndex] as UIPanel;

            currentPanel.autoLayout              = true;
            currentPanel.autoLayoutDirection     = LayoutDirection.Vertical;
            currentPanel.autoLayoutPadding.top   = 5;
            currentPanel.autoLayoutPadding.left  = 10;
            currentPanel.autoLayoutPadding.right = 10;

            UIHelper panelHelper = new UIHelper(currentPanel);

            var generalGroup = panelHelper.AddGroup(Localization.Get("Lane_Button_ShortCut")) as UIHelper;
            var panel        = generalGroup.self as UIPanel;

            panel.gameObject.AddComponent <OptionsKeymappingLane>();

            var generalGroup1 = panelHelper.AddGroup(Localization.Get("ShortCuts_Control")) as UIHelper;

            generalGroup1.AddCheckbox(Localization.Get("ShortCuts_Control_TIPS"), isShortCutsToPanel, (index) => isShortCutsToPanelEnable(index));

            // Function_ShortCut
            ++tabIndex;

            AddOptionTab(tabStrip, Localization.Get("Function_ShortCut"));
            tabStrip.selectedIndex = tabIndex;

            currentPanel                         = tabStrip.tabContainer.components[tabIndex] as UIPanel;
            currentPanel.autoLayout              = true;
            currentPanel.autoLayoutDirection     = LayoutDirection.Vertical;
            currentPanel.autoLayoutPadding.top   = 5;
            currentPanel.autoLayoutPadding.left  = 10;
            currentPanel.autoLayoutPadding.right = 10;

            panelHelper = new UIHelper(currentPanel);

            generalGroup = panelHelper.AddGroup(Localization.Get("Function_Button_ShortCut")) as UIHelper;
            panel        = generalGroup.self as UIPanel;

            panel.gameObject.AddComponent <OptionsKeymappingFunction>();

            ++tabIndex;

            AddOptionTab(tabStrip, Localization.Get("Experimental_Function"));
            tabStrip.selectedIndex = tabIndex;

            currentPanel                         = tabStrip.tabContainer.components[tabIndex] as UIPanel;
            currentPanel.autoLayout              = true;
            currentPanel.autoLayoutDirection     = LayoutDirection.Vertical;
            currentPanel.autoLayoutPadding.top   = 5;
            currentPanel.autoLayoutPadding.left  = 10;
            currentPanel.autoLayoutPadding.right = 10;

            panelHelper = new UIHelper(currentPanel);
            var generalGroup2 = panelHelper.AddGroup(Localization.Get("Experimental_Function")) as UIHelper;

            generalGroup2.AddCheckbox(Localization.Get("Debug_Mode"), isDebug, (index0) => isDebugEnable(index0));
            generalGroup2.AddCheckbox(Localization.Get("DisableZone"), disableZone, (index1) => isDisableZoneEnable(index1));
            generalGroup2.AddCheckbox(Localization.Get("UpdateZone"), disableZoneUpdateAll, (index2) => isDisableZoneUpdateAllEnable(index2));
            generalGroup2.AddCheckbox(Localization.Get("EnablePillar"), enablePillar, (index3) => isEnablePillarEnable(index3));
            generalGroup2.AddDropdown(Localization.Get("Lane_Smooth_Level"), new string[] { Localization.Get("Low"), Localization.Get("Medium"), Localization.Get("High") }, smoothLevel, (index4) => GetSmoothLevel(index4));
            SaveSetting();
        }
Exemplo n.º 35
0
        public static UITextField CreateTextField(UIComponent parent)
        {
            UITextField textField = parent.AddUIComponent<UITextField>();

            textField.size = new Vector2(90f, 20f);
            textField.padding = new RectOffset(6, 6, 3, 3);
            textField.builtinKeyNavigation = true;
            textField.isInteractive = true;
            textField.readOnly = false;
            textField.horizontalAlignment = UIHorizontalAlignment.Center;
            textField.selectionSprite = "EmptySprite";
            textField.selectionBackgroundColor = new Color32(0, 172, 234, 255);
            textField.normalBgSprite = "TextFieldPanelHovered";
            textField.disabledBgSprite = "TextFieldPanel";
            textField.textColor = new Color32(0, 0, 0, 255);
            textField.disabledTextColor = new Color32(0, 0, 0, 128);
            textField.color = new Color32(255, 255, 255, 255);

            return textField;
        }
Exemplo n.º 36
0
 public static VehicleListBox Create(UIComponent parent)
 {
     return(parent.AddUIComponent <VehicleListBox>());
 }
 private static UIButton MakeButton(UIComponent component, string t)
 {
     UIButton b = (UIButton) component.AddUIComponent(typeof(UIButton));
     b.text = t;
     b.width = 200;
     b.height = 24;
     b.normalBgSprite = "ButtonMenu";
     b.disabledBgSprite = "ButtonMenuDisabled";
     b.hoveredBgSprite = "ButtonMenuHovered";
     b.focusedBgSprite = "ButtonMenuFocused";
     b.pressedBgSprite = "ButtonMenuPressed";
     b.textColor = new Color32(255, 255, 255, 255);
     b.disabledTextColor = new Color32(7, 7, 7, 255);
     b.hoveredTextColor = new Color32(7, 132, 255, 255);
     b.focusedTextColor = new Color32(255, 255, 255, 255);
     b.pressedTextColor = new Color32(30, 30, 44, 255);
     b.playAudioEvents = true;
     b.isTooltipLocalized = false;
     return b;
 }
Exemplo n.º 38
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);
        }
Exemplo n.º 39
0
 private void InitialiseUpdatePanel(UIComponent parent)
 {
     _updatePanel = parent.AddUIComponent<UpdatePanel>();
     _updatePanel.SetPositionSpeakyPoint(new Vector2(parent.position.x, parent.position.y) + new Vector2(parent.size.x - 10, 10));
     _updatePanel.Initialise(CimToolsHandler.CimToolBase);
 }
Exemplo n.º 40
0
        public static UICheckBox CreateIconToggle(UIComponent parent, string atlas, string checkedSprite, string uncheckedSprite, float disabledSpriteOpacity = 1.0f, float tabSize = 35f)
        {
            UICheckBox checkBox = parent.AddUIComponent <UICheckBox>();

            disabledSpriteOpacity = 0.3f;

            checkBox.width        = tabSize;
            checkBox.height       = tabSize;
            checkBox.clipChildren = true;

            UIPanel panel = checkBox.AddUIComponent <UIPanel>();

            panel.atlas            = GetAtlas("Ingame");
            panel.backgroundSprite = "IconPolicyBaseRect";
            panel.size             = checkBox.size;
            panel.relativePosition = Vector3.zero;

            UISprite sprite = panel.AddUIComponent <UISprite>();

            sprite.atlas = GetAtlas(atlas);

            sprite.spriteName       = uncheckedSprite;
            sprite.size             = checkBox.size;
            sprite.relativePosition = Vector3.zero;

            checkBox.checkedBoxObject = sprite.AddUIComponent <UISprite>();
            ((UISprite)checkBox.checkedBoxObject).atlas      = sprite.atlas;
            ((UISprite)checkBox.checkedBoxObject).spriteName = checkedSprite;
            checkBox.checkedBoxObject.size             = checkBox.size;
            checkBox.checkedBoxObject.relativePosition = Vector3.zero;

            checkBox.eventCheckChanged += (c, b) =>
            {
                if (checkBox.isChecked)
                {
                    panel.backgroundSprite = "IconPolicyBaseRect";
                    sprite.opacity         = 1.0f;
                }
                else
                {
                    panel.backgroundSprite = "IconPolicyBaseRectDisabled";
                    sprite.opacity         = disabledSpriteOpacity;
                }
                panel.Invalidate();
            };

            checkBox.eventMouseEnter += (c, p) =>
            {
                panel.backgroundSprite = "IconPolicyBaseRectHovered";
                sprite.spriteName      = checkedSprite;
                sprite.opacity         = 1.0f;
            };

            checkBox.eventMouseLeave += (c, p) =>
            {
                if (checkBox.isChecked)
                {
                    panel.backgroundSprite = "IconPolicyBaseRect";
                    sprite.opacity         = 1.0f;
                }
                else
                {
                    panel.backgroundSprite = "IconPolicyBaseRectDisabled";
                    sprite.opacity         = disabledSpriteOpacity;
                }
                sprite.spriteName = uncheckedSprite;
            };

            return(checkBox);
        }