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; }
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; }
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; }
// 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; }
// 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; }
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; }
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; }
public static void CreateSpace(float width, float height, UIComponent parent) { UIPanel panel = parent.AddUIComponent <UIPanel>(); panel.size = new Vector2(width, height); }
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>(); } }; }
//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); }
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(); }
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>()); }
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>(); }
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); }
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(); } }
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); }
/// <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; }
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); } }
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; }
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>(); } }; }
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); }
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); }
/********** 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(); } }; }
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); }
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; }
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>(); }
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; }
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(); }
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; }
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; }
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); }
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); }
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); }