public void Update() { if (!_initialized) { var go = GameObject.Find("(Library) ChirpXPanel"); if (go == null) { return; } var infoPanel = go.GetComponent <ChirpXPanel>(); if (infoPanel == null) { return; } _chirpXPanel = infoPanel; _rocketDropDown = UiUtil.CreateDropDown(_chirpXPanel.component); _rocketDropDown.width = 250; PrefabLister.ListRockets().ForEach(r => { _rocketDropDown.AddItem(r.name); }); _rocketDropDown.eventSelectedIndexChanged += IndexChangeHandler; _rocketLabel = UiUtil.CreateLabel("Rocket", _chirpXPanel.component, new Vector3()); _initialized = true; } if (!_chirpXPanel.component.isVisible) { return; } SetUpRocketDropDown(); }
void RefreshSkinsList() { if (_skinsDropdown != null) { _availableSkins = SkinLoader.FindAllSkins(); _skinsDropdown.localizedItems = new string[0]; _skinsDropdown.AddItem("Vanilla (by Colossal Order)"); foreach (var skin in _availableSkins) { _skinsDropdown.AddItem(String.Format("{0} (by {1})", skin.Name, skin.Author)); } _skinsDropdown.selectedIndex = 0; _skinsDropdown.Invalidate(); } }
public void LevelDropdown() { levelDropdown = panel.AddUIComponent <UIDropDown>(); UIX.DropDown(levelDropdown); var values = Enum.GetValues(typeof(ItemClass.Level)); levelDropdown.AddItem("All"); foreach (var itemClass in values) { var name = Enum.GetName(typeof(ItemClass.Level), itemClass); levelDropdown.AddItem(name); } levelDropdown.selectedIndex = 0; levelDropdown.eventSelectedIndexChanged += levelDropdown_eventSelectedIndexChanged; }
protected override void OnVisibilityChanged() { base.OnVisibilityChanged(); UIComponent modalEffect = GetUIView().panelsLibraryModalEffect; if (isVisible) { if (UIThemeManager.instance.selectedBuilding == null) { UIView.PopModal(); Hide(); return; } m_item = UIThemeManager.instance.selectedBuilding; // Name m_name.text = m_item.displayName; // Level int maxLevel = m_item.maxLevel; m_level.items = new string[0]; for (int i = 1; i <= maxLevel; i++) { m_level.AddItem("Level " + i); } m_level.selectedIndex = (m_item.level < maxLevel) ? m_item.level : 0; CheckValidity(); if (modalEffect != null) { modalEffect.Show(false); ValueAnimator.Animate("NewThemeModalEffect", delegate(float val) { modalEffect.opacity = val; }, new AnimatedFloat(0f, 1f, 0.7f, EasingType.CubicEaseOut)); } } else if (modalEffect != null) { ValueAnimator.Animate("NewThemeModalEffect", delegate(float val) { modalEffect.opacity = val; }, new AnimatedFloat(1f, 0f, 0.7f, EasingType.CubicEaseOut), delegate { modalEffect.Hide(); }); } }
public void ServiceDropdown() { serviceDropdown = panel.AddUIComponent <UIDropDown>(); UIX.DropDown(serviceDropdown); var values = Enum.GetValues(typeof(ItemClass.Service)); foreach (var itemClass in values) { var name = Enum.GetName(typeof(ItemClass.Service), itemClass); serviceDropdown.AddItem(name); } serviceDropdown.selectedIndex = 0; serviceDropdown.eventSelectedIndexChanged += serviceDropdown_eventSelectedIndexChanged; }
void ModesDropdown() { modesDropdown = panel.AddUIComponent <UIDropDown>(); UIX.DropDown(modesDropdown); var values = Enum.GetValues(typeof(BuildingInfo.PlacementMode)); foreach (var itemClass in values) { var name = Enum.GetName(typeof(BuildingInfo.PlacementMode), itemClass); modesDropdown.AddItem(name); } modesDropdown.selectedIndex = 0; modesDropdown.eventSelectedIndexChanged += modesDropdown_eventSelectedIndexChanged; }
private void CreatePanelComponents() { List <string> values = new List <string> { "None", "Random" }; values.AddRange(TextureUtils.m_screenTextureStore.Keys); yCursor = titleOffset + m_UIPadding.top; for (int i = 0; i < NUM_DROPDOWNS; i++) { UILabel descLabel = this.AddUIComponent <UILabel>(); descLabel.text = "Screen " + i; descLabel.autoSize = true; descLabel.size = new Vector2(this.width - m_UIPadding.left - m_UIPadding.right, 50); descLabel.padding = m_UIPadding; descLabel.relativePosition = new Vector2(m_UIPadding.left, yCursor); descLabel.textAlignment = UIHorizontalAlignment.Left; descLabel.verticalAlignment = UIVerticalAlignment.Middle; yCursor += (descLabel.height + 2 * m_UIPadding.top); UIDropDown dropDown = UIUtils.CreateDropDown(this, new Vector2(((this.width - m_UIPadding.left - m_UIPadding.right)), 25)); foreach (string name in values) { dropDown.AddItem(name); } dropDown.relativePosition = new Vector2(m_UIPadding.left, yCursor); dropDown.selectedIndex = 0; DropdownGroup group = new DropdownGroup(); group.dropDown = dropDown; group.label = descLabel; group.dropDown.Hide(); group.label.Hide(); dropDownGroups[i] = group; yCursor += (dropDown.height + 2 * m_UIPadding.top); } setButton = UIUtils.CreateButton(this); setButton.text = "Set"; setButton.size = new Vector2(this.width - m_UIPadding.left - m_UIPadding.right, 50); setButton.relativePosition = new Vector2(m_UIPadding.left, yCursor); setButton.eventClicked += SetButton_eventClicked; this.height = yCursor + setButton.height + m_UIPadding.bottom; }
void PropToolDropdown() { propToolDropdown = panel.AddUIComponent <UIDropDown>(); UIX.DropDown(propToolDropdown); for (uint i = 0; i < PrefabCollection <PropInfo> .PrefabCount(); i++) { var prefab = PrefabCollection <PropInfo> .GetPrefab(i); if (prefab != null) { propToolDropdown.AddItem(prefab.name); } } propToolDropdown.selectedIndex = 0; propToolDropdown.eventSelectedIndexChanged += propToolDropdown_eventSelectedIndexChanged; }
public void RefreshButtons() { itemsDropdown.items = new string[0]; for (uint i = 0; i < PrefabCollection <BuildingInfo> .PrefabCount(); i++) { var prefab = PrefabCollection <BuildingInfo> .GetPrefab(i); if (prefab.GetService().ToString() == serviceDropdown.selectedValue) { if (prefab.m_class.m_level.ToString() == levelDropdown.selectedValue || levelDropdown.selectedValue == "All") { itemsDropdown.AddItem(prefab.name); } } } }
void NetToolDropdown() { netToolDropdown = panel.AddUIComponent <UIDropDown>(); UIX.DropDown(netToolDropdown); for (uint i = 0; i < PrefabCollection <NetInfo> .PrefabCount(); i++) { var prefab = PrefabCollection <NetInfo> .GetPrefab(i); if (prefab != null) { netToolDropdown.AddItem(prefab.name); } } netToolDropdown.selectedIndex = 0; netToolDropdown.eventSelectedIndexChanged += netToolDropdown_eventSelectedIndexChanged; netToolDropdown.eventClick += netToolDropdown_eventClick; }
private void InitializeDropdown(UIDropDown dropDown, IEnumerable <string> items, int x, int y) { dropDown.relativePosition = new Vector3(x, y - 4); dropDown.horizontalAlignment = UIHorizontalAlignment.Left; dropDown.textScale = 0.8f; dropDown.color = Color.black; dropDown.verticalAlignment = UIVerticalAlignment.Middle; dropDown.foregroundSpriteMode = UIForegroundSpriteMode.Fill; dropDown.normalBgSprite = "TextFieldPanel"; dropDown.hoveredBgSprite = "TextFieldPanelHovered"; dropDown.focusedBgSprite = "TextFieldPanel"; dropDown.size = new Vector3(width - 120 - 30, 20); dropDown.isInteractive = true; dropDown.enabled = true; dropDown.builtinKeyNavigation = true; foreach (string item in items) { dropDown.AddItem(item); } }
private void CreatePanelComponents() { m_routeLabel = this.AddUIComponent <UILabel>(); m_routeLabel.textScale = 1f; m_routeLabel.size = new Vector3(m_UIPadding.left, m_panelTitle.height + m_UIPadding.bottom); m_routeLabel.textColor = new Color32(180, 180, 180, 255); m_routeLabel.relativePosition = new Vector3(m_UIPadding.left, m_panelTitle.height + m_UIPadding.bottom); m_routeLabel.textAlignment = UIHorizontalAlignment.Left; m_routeLabel.text = "Route Name"; m_routeTypeDropdown = UIUtils.CreateDropDown(this, new Vector2(((this.width - m_UIPadding.left - 2 * m_UIPadding.right)), 25)); //TODO: Replace with Random namer values foreach (RouteShieldInfo info in RouteShieldConfig.Instance().routeShieldDictionary.Values) { m_routeTypeDropdown.AddItem(info.textureName); } m_routeTypeDropdown.selectedIndex = 0; m_routeTypeDropdown.relativePosition = new Vector3(m_UIPadding.left, m_routeLabel.relativePosition.y + m_routeLabel.height + m_UIPadding.bottom); m_routeStrField = UIUtils.CreateTextField(this); m_routeStrField.relativePosition = new Vector3(m_UIPadding.left, m_routeTypeDropdown.relativePosition.y + m_routeTypeDropdown.height + m_UIPadding.bottom); m_routeStrField.height = 25; m_routeStrField.width = (this.width - m_UIPadding.left - 2 * m_UIPadding.right); m_routeStrField.processMarkup = false; //Might re-implement this eventually (needs work to stop it screwing up with markup) m_routeStrField.textColor = Color.white; m_routeStrField.maxLength = 3; UIButton nameRoadButton = UIUtils.CreateButton(this); nameRoadButton.text = "Set"; nameRoadButton.size = new Vector2(60, 30); nameRoadButton.relativePosition = new Vector3(this.width - nameRoadButton.width - m_UIPadding.right, m_routeStrField.relativePosition.y + m_routeStrField.height + m_UIPadding.bottom); nameRoadButton.eventClicked += NameRoadButton_eventClicked; nameRoadButton.tooltip = "Create the label"; this.height = nameRoadButton.relativePosition.y + nameRoadButton.height + m_UIPadding.bottom; }
public override void Start() { atlas = UIUtils.GetAtlas("Ingame"); backgroundSprite = "MenuPanel2"; color = new Color32(255, 255, 255, 255); isVisible = false; canFocus = true; isInteractive = true; clipChildren = true; width = 470; height = 225; relativePosition = new Vector3(25, 680); // Title Bar m_title = AddUIComponent <UITitleBar>(); m_title.title = "Bulk Network Replacer"; //m_title.isModal = true; UILabel areaTypeLabel = AddUIComponent <UILabel>(); //"select from road panel" areaTypeLabel.autoSize = false; areaTypeLabel.width = 60; areaTypeLabel.height = 30; areaTypeLabel.relativePosition = new Vector2(20, 60); areaTypeLabel.text = "Area:"; areaTypeDropdown = UIUtils.CreateDropDown(this); areaTypeDropdown.width = 175; areaTypeDropdown.AddItem("Entire Map"); areaTypeDropdown.AddItem("Selection"); areaTypeDropdown.selectedIndex = 0; areaTypeDropdown.relativePosition = new Vector3(80, 55); fromFieldRow = AddUIComponent <UIPanel>(); fromFieldRow.relativePosition = new Vector2(0, 100); fromFieldRow.size = new Vector2(width, 0); fromRowUI(); toFieldRow = AddUIComponent <UIPanel>(); toFieldRow.relativePosition = new Vector2(0, 140); toFieldRow.size = new Vector2(width, 0); toRowUI(); replaceRoad = UIUtils.CreateButton(this); replaceRoad.text = "Replace Network"; replaceRoad.relativePosition = new Vector2(20, 180); replaceRoad.width = 200; replaceRoad.eventClick += (c, p) => { if (isVisible) { Debug.Log("from: " + fromRoadLabel.text + "\nto:" + toRoadLabel.text); if (fromRoadLabel.text == NullRoadPhrase || toRoadLabel.text == NullRoadPhrase) { Tools.ShowErrorWindow("Input Error", "Bulk Network Replacer:\n\n" + "The from and/or to field have no network(s) selected"); } else if (fromRoadLabel.text == toRoadLabel.text) { Debug.Log("dups"); Tools.ShowErrorWindow("Duplicate Networks", "Bulk Network Replacer:\n\n" + "The from and to fields have the same network selected"); } else if (fromRoadLabel.text != NullRoadPhrase && toRoadLabel.text != NullRoadPhrase) { Tools.UpgradeNetSegments(fromRoadLabel.text, toRoadLabel.text); } else { Tools.ShowErrorWindow("Unknown Error", "Bulk Network Replacer:\n\n" + "Report the steps before clicking taken on the workshop page of this mod"); } } }; swapFromToButton = UIUtils.CreateButton(this); swapFromToButton.text = "Swap"; swapFromToButton.relativePosition = new Vector2(230, 180); swapFromToButton.width = 90; swapFromToButton.eventClick += (c, p) => { if (isVisible) { var fromtext = fromRoadLabel.text; var totext = toRoadLabel.text; fromRoadLabel.text = totext; toRoadLabel.text = fromtext; } }; clearAllButton = UIUtils.CreateButton(this); clearAllButton.text = "Clear All"; clearAllButton.relativePosition = new Vector2(330, 180); clearAllButton.width = 110; clearAllButton.eventClick += (c, p) => { if (isVisible) { initialRoadAdd.isVisible = true; fromRoadLabel.isVisible = false; finalRoadAdd.isVisible = true; toRoadLabel.isVisible = false; removeFromFieldButton.isVisible = false; removeToFieldButton.isVisible = false; fromRoadLabel.text = NullRoadPhrase; toRoadLabel.text = NullRoadPhrase; } }; }
private UIPanel CreateQuartzPanel() { var uiView = GameObject.Find("UIView").GetComponent <UIView>(); if (uiView == null) { Debug.LogError("UIView is null!"); return(null); } var panel = uiView.AddUIComponent(typeof(UIPanel)) as UIPanel; if (panel != null) { panel.size = new Vector2(300, 290); panel.isVisible = false; panel.atlas = EmbeddedResources.GetQuartzAtlas(); panel.backgroundSprite = "DefaultPanelBackground"; Vector2 viewSize = uiView.GetScreenResolution(); panel.relativePosition = _currentModuleClass == Skin.ModuleClass.MainMenu ? new Vector3(viewSize.x - 2.0f - panel.size.x, 34.0f) : new Vector3(viewSize.x - 2.0f - panel.size.x, 34.0f + 64.0f + 15.0f); panel.name = "QuartzSkinManager"; var title = panel.AddUIComponent <UILabel>(); title.relativePosition = new Vector3(2.0f, 2.0f); title.text = "Quartz Skin Manager"; title.textColor = Color.black; } float y = 32.0f; UIUtil.MakeCheckbox(panel, "ShowIconInGame", "Show Quartz icon in-game", new Vector2(4.0f, y), ConfigManager.ShowQuartzIconInGame, value => { ConfigManager.ShowQuartzIconInGame = value; if (_quartzButton != null && !ConfigManager.ShowQuartzIconInGame && _currentModuleClass == Skin.ModuleClass.InGame) { _quartzButton.isVisible = false; if (_quartzPanel != null) { _quartzPanel.isVisible = false; } } else if (_quartzButton != null) { _quartzButton.isVisible = true; } }); y += 28.0f; UIUtil.MakeCheckbox(panel, "AutoApplySkin", "Apply skin on start-up", new Vector2(4.0f, y), ConfigManager.ApplySkinOnStartup, value => { ConfigManager.ApplySkinOnStartup = value; }); y += 28.0f; UIUtil.MakeCheckbox(panel, "DrawDebugInfo", "Developer mode (Ctrl+D)", new Vector2(4.0f, y), false, value => { if (_debugRenderer != null) { _debugRenderer.drawDebugInfo = value; } }); y += 28.0f; UIUtil.MakeCheckbox(panel, "AutoReload", "Auto-reload active skin on file change", new Vector2(4.0f, y), false, value => { _autoReloadSkinOnChange = value; ReloadAndApplyActiveSkin(); }); y += 28.0f; UIUtil.MakeCheckbox(panel, "IgnoreMissing", "Force load (May break stuff)", new Vector2(4.0f, y), ConfigManager.IgnoreMissingComponents, value => { ConfigManager.IgnoreMissingComponents = value; }); y += 28.0f; _skinsDropdown = panel.AddUIComponent <UIDropDown>(); _skinsDropdown.AddItem("Vanilla (by Colossal Order)"); foreach (var skin in _availableSkins) { _skinsDropdown.AddItem(String.Format("{0} (by {1}){2}", skin.Name, skin.Author, skin.Legacy ? " [LEGACY]" : string.Empty)); } _skinsDropdown.size = new Vector2(296.0f, 32.0f); _skinsDropdown.relativePosition = new Vector3(2.0f, y); _skinsDropdown.listBackground = "GenericPanelLight"; _skinsDropdown.itemHeight = 32; _skinsDropdown.itemHover = "ListItemHover"; _skinsDropdown.itemHighlight = "ListItemHighlight"; _skinsDropdown.normalBgSprite = "ButtonMenu"; _skinsDropdown.listWidth = 300; _skinsDropdown.listHeight = 500; _skinsDropdown.foregroundSpriteMode = UIForegroundSpriteMode.Stretch; _skinsDropdown.popupColor = new Color32(45, 52, 61, 255); _skinsDropdown.popupTextColor = new Color32(170, 170, 170, 255); _skinsDropdown.zOrder = 1; _skinsDropdown.textScale = 0.8f; _skinsDropdown.verticalAlignment = UIVerticalAlignment.Middle; _skinsDropdown.horizontalAlignment = UIHorizontalAlignment.Center; _skinsDropdown.textFieldPadding = new RectOffset(8, 0, 8, 0); _skinsDropdown.itemPadding = new RectOffset(8, 0, 2, 0); _skinsDropdown.selectedIndex = 0; if (_currentSkin != null) { int i = 1; foreach (var skin in _availableSkins) { if (skin.Path == _currentSkin.SapphirePath) { _skinsDropdown.selectedIndex = i; } i++; } } _skinsDropdown.eventSelectedIndexChanged += (component, index) => { if (index == 0) { if (_currentSkin != null) { _currentSkin.Dispose(); } _currentSkin = null; return; } var skin = _availableSkins[index - 1]; if (_currentSkin != null && _currentSkin.SapphirePath == skin.Path) { return; } if (_currentSkin != null) { _currentSkin.Dispose(); } _currentSkin = Skin.FromXmlFile(Path.Combine(skin.Path, "skin.xml"), _autoReloadSkinOnChange); if (_currentSkin.IsValid) { _currentSkin.Apply(_currentModuleClass); } else { Debug.LogWarning("Skin is invalid, will not apply.. (check messages above for errors)"); } ConfigManager.SelectedSkinPath = _currentSkin.SapphirePath; panel.isVisible = false; }; var skinsDropdownButton = _skinsDropdown.AddUIComponent <UIButton>(); _skinsDropdown.triggerButton = skinsDropdownButton; skinsDropdownButton.text = ""; skinsDropdownButton.size = _skinsDropdown.size; skinsDropdownButton.relativePosition = new Vector3(0.0f, 0.0f); skinsDropdownButton.textVerticalAlignment = UIVerticalAlignment.Middle; skinsDropdownButton.textHorizontalAlignment = UIHorizontalAlignment.Center; skinsDropdownButton.normalFgSprite = "IconDownArrow"; skinsDropdownButton.hoveredFgSprite = "IconDownArrowHovered"; skinsDropdownButton.pressedFgSprite = "IconDownArrowPressed"; skinsDropdownButton.focusedFgSprite = "IconDownArrowFocused"; skinsDropdownButton.disabledFgSprite = "IconDownArrowDisabled"; skinsDropdownButton.foregroundSpriteMode = UIForegroundSpriteMode.Fill; skinsDropdownButton.horizontalAlignment = UIHorizontalAlignment.Right; skinsDropdownButton.verticalAlignment = UIVerticalAlignment.Middle; skinsDropdownButton.zOrder = 0; skinsDropdownButton.textScale = 0.8f; y += 40.0f; UIUtil.MakeButton(panel, "ReloadSkin", "Reload active skin (Ctrl+Shift+S)", new Vector2(4.0f, y), ReloadAndApplyActiveSkin); y += 36.0f; UIUtil.MakeButton(panel, "RefreshSkins", "Refresh available skins", new Vector2(4.0f, y), RefreshSkinsList); return(panel); }
private void SetupControls() { // Highway gantries: var gantryContainer = UIUtils.CreateFormElement(this, "top"); gantryContainer.name = "gantryContainer"; gantryContainer.relativePosition = new Vector3(0, 23); gantryContainer.autoLayout = false; var gantryLabel = gantryContainer.AddUIComponent <UILabel>(); gantryLabel.width = 140f; gantryLabel.relativePosition = new Vector3(5, 0); gantryLabel.text = "Highway gantries"; gantryLabel.textColor = new Color(187, 187, 187, 255); gantryLabel.textScale = 0.8f; gantryLabel.padding = new RectOffset(0, 0, 0, 5); _gantryDropdown = UIUtils.CreateStyledDropDown(gantryContainer); _gantryDropdown.name = "gantryDropdown"; _gantryDropdown.width = 105f; _gantryDropdown.height = 24f; _gantryDropdown.relativePosition = new Vector3(145, -6); _gantryDropdown.AddItem("American"); _gantryDropdown.AddItem("Vanilla"); _gantryDropdown.AddItem("Hide"); _gantryDropdown.selectedIndex = AmericanRoadsignsTool.config.rendermode_highwaygantry; _gantryDropdown.eventSelectedIndexChanged += (c, i) => { if (!isInitialized) { return; } DropdownChanged(c, i); }; // Alternative highway gantry sign texture: var textureContainer = UIUtils.CreateFormElement(this, "center"); textureContainer.name = "textureContainer"; textureContainer.relativePosition = new Vector3(0, 55); _textureCheckbox = UIUtils.CreateCheckBox(textureContainer); _textureCheckbox.relativePosition = new Vector3(5, 17); _textureCheckbox.label.text = "Use alternative gantry texture"; _textureCheckbox.isChecked = AmericanRoadsignsTool.config.rendermode_highwaygantry_usealt; _textureCheckbox.eventCheckChanged += CheckboxChanged; // Highway signs: var highwayContainer = UIUtils.CreateFormElement(this, "center"); highwayContainer.name = "highwayContainer"; highwayContainer.relativePosition = new Vector3(0, 90); highwayContainer.autoLayout = false; var highwayLabel = highwayContainer.AddUIComponent <UILabel>(); highwayLabel.width = 140f; highwayLabel.relativePosition = new Vector3(5, 0); highwayLabel.text = "Highway signs"; highwayLabel.textColor = new Color(187, 187, 187, 255); highwayLabel.textScale = 0.8f; highwayLabel.padding = new RectOffset(0, 0, 0, 5); _highwayDropdown = UIUtils.CreateStyledDropDown(highwayContainer); _highwayDropdown.name = "highwayDropdown"; _highwayDropdown.width = 105f; _highwayDropdown.height = 24f; _highwayDropdown.relativePosition = new Vector3(145, -6); _highwayDropdown.AddItem("American"); _highwayDropdown.AddItem("Vanilla"); _highwayDropdown.AddItem("Hide"); _highwayDropdown.selectedIndex = AmericanRoadsignsTool.config.rendermode_highwaysign; _highwayDropdown.eventSelectedIndexChanged += (c, i) => { if (!isInitialized) { return; } DropdownChanged(c, i); }; // No parking signs: var noparkingContainer = UIUtils.CreateFormElement(this, "center"); noparkingContainer.name = "noparkingContainer"; noparkingContainer.relativePosition = new Vector3(0, 125); noparkingContainer.autoLayout = false; var noparkingLabel = noparkingContainer.AddUIComponent <UILabel>(); noparkingLabel.width = 140f; noparkingLabel.relativePosition = new Vector3(5, 0); noparkingLabel.text = "No parking signs"; noparkingLabel.textColor = new Color(187, 187, 187, 255); noparkingLabel.textScale = 0.8f; noparkingLabel.padding = new RectOffset(0, 0, 0, 5); _noparkingDropdown = UIUtils.CreateStyledDropDown(noparkingContainer); _noparkingDropdown.name = "noparkingDropdown"; _noparkingDropdown.width = 105f; _noparkingDropdown.height = 24f; _noparkingDropdown.relativePosition = new Vector3(145, -6); _noparkingDropdown.AddItem("American"); _noparkingDropdown.AddItem("Vanilla"); _noparkingDropdown.AddItem("Hide"); _noparkingDropdown.selectedIndex = AmericanRoadsignsTool.config.rendermode_noparking; _noparkingDropdown.eventSelectedIndexChanged += (c, i) => { if (!isInitialized) { return; } DropdownChanged(c, i); }; // No turning signs: var turningContainer = UIUtils.CreateFormElement(this, "center"); turningContainer.name = "turningContainer"; turningContainer.relativePosition = new Vector3(0, 160); turningContainer.autoLayout = false; var turningLabel = turningContainer.AddUIComponent <UILabel>(); turningLabel.width = 140f; turningLabel.relativePosition = new Vector3(5, 0); turningLabel.text = "No turning signs"; turningLabel.textColor = new Color(187, 187, 187, 255); turningLabel.textScale = 0.8f; turningLabel.padding = new RectOffset(0, 0, 0, 5); _turningDropdown = UIUtils.CreateStyledDropDown(turningContainer); _turningDropdown.name = "turningDropdown"; _turningDropdown.width = 105f; _turningDropdown.height = 24f; _turningDropdown.relativePosition = new Vector3(145, -6); _turningDropdown.AddItem("American"); _turningDropdown.AddItem("Vanilla"); _turningDropdown.AddItem("Hide"); _turningDropdown.selectedIndex = AmericanRoadsignsTool.config.rendermode_noturnings; _turningDropdown.eventSelectedIndexChanged += (c, i) => { if (!isInitialized) { return; } DropdownChanged(c, i); }; // Speed limit signs: var speedlimitContainer = UIUtils.CreateFormElement(this, "center"); speedlimitContainer.name = "speedlimitContainer"; speedlimitContainer.relativePosition = new Vector3(0, 195); speedlimitContainer.autoLayout = false; var speedlimitLabel = speedlimitContainer.AddUIComponent <UILabel>(); speedlimitLabel.width = 140f; speedlimitLabel.relativePosition = new Vector3(5, 0); speedlimitLabel.text = "Speed limit signs"; speedlimitLabel.textColor = new Color(187, 187, 187, 255); speedlimitLabel.textScale = 0.8f; speedlimitLabel.padding = new RectOffset(0, 0, 0, 5); _speedlimitDropdown = UIUtils.CreateStyledDropDown(speedlimitContainer); _speedlimitDropdown.name = "speedlimitDropdown"; _speedlimitDropdown.width = 105f; _speedlimitDropdown.height = 24f; _speedlimitDropdown.relativePosition = new Vector3(145, -6); _speedlimitDropdown.AddItem("American"); _speedlimitDropdown.AddItem("Vanilla"); _speedlimitDropdown.AddItem("Hide"); _speedlimitDropdown.selectedIndex = AmericanRoadsignsTool.config.rendermode_speedlimits; _speedlimitDropdown.eventSelectedIndexChanged += (c, i) => { if (!isInitialized) { return; } DropdownChanged(c, i); }; // Street name signs: var streetnameContainer = UIUtils.CreateFormElement(this, "center"); streetnameContainer.name = "streetnameContainer"; streetnameContainer.relativePosition = new Vector3(0, 230); streetnameContainer.autoLayout = false; var streetnameLabel = streetnameContainer.AddUIComponent <UILabel>(); streetnameLabel.width = 140f; streetnameLabel.relativePosition = new Vector3(5, 0); streetnameLabel.text = "Street name signs"; streetnameLabel.textColor = new Color(187, 187, 187, 255); streetnameLabel.textScale = 0.8f; streetnameLabel.padding = new RectOffset(0, 0, 0, 5); _streetnameDropdown = UIUtils.CreateStyledDropDown(streetnameContainer); _streetnameDropdown.name = "_streetnameDropdown"; _streetnameDropdown.width = 105f; _streetnameDropdown.height = 24f; _streetnameDropdown.relativePosition = new Vector3(145, -6); _streetnameDropdown.AddItem("American"); _streetnameDropdown.AddItem("Vanilla"); _streetnameDropdown.AddItem("Hide"); _streetnameDropdown.selectedIndex = AmericanRoadsignsTool.config.rendermode_streetname; _streetnameDropdown.eventSelectedIndexChanged += (c, i) => { if (!isInitialized) { return; } DropdownChanged(c, i); }; }
private void SetupControls() { float offset = 40f; // Title Bar m_title = AddUIComponent <UITitleBar>(); m_title.iconSprite = "IconAssetBuilding"; m_title.title = "Mesh Info " + MeshInfo.version; // Type DropDown UILabel label = AddUIComponent <UILabel>(); label.textScale = 0.8f; label.padding = new RectOffset(0, 0, 8, 0); label.relativePosition = new Vector3(15f, offset + 5f); label.text = "Type :"; m_prefabType = UIUtils.CreateDropDown(this); m_prefabType.width = 110; m_prefabType.AddItem("Building"); m_prefabType.AddItem("Prop"); m_prefabType.AddItem("Tree"); m_prefabType.AddItem("Vehicle"); m_prefabType.selectedIndex = 0; m_prefabType.relativePosition = label.relativePosition + new Vector3(60f, 0f); m_prefabType.eventSelectedIndexChanged += (c, t) => { m_prefabType.enabled = false; m_isSorted = false; PopulateList(); m_prefabType.enabled = true; }; // Sorting DropDown label = AddUIComponent <UILabel>(); label.textScale = 0.8f; label.padding = new RectOffset(0, 0, 8, 0); label.relativePosition = m_prefabType.relativePosition + new Vector3(130f, 0f); label.text = "Sort by :"; m_sorting = UIUtils.CreateDropDown(this); m_sorting.width = 125; m_sorting.AddItem("Name"); m_sorting.AddItem("Triangles"); m_sorting.AddItem("LOD Triangles"); m_sorting.AddItem("Weight"); m_sorting.AddItem("LOD Weight"); m_sorting.AddItem("Texture"); m_sorting.AddItem("LOD Texture"); m_sorting.selectedIndex = 0; m_sorting.relativePosition = label.relativePosition + new Vector3(60f, 0f); m_sorting.eventSelectedIndexChanged += (c, t) => { m_sorting.enabled = false; m_isSorted = false; PopulateList(); m_sorting.enabled = true; }; // Sorting direction m_sortDirection = AddUIComponent <UISprite>(); m_sortDirection.atlas = UIUtils.GetAtlas("Ingame"); m_sortDirection.spriteName = "IconUpArrow"; m_sortDirection.relativePosition = m_sorting.relativePosition + new Vector3(130f, 0f); m_sortDirection.eventClick += (c, t) => { m_sortDirection.flip = (m_sortDirection.flip == UISpriteFlip.None) ? UISpriteFlip.FlipVertical : UISpriteFlip.None; m_isSorted = false; PopulateList(); }; // Search m_search = UIUtils.CreateTextField(this); m_search.width = 150f; m_search.height = 30f; m_search.padding = new RectOffset(6, 6, 6, 6); m_search.relativePosition = new Vector3(width - m_search.width - 15f, offset + 5f); label = AddUIComponent <UILabel>(); label.textScale = 0.8f; label.padding = new RectOffset(0, 0, 8, 0); label.relativePosition = m_search.relativePosition - new Vector3(60f, 0f); label.text = "Search :"; m_search.eventTextChanged += (c, t) => PopulateList(); // Labels label = AddUIComponent <UILabel>(); label.textScale = 0.9f; label.text = "Name"; label.relativePosition = new Vector3(15f, offset + 50f); label = AddUIComponent <UILabel>(); label.textScale = 0.9f; label.text = "Texture"; label.relativePosition = new Vector3(width - 135f, offset + 50f); UILabel label2 = AddUIComponent <UILabel>(); label2.textScale = 0.9f; label2.text = "Weight"; label2.relativePosition = label.relativePosition - new Vector3(125f, 0f); label = AddUIComponent <UILabel>(); label.textScale = 0.9f; label.text = "Triangles"; label.relativePosition = label2.relativePosition - new Vector3(115f, 0f); // Item List m_itemList = UIFastList.Create <UIPrefabItem>(this); m_itemList.rowHeight = 40f; m_itemList.backgroundSprite = "UnlockingPanel"; m_itemList.width = width - 10; m_itemList.height = height - offset - 75; m_itemList.relativePosition = new Vector3(5f, offset + 70f); }
public override void Start() { instance = this; inputPanel = AddUIComponent <UIPanel>(); inputPanel.atlas = SamsamTS.UIUtils.GetAtlas("Ingame"); inputPanel.backgroundSprite = "GenericTab"; inputPanel.size = new Vector2(300, 40); inputPanel.relativePosition = new Vector2(0, -inputPanel.height - 40); input = SamsamTS.UIUtils.CreateTextField(inputPanel); input.size = new Vector2(inputPanel.width - 45, 30); input.padding.top = 7; input.relativePosition = new Vector3(5, 5); string search = null; input.eventTextChanged += (c, p) => { search = p; Search(); }; input.eventTextCancelled += (c, p) => { input.text = search; }; searchButton = inputPanel.AddUIComponent <UIButton>(); searchButton.size = new Vector2(43, 49); searchButton.atlas = FindIt.instance.mainButton.atlas; searchButton.playAudioEvents = true; searchButton.normalFgSprite = "FindIt"; searchButton.hoveredFgSprite = "FindItFocused"; searchButton.pressedFgSprite = "FindItPressed"; searchButton.relativePosition = new Vector3(inputPanel.width - 41, -3); searchButton.eventClick += (c, p) => { input.Focus(); input.SelectAll(); }; filterPanel = AddUIComponent <UIPanel>(); filterPanel.atlas = SamsamTS.UIUtils.GetAtlas("Ingame"); filterPanel.backgroundSprite = "GenericTab"; filterPanel.color = new Color32(196, 200, 206, 255); filterPanel.size = new Vector2(155, 35); filterPanel.SendToBack(); filterPanel.relativePosition = new Vector3(inputPanel.width, -filterPanel.height - 40); // workshop filter checkbox (custom assets saved in local asset folder are also included) workshopFilter = SamsamTS.UIUtils.CreateCheckBox(filterPanel); workshopFilter.isChecked = true; workshopFilter.width = 80; workshopFilter.label.text = Translations.Translate("FIF_SE_WF"); workshopFilter.label.textScale = 0.8f; workshopFilter.relativePosition = new Vector3(10, 10); workshopFilter.eventCheckChanged += (c, i) => Search(); // vanilla filter checkbox vanillaFilter = SamsamTS.UIUtils.CreateCheckBox(filterPanel); vanillaFilter.isChecked = true; vanillaFilter.width = 80; vanillaFilter.label.text = Translations.Translate("FIF_SE_VF"); vanillaFilter.label.textScale = 0.8f; vanillaFilter.relativePosition = new Vector3(workshopFilter.relativePosition.x + workshopFilter.width, 10); vanillaFilter.eventCheckChanged += (c, i) => Search(); // asset type filter typeFilter = SamsamTS.UIUtils.CreateDropDown(filterPanel); typeFilter.size = new Vector2(100, 25); typeFilter.relativePosition = new Vector3(vanillaFilter.relativePosition.x + vanillaFilter.width, 5); if (FindIt.isRicoEnabled) { string[] items = { Translations.Translate("FIF_SE_IA"), Translations.Translate("FIF_SE_IN"), Translations.Translate("FIF_SE_IP"), Translations.Translate("FIF_SE_IG"), Translations.Translate("FIF_SE_IR"), Translations.Translate("FIF_SE_IPR"), Translations.Translate("FIF_SE_ID"), Translations.Translate("FIF_SE_IT") }; typeFilter.items = items; } else { string[] items = { Translations.Translate("FIF_SE_IA"), Translations.Translate("FIF_SE_IN"), Translations.Translate("FIF_SE_IP"), Translations.Translate("FIF_SE_IG"), Translations.Translate("FIF_SE_IPR"), Translations.Translate("FIF_SE_ID"), Translations.Translate("FIF_SE_IT") }; typeFilter.items = items; } typeFilter.selectedIndex = 0; typeFilter.eventSelectedIndexChanged += (c, p) => { UpdateFilterPanels(); Search(); }; buildingFilters = filterPanel.AddUIComponent <UIPanel>(); buildingFilters.size = new Vector2(90, 35); buildingFilters.relativePosition = new Vector3(typeFilter.relativePosition.x + typeFilter.width, 0); // Level UILabel levelLabel = buildingFilters.AddUIComponent <UILabel>(); levelLabel.textScale = 0.8f; levelLabel.padding = new RectOffset(0, 0, 8, 0); levelLabel.text = Translations.Translate("FIF_SE_LV"); levelLabel.relativePosition = new Vector3(10, 5); levelFilter = SamsamTS.UIUtils.CreateDropDown(buildingFilters); levelFilter.size = new Vector2(55, 25); levelFilter.AddItem(Translations.Translate("FIF_SE_IA")); levelFilter.AddItem("1"); levelFilter.AddItem("2"); levelFilter.AddItem("3"); levelFilter.AddItem("4"); levelFilter.AddItem("5"); levelFilter.selectedIndex = 0; levelFilter.relativePosition = new Vector3(levelLabel.relativePosition.x + levelLabel.width + 5, 5); levelFilter.eventSelectedIndexChanged += (c, i) => Search(); // Size UILabel sizeLabel = buildingFilters.AddUIComponent <UILabel>(); sizeLabel.textScale = 0.8f; sizeLabel.padding = new RectOffset(0, 0, 8, 0); sizeLabel.text = Translations.Translate("FIF_SE_SZ"); sizeLabel.relativePosition = new Vector3(levelFilter.relativePosition.x + levelFilter.width + 10, 5); sizeFilterX = SamsamTS.UIUtils.CreateDropDown(buildingFilters); sizeFilterX.size = new Vector2(55, 25); sizeFilterX.AddItem(Translations.Translate("FIF_SE_IA")); sizeFilterX.AddItem("1"); sizeFilterX.AddItem("2"); sizeFilterX.AddItem("3"); sizeFilterX.AddItem("4"); sizeFilterX.selectedIndex = 0; sizeFilterX.relativePosition = new Vector3(sizeLabel.relativePosition.x + sizeLabel.width + 5, 5); UILabel XLabel = buildingFilters.AddUIComponent <UILabel>(); XLabel.textScale = 0.8f; XLabel.padding = new RectOffset(0, 0, 8, 0); //XLabel.text = "X"; XLabel.text = " "; XLabel.isVisible = false; XLabel.relativePosition = new Vector3(sizeFilterX.relativePosition.x + sizeFilterX.width - 5, 5); sizeFilterY = SamsamTS.UIUtils.CreateDropDown(buildingFilters); sizeFilterY.size = new Vector2(55, 25); sizeFilterY.AddItem(Translations.Translate("FIF_SE_IA")); sizeFilterY.AddItem("1"); sizeFilterY.AddItem("2"); sizeFilterY.AddItem("3"); sizeFilterY.AddItem("4"); sizeFilterY.selectedIndex = 0; //sizeFilterY.isVisible = false; sizeFilterY.relativePosition = new Vector3(XLabel.relativePosition.x + XLabel.width + 5, 5); sizeFilterX.eventSelectedIndexChanged += (c, i) => Search(); sizeFilterY.eventSelectedIndexChanged += (c, i) => Search(); UIPanel panel = AddUIComponent <UIPanel>(); panel.atlas = SamsamTS.UIUtils.GetAtlas("Ingame"); panel.backgroundSprite = "GenericTabHovered"; panel.size = new Vector2(parent.width, 45); panel.relativePosition = new Vector3(0, -panel.height + 5); filterPloppable = panel.AddUIComponent <UIFilterPloppable>(); filterPloppable.isVisible = false; filterPloppable.relativePosition = new Vector3(0, 0); filterPloppable.eventFilteringChanged += (c, p) => Search(); filterGrowable = panel.AddUIComponent <UIFilterGrowable>(); filterGrowable.isVisible = false; filterGrowable.relativePosition = new Vector3(0, 0); filterGrowable.eventFilteringChanged += (c, p) => Search(); UpdateFilterPanels(); size = Vector2.zero; }
public override void Start() { instance = this; inputPanel = AddUIComponent <UIPanel>(); inputPanel.atlas = SamsamTS.UIUtils.GetAtlas("Ingame"); inputPanel.backgroundSprite = "GenericTab"; inputPanel.size = new Vector2(300, 40); inputPanel.relativePosition = new Vector2(5, -inputPanel.height - 40); input = SamsamTS.UIUtils.CreateTextField(inputPanel); input.size = new Vector2(inputPanel.width - 45, 30); input.padding.top = 7; input.relativePosition = new Vector3(5, 5); string search = null; input.eventTextChanged += (c, p) => { search = p; Search(); }; input.eventTextCancelled += (c, p) => { input.text = search; }; searchButton = inputPanel.AddUIComponent <UIButton>(); searchButton.size = new Vector2(43, 49); searchButton.atlas = FindIt.instance.mainButton.atlas; searchButton.playAudioEvents = true; searchButton.normalFgSprite = "FindIt"; searchButton.hoveredFgSprite = "FindItFocused"; searchButton.pressedFgSprite = "FindItPressed"; searchButton.relativePosition = new Vector3(inputPanel.width - 41, -3); searchButton.eventClick += (c, p) => { input.Focus(); input.SelectAll(); }; filterPanel = AddUIComponent <UIPanel>(); filterPanel.atlas = SamsamTS.UIUtils.GetAtlas("Ingame"); filterPanel.backgroundSprite = "GenericTab"; filterPanel.color = new Color32(196, 200, 206, 255); filterPanel.size = new Vector2(105, 35); filterPanel.SendToBack(); filterPanel.relativePosition = new Vector3(inputPanel.width, -filterPanel.height - 40); typeFilter = SamsamTS.UIUtils.CreateDropDown(filterPanel); typeFilter.size = new Vector2(130, 25); typeFilter.relativePosition = new Vector3(10, 5); if (FindIt.isRicoEnabled) { string[] items = { "All", "Net Structures", "Ploppable", "Growable", "Rico", "Prop", "Decal", "Tree" }; typeFilter.items = items; } else { string[] items = { "All", "Net Structures", "Ploppable", "Growable", "Prop", "Decal", "Tree" }; typeFilter.items = items; } typeFilter.selectedIndex = 0; typeFilter.eventSelectedIndexChanged += (c, p) => { UpdateFilterPanels(); Search(); }; buildingFilters = filterPanel.AddUIComponent <UIPanel>(); buildingFilters.size = new Vector2(90, 35); buildingFilters.relativePosition = new Vector3(typeFilter.relativePosition.x + typeFilter.width, 0); // Level UILabel levelLabel = buildingFilters.AddUIComponent <UILabel>(); levelLabel.textScale = 0.8f; levelLabel.padding = new RectOffset(0, 0, 8, 0); levelLabel.text = "Level: "; levelLabel.relativePosition = new Vector3(10, 5); levelFilter = SamsamTS.UIUtils.CreateDropDown(buildingFilters); levelFilter.size = new Vector2(55, 25); levelFilter.AddItem("All"); levelFilter.AddItem("1"); levelFilter.AddItem("2"); levelFilter.AddItem("3"); levelFilter.AddItem("4"); levelFilter.AddItem("5"); levelFilter.selectedIndex = 0; levelFilter.relativePosition = new Vector3(levelLabel.relativePosition.x + levelLabel.width + 5, 5); levelFilter.eventSelectedIndexChanged += (c, i) => Search(); // Size UILabel sizeLabel = buildingFilters.AddUIComponent <UILabel>(); sizeLabel.textScale = 0.8f; sizeLabel.padding = new RectOffset(0, 0, 8, 0); sizeLabel.text = "Size: "; sizeLabel.relativePosition = new Vector3(levelFilter.relativePosition.x + levelFilter.width + 10, 5); sizeFilterX = SamsamTS.UIUtils.CreateDropDown(buildingFilters); sizeFilterX.size = new Vector2(55, 25); sizeFilterX.AddItem("All"); sizeFilterX.AddItem("1"); sizeFilterX.AddItem("2"); sizeFilterX.AddItem("3"); sizeFilterX.AddItem("4"); sizeFilterX.selectedIndex = 0; sizeFilterX.relativePosition = new Vector3(sizeLabel.relativePosition.x + sizeLabel.width + 5, 5); UILabel XLabel = buildingFilters.AddUIComponent <UILabel>(); XLabel.textScale = 0.8f; XLabel.padding = new RectOffset(0, 0, 8, 0); XLabel.text = "X"; XLabel.isVisible = false; XLabel.relativePosition = new Vector3(sizeFilterX.relativePosition.x + sizeFilterX.width - 5, 5); sizeFilterY = SamsamTS.UIUtils.CreateDropDown(buildingFilters); sizeFilterY.size = new Vector2(45, 25); sizeFilterY.AddItem("1"); sizeFilterY.AddItem("2"); sizeFilterY.AddItem("3"); sizeFilterY.AddItem("4"); sizeFilterY.selectedIndex = 0; sizeFilterY.isVisible = false; sizeFilterY.relativePosition = new Vector3(XLabel.relativePosition.x + XLabel.width + 5, 5); sizeFilterX.eventSelectedIndexChanged += (c, i) => { if (i == 0) { sizeFilterX.width = 55; XLabel.isVisible = false; sizeFilterY.isVisible = false; } else { sizeFilterX.width = 45; XLabel.isVisible = true; sizeFilterY.isVisible = true; } UpdateBuildingFilters(); Search(); }; sizeFilterY.eventSelectedIndexChanged += (c, i) => Search(); UIPanel panel = AddUIComponent <UIPanel>(); panel.atlas = SamsamTS.UIUtils.GetAtlas("Ingame"); panel.backgroundSprite = "GenericTabHovered"; panel.size = new Vector2(parent.width, 45); panel.relativePosition = new Vector3(0, -panel.height + 5); filterPloppable = panel.AddUIComponent <UIFilterPloppable>(); filterPloppable.isVisible = false; filterPloppable.relativePosition = new Vector3(0, 0); filterPloppable.eventFilteringChanged += (c, p) => Search(); filterGrowable = panel.AddUIComponent <UIFilterGrowable>(); filterGrowable.isVisible = false; filterGrowable.relativePosition = new Vector3(0, 0); filterGrowable.eventFilteringChanged += (c, p) => Search(); UpdateFilterPanels(); size = Vector2.zero; }
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); }
public override void Start() { name = "FindIt_UIQuickMenuPopUp"; atlas = SamsamTS.UIUtils.GetAtlas("Ingame"); backgroundSprite = "GenericPanelWhite"; size = new Vector2(480, 250); UILabel title = AddUIComponent <UILabel>(); title.text = Translations.Translate("FIF_QM_TIT"); title.textColor = new Color32(0, 0, 0, 255); title.relativePosition = new Vector3(spacing * 3, spacing * 3); UIButton close = AddUIComponent <UIButton>(); close.size = new Vector2(30f, 30f); close.text = "X"; close.textScale = 0.9f; close.textColor = new Color32(0, 0, 0, 255); close.focusedTextColor = new Color32(0, 0, 0, 255); close.hoveredTextColor = new Color32(109, 109, 109, 255); close.pressedTextColor = new Color32(128, 128, 128, 102); close.textPadding = new RectOffset(8, 8, 8, 8); close.canFocus = false; close.playAudioEvents = true; close.relativePosition = new Vector3(width - close.width, 0); close.eventClicked += (c, p) => Close(); // Sort custom tag list alphabetically. Default = sort by number of assets in each tag UICheckBox customTagListSort = SamsamTS.UIUtils.CreateCheckBox(this); customTagListSort.isChecked = Settings.customTagListSort; customTagListSort.label.text = Translations.Translate("FIF_SET_CTLS"); customTagListSort.label.textScale = 0.8f; customTagListSort.width = size.x; customTagListSort.label.textColor = new Color32(0, 0, 0, 255); customTagListSort.relativePosition = new Vector3(title.relativePosition.x, title.relativePosition.y + title.height + 20); customTagListSort.eventCheckChanged += (c, i) => { Settings.customTagListSort = customTagListSort.isChecked; XMLUtils.SaveSettings(); if (UIFilterTag.instance != null) { UIFilterTag.instance.UpdateCustomTagList(); UISearchBox.instance.Search(); } }; // Sort asset creator list alphabetically. Default = sort by number of assets in each tag UICheckBox assetCreatorListSort = SamsamTS.UIUtils.CreateCheckBox(this); assetCreatorListSort.isChecked = Settings.assetCreatorListSort; assetCreatorListSort.label.text = Translations.Translate("FIF_SET_ACLS"); assetCreatorListSort.label.textScale = 0.8f; assetCreatorListSort.width = size.x; assetCreatorListSort.label.textColor = new Color32(0, 0, 0, 255); assetCreatorListSort.relativePosition = new Vector3(title.relativePosition.x, customTagListSort.relativePosition.y + customTagListSort.height + 10); assetCreatorListSort.eventCheckChanged += (c, i) => { Settings.assetCreatorListSort = assetCreatorListSort.isChecked; XMLUtils.SaveSettings(); if (UIFilterExtra.instance != null) { UIFilterExtra.instance.UpdateAssetCreatorList(); UISearchBox.instance.Search(); } }; // Show prop markers in 'game' mode UICheckBox showPropMarker = SamsamTS.UIUtils.CreateCheckBox(this); showPropMarker.isChecked = Settings.showPropMarker; showPropMarker.label.text = Translations.Translate("FIF_SET_PM"); showPropMarker.label.textScale = 0.8f; showPropMarker.width = size.x; showPropMarker.label.textColor = new Color32(0, 0, 0, 255); showPropMarker.tooltip = Translations.Translate("FIF_SET_PMTP"); showPropMarker.relativePosition = new Vector3(title.relativePosition.x, assetCreatorListSort.relativePosition.y + assetCreatorListSort.height + 10); showPropMarker.eventCheckChanged += (c, i) => { Settings.showPropMarker = showPropMarker.isChecked; XMLUtils.SaveSettings(); UIFilterProp.instance.UpdateMarkerToggleVisibility(); }; // Use light background theme UICheckBox useLightBackground = SamsamTS.UIUtils.CreateCheckBox(this); useLightBackground.isChecked = Settings.useLightBackground; useLightBackground.label.text = Translations.Translate("FIF_SET_BACK"); useLightBackground.label.textScale = 0.8f; useLightBackground.width = size.x; useLightBackground.label.textColor = new Color32(0, 0, 0, 255); useLightBackground.tooltip = Translations.Translate("FIF_SET_BACKTP"); useLightBackground.relativePosition = new Vector3(title.relativePosition.x, showPropMarker.relativePosition.y + showPropMarker.height + 10); useLightBackground.eventCheckChanged += (c, i) => { Settings.useLightBackground = useLightBackground.isChecked; XMLUtils.SaveSettings(); FindIt.instance.UpdateDefaultPanelBackground(); }; // Show asset type panel UICheckBox showAssetTypePanel = SamsamTS.UIUtils.CreateCheckBox(this); showAssetTypePanel.isChecked = Settings.showAssetTypePanel; showAssetTypePanel.label.text = Translations.Translate("FIF_SET_ATP"); showAssetTypePanel.label.textScale = 0.8f; showAssetTypePanel.width = size.x; showAssetTypePanel.label.textColor = new Color32(0, 0, 0, 255); showAssetTypePanel.tooltip = Translations.Translate("FIF_ATP_TP"); showAssetTypePanel.relativePosition = new Vector3(title.relativePosition.x, useLightBackground.relativePosition.y + useLightBackground.height + 10); showAssetTypePanel.eventCheckChanged += (c, i) => { Settings.showAssetTypePanel = showAssetTypePanel.isChecked; XMLUtils.SaveSettings(); if (Settings.showAssetTypePanel) { UISearchBox.instance.assetTypePanel.isVisible = true; //UISearchBox.instance.CreateAssetTypePanel(); } else { UISearchBox.instance.assetTypePanel.isVisible = false; //UISearchBox.instance.DestroyAssetTypePanel(); } }; // Show the number of existing instances of each asset UICheckBox showInstancesCounter = SamsamTS.UIUtils.CreateCheckBox(this); showInstancesCounter.isChecked = Settings.showInstancesCounter; showInstancesCounter.label.text = Translations.Translate("FIF_SET_IC"); showInstancesCounter.label.textScale = 0.8f; showInstancesCounter.width = size.x; showInstancesCounter.tooltip = Translations.Translate("FIF_SET_ICTP"); showInstancesCounter.label.textColor = new Color32(0, 0, 0, 255); showInstancesCounter.relativePosition = new Vector3(title.relativePosition.x, showAssetTypePanel.relativePosition.y + showAssetTypePanel.height + 10); showInstancesCounter.eventCheckChanged += (c, i) => { if (showInstancesCounter.isChecked) { height = instanceCounterSort.relativePosition.y + instanceCounterSort.height + 30; } else { height = showInstancesCounter.relativePosition.y + showInstancesCounter.height + 30; } Settings.showInstancesCounter = showInstancesCounter.isChecked; instanceCounterSort.isVisible = showInstancesCounter.isChecked; if (FindIt.isPOEnabled) { includePOinstances.isVisible = showInstancesCounter.isChecked; } XMLUtils.SaveSettings(); if (Settings.showInstancesCounter && AssetTagList.instance?.prefabInstanceCountDictionary != null) { AssetTagList.instance.UpdatePrefabInstanceCount(UISearchBox.DropDownOptions.All); } UISearchBox.instance.Search(); }; // include PO instances includePOinstances = SamsamTS.UIUtils.CreateCheckBox(this); includePOinstances.isChecked = Settings.includePOinstances; includePOinstances.label.text = Translations.Translate("FIF_SET_PO"); includePOinstances.label.textScale = 0.8f; includePOinstances.width = size.x; includePOinstances.tooltip = Translations.Translate("FIF_SET_ICTP"); includePOinstances.isVisible = Settings.showInstancesCounter; includePOinstances.label.textColor = new Color32(0, 0, 0, 255); includePOinstances.relativePosition = new Vector3(showInstancesCounter.relativePosition.x + 30, showInstancesCounter.relativePosition.y + showInstancesCounter.height + 10); includePOinstances.eventCheckChanged += (c, i) => { Settings.includePOinstances = includePOinstances.isChecked; XMLUtils.SaveSettings(); if (Settings.showInstancesCounter) { UISearchBox.instance.Search(); } }; instanceCounterSort = SamsamTS.UIUtils.CreateDropDown(this); instanceCounterSort.normalBgSprite = "TextFieldPanelHovered"; instanceCounterSort.size = new Vector2(300, 30); instanceCounterSort.listHeight = 300; instanceCounterSort.itemHeight = 30; instanceCounterSort.AddItem(Translations.Translate("FIF_SET_ICO")); instanceCounterSort.AddItem(Translations.Translate("FIF_SET_ICUS")); instanceCounterSort.AddItem(Translations.Translate("FIF_SET_ICUN")); instanceCounterSort.selectedIndex = Settings.instanceCounterSort; instanceCounterSort.isVisible = Settings.showInstancesCounter; instanceCounterSort.relativePosition = new Vector3(showInstancesCounter.relativePosition.x + 30, includePOinstances.relativePosition.y + includePOinstances.height + 10); instanceCounterSort.eventSelectedIndexChanged += (c, p) => { Settings.instanceCounterSort = instanceCounterSort.selectedIndex; XMLUtils.SaveSettings(); if (Settings.showInstancesCounter) { UISearchBox.instance.Search(); } }; if (!FindIt.isPOEnabled) { includePOinstances.isVisible = false; instanceCounterSort.relativePosition = new Vector3(showInstancesCounter.relativePosition.x + 30, showInstancesCounter.relativePosition.y + showInstancesCounter.height + 10); } if (showInstancesCounter.isChecked) { height = instanceCounterSort.relativePosition.y + instanceCounterSort.height + 30; } else { height = showInstancesCounter.relativePosition.y + showInstancesCounter.height + 30; } customTagListSort.Focus(); }
private void CreateComponents() { int headerHeight = 40; UIHelperBase uiHelper = new UIHelper(this); // Label UILabel label = AddUIComponent <UILabel>(); label.text = "Display Options"; label.relativePosition = new Vector3(WIDTH / 2 - label.width / 2, 10); // Drag handle UIDragHandle handle = AddUIComponent <UIDragHandle>(); handle.target = this; handle.constrainToScreen = true; handle.width = WIDTH; handle.height = headerHeight; handle.relativePosition = Vector3.zero; // 'moving' direction label = AddUIComponent <UILabel>(); label.text = "Direction:"; label.relativePosition = new Vector3(10, headerHeight + 15); m_directionDropdown = UIUtils.CreateDropDown(this); m_directionDropdown.width = WIDTH - 30 - label.width; m_directionDropdown.relativePosition = new Vector3(label.relativePosition.x + label.width + 10, headerHeight + 10); m_directionDropdown.AddItem("Forward"); m_directionDropdown.AddItem("Reverse"); m_directionDropdown.selectedIndex = 0; m_directionDropdown.eventSelectedIndexChanged += (c, i) => { DisplayOptions.activeOptions.Reversed = (i == 1); }; m_directionDropdown.tooltip = "Simulates vehicle movement direction so you can preview headlights."; // Door display m_doorCheckbox = (UICheckBox)uiHelper.AddCheckbox("Show doors", DisplayOptions.activeOptions.ShowDoors, (b) => { DisplayOptions.activeOptions.ShowDoors = b; }); m_doorCheckbox.relativePosition = new Vector3(10, headerHeight + 50); m_doorCheckbox.width = WIDTH - 20; m_doorCheckbox.tooltip = "Show vehicle door locations and editor."; // Emergency lights 1 m_emergencyCheckbox1 = (UICheckBox)uiHelper.AddCheckbox("Show emergency 1", DisplayOptions.activeOptions.ShowEmergency, (b) => { DisplayOptions.activeOptions.ShowEmergency = b; }); m_emergencyCheckbox1.relativePosition = new Vector3(10, headerHeight + 80); m_emergencyCheckbox1.width = WIDTH - 20; m_emergencyCheckbox1.tooltip = "Show vehicle emergency effects."; // Emergency lights 2 m_emergencyCheckbox2 = (UICheckBox)uiHelper.AddCheckbox("Show emergency 2", DisplayOptions.activeOptions.ShowEmergency2, (b) => { DisplayOptions.activeOptions.ShowEmergency2 = b; }); m_emergencyCheckbox2.relativePosition = new Vector3(10, headerHeight + 110); m_emergencyCheckbox2.width = WIDTH - 20; m_emergencyCheckbox2.tooltip = "Show vehicle emergency effects."; // Takeoff m_takeOffCheckbox = (UICheckBox)uiHelper.AddCheckbox("Show takeoff", DisplayOptions.activeOptions.ShowTakeOff, (b) => { DisplayOptions.activeOptions.ShowTakeOff = b; }); m_takeOffCheckbox.relativePosition = new Vector3(10, headerHeight + 140); m_takeOffCheckbox.width = WIDTH - 20; m_takeOffCheckbox.tooltip = "Show takeoff specific effects."; // Landing m_landingCheckbox = (UICheckBox)uiHelper.AddCheckbox("Show landing", DisplayOptions.activeOptions.ShowLanding, (b) => { DisplayOptions.activeOptions.ShowLanding = b; }); m_landingCheckbox.relativePosition = new Vector3(10, headerHeight + 170); m_landingCheckbox.width = WIDTH - 20; m_landingCheckbox.tooltip = "Show landing specific effects."; // Settings m_showSettingsCheckbox = (UICheckBox)uiHelper.AddCheckbox("Show settings", DisplayOptions.activeOptions.ShowSettingsPanel, (b) => { DisplayOptions.activeOptions.ShowSettingsPanel = b; }); m_showSettingsCheckbox.relativePosition = new Vector3(10, headerHeight + 200); m_showSettingsCheckbox.width = WIDTH - 20; m_showSettingsCheckbox.tooltip = "Show settings panel."; // Variation flag box // TODO: Use a proper dropdown, although this should work for now /*m_variationFlags = UIIntField.CreateField("Variation:", 80, this, false); * m_variationFlags.textField.text = "0"; * m_variationFlags.panel.relativePosition = new Vector3(10, headerHeight + 230); * m_variationFlags.textField.eventTextChanged += (c, text) => * { * int tmp = DisplayOptions.activeOptions.VariationFlags; * m_variationFlags.IntFieldHandler(ref tmp); * DisplayOptions.activeOptions.VariationFlags = tmp; * };*/ }
private void CreateComponents() { int headerHeight = 40; // Label UILabel label = AddUIComponent <UILabel>(); label.text = "Save Asset"; label.relativePosition = new Vector3(WIDTH / 2 - label.width / 2, 10); // Drag handle UIDragHandle handle = AddUIComponent <UIDragHandle>(); handle.target = this; handle.constrainToScreen = true; handle.width = WIDTH; handle.height = headerHeight; handle.relativePosition = Vector3.zero; // Fields label = AddUIComponent <UILabel>(); label.text = "Package name:"; label.relativePosition = new Vector3(10, headerHeight + 15); m_packageField = UIUtils.CreateTextField(this); m_packageField.width = 400; m_packageField.relativePosition = new Vector3(20 + label.width, headerHeight + 10); // Fields label = AddUIComponent <UILabel>(); label.text = "Asset name:"; label.relativePosition = new Vector3(10, headerHeight + 45); m_nameField = UIUtils.CreateTextField(this); m_nameField.width = 400; m_nameField.relativePosition = new Vector3(m_packageField.relativePosition.x, headerHeight + 40); // Naming dropdown menu label = AddUIComponent <UILabel>(); label.text = "Trailer naming:"; label.relativePosition = new Vector3(m_nameField.relativePosition.x + m_nameField.width + 20, headerHeight + 10); m_namingDropdown = UIUtils.CreateDropDown(this); m_namingDropdown.text = "Trailer naming convention"; m_namingDropdown.AddItem("Package name (TrailerPackageName0)"); //0 m_namingDropdown.AddItem("Default (Trailer0)"); //1 m_namingDropdown.selectedIndex = 0; m_namingDropdown.width = 300; m_namingDropdown.relativePosition = new Vector3(m_nameField.relativePosition.x + m_nameField.width + 20, headerHeight + 35); // Save button m_saveButton = UIUtils.CreateButton(this); m_saveButton.text = "Save"; m_saveButton.textScale = 1.3f; m_saveButton.width = 153f; m_saveButton.height = 47f; m_saveButton.eventClicked += (c, b) => { string assetName = m_nameField.text.Trim(); string packageName = m_packageField.text.Trim(); string file = GetSavePathName(packageName); if (!File.Exists(file)) { SaveAsset(assetName, packageName); } else { ConfirmPanel.ShowModal("CONFIRM_SAVEOVERRIDE", delegate(UIComponent comp, int ret) { if (ret == 1) { SaveAsset(assetName, packageName); } }); } }; m_saveButton.relativePosition = new Vector3(WIDTH / 2 - m_saveButton.width - 50, HEIGHT - m_saveButton.height - 10); // Cancel button m_cancelButton = UIUtils.CreateButton(this); m_cancelButton.text = "Cancel"; m_cancelButton.textScale = 1.3f; m_cancelButton.width = 153f; m_cancelButton.height = 47f; m_cancelButton.eventClicked += (c, b) => { m_info = null; isVisible = false; }; m_cancelButton.relativePosition = new Vector3(WIDTH / 2 + 50, HEIGHT - m_cancelButton.height - 10); // Snapshot container GameObject go = GameObject.Find("SnapshotContainer"); if (go != null) { m_snapshotContainer = GameObject.Instantiate <UIPanel>(go.GetComponent <UIPanel>()); m_snapshotContainer.transform.SetParent(transform); m_snapshotSprite = m_snapshotContainer.Find <UITextureSprite>("SnapShot"); m_snapshotLabel = m_snapshotContainer.Find <UILabel>("CurrentSnapShot"); m_snapshotPrev = m_snapshotContainer.Find <UIButton>("Previous"); m_snapshotPrev.eventClicked += (c, b) => { OnPreviousSnapshot(); }; m_snapshotNext = m_snapshotContainer.Find <UIButton>("Next"); m_snapshotNext.eventClicked += (c, b) => { OnNextSnapshot(); }; } }
private UIPanel CreateQuartzPanel() { var uiView = GameObject.Find("UIView").GetComponent<UIView>(); if (uiView == null) { Debug.LogError("UIView is null!"); return null; } var panel = uiView.AddUIComponent(typeof(UIPanel)) as UIPanel; if (panel != null) { panel.size = new Vector2(300, 290); panel.isVisible = false; panel.atlas = EmbeddedResources.GetQuartzAtlas(); panel.backgroundSprite = "DefaultPanelBackground"; Vector2 viewSize = uiView.GetScreenResolution(); panel.relativePosition = _currentModuleClass == Skin.ModuleClass.MainMenu ? new Vector3(viewSize.x - 2.0f - panel.size.x, 34.0f) : new Vector3(viewSize.x - 2.0f - panel.size.x, 34.0f + 64.0f); panel.name = "QuartzSkinManager"; var title = panel.AddUIComponent<UILabel>(); title.relativePosition = new Vector3(2.0f, 2.0f); title.text = "Quartz Skin Manager"; title.textColor = Color.black; } float y = 32.0f; UIUtil.MakeCheckbox(panel, "ShowIconInGame", "Show Quartz icon in-game", new Vector2(4.0f, y), ConfigManager.ShowQuartzIconInGame, value => { ConfigManager.ShowQuartzIconInGame = value; if (_quartzButton != null && !ConfigManager.ShowQuartzIconInGame && _currentModuleClass == Skin.ModuleClass.InGame) { _quartzButton.isVisible = false; if (_quartzPanel != null) { _quartzPanel.isVisible = false; } } else if(_quartzButton != null) { _quartzButton.isVisible = true; } }); y += 28.0f; UIUtil.MakeCheckbox(panel, "AutoApplySkin", "Apply skin on start-up", new Vector2(4.0f, y), ConfigManager.ApplySkinOnStartup, value => { ConfigManager.ApplySkinOnStartup = value; }); y += 28.0f; UIUtil.MakeCheckbox(panel, "DrawDebugInfo", "Developer mode (Ctrl+D)", new Vector2(4.0f, y), false, value => { if (_debugRenderer != null) { _debugRenderer.drawDebugInfo = value; } }); y += 28.0f; UIUtil.MakeCheckbox(panel, "AutoReload", "Auto-reload active skin on file change", new Vector2(4.0f, y), false, value => { _autoReloadSkinOnChange = value; ReloadAndApplyActiveSkin(); }); y += 28.0f; UIUtil.MakeCheckbox(panel, "IgnoreMissing", "Force load (May break stuff)", new Vector2(4.0f, y), ConfigManager.IgnoreMissingComponents, value => { ConfigManager.IgnoreMissingComponents = value; }); y += 28.0f; _skinsDropdown = panel.AddUIComponent<UIDropDown>(); _skinsDropdown.AddItem("Vanilla (by Colossal Order)"); foreach (var skin in _availableSkins) { _skinsDropdown.AddItem(String.Format("{0} (by {1}){2}", skin.Name, skin.Author, skin.Legacy ? " [LEGACY]" : string.Empty)); } _skinsDropdown.size = new Vector2(296.0f, 32.0f); _skinsDropdown.relativePosition = new Vector3(2.0f, y); _skinsDropdown.listBackground = "GenericPanelLight"; _skinsDropdown.itemHeight = 32; _skinsDropdown.itemHover = "ListItemHover"; _skinsDropdown.itemHighlight = "ListItemHighlight"; _skinsDropdown.normalBgSprite = "ButtonMenu"; _skinsDropdown.listWidth = 300; _skinsDropdown.listHeight = 500; _skinsDropdown.foregroundSpriteMode = UIForegroundSpriteMode.Stretch; _skinsDropdown.popupColor = new Color32(45, 52, 61, 255); _skinsDropdown.popupTextColor = new Color32(170, 170, 170, 255); _skinsDropdown.zOrder = 1; _skinsDropdown.textScale = 0.8f; _skinsDropdown.verticalAlignment = UIVerticalAlignment.Middle; _skinsDropdown.horizontalAlignment = UIHorizontalAlignment.Center; _skinsDropdown.textFieldPadding = new RectOffset(8, 0, 8, 0); _skinsDropdown.itemPadding = new RectOffset(8, 0, 2, 0); _skinsDropdown.selectedIndex = 0; if(_currentSkin != null) { int i = 1; foreach (var skin in _availableSkins) { if (skin.Path == _currentSkin.SapphirePath) { _skinsDropdown.selectedIndex = i; } i++; } } _skinsDropdown.eventSelectedIndexChanged += (component, index) => { if (index == 0) { if (_currentSkin != null) { _currentSkin.Dispose(); } _currentSkin = null; return; } var skin = _availableSkins[index-1]; if (_currentSkin != null && _currentSkin.SapphirePath == skin.Path) { return; } if (_currentSkin != null) { _currentSkin.Dispose(); } _currentSkin = Skin.FromXmlFile(Path.Combine(skin.Path, "skin.xml"), _autoReloadSkinOnChange); if (_currentSkin.IsValid) { _currentSkin.Apply(_currentModuleClass); } else { Debug.LogWarning("Skin is invalid, will not apply.. (check messages above for errors)"); } ConfigManager.SelectedSkinPath = _currentSkin.SapphirePath; panel.isVisible = false; }; var skinsDropdownButton = _skinsDropdown.AddUIComponent<UIButton>(); _skinsDropdown.triggerButton = skinsDropdownButton; skinsDropdownButton.text = ""; skinsDropdownButton.size = _skinsDropdown.size; skinsDropdownButton.relativePosition = new Vector3(0.0f, 0.0f); skinsDropdownButton.textVerticalAlignment = UIVerticalAlignment.Middle; skinsDropdownButton.textHorizontalAlignment = UIHorizontalAlignment.Center; skinsDropdownButton.normalFgSprite = "IconDownArrow"; skinsDropdownButton.hoveredFgSprite = "IconDownArrowHovered"; skinsDropdownButton.pressedFgSprite = "IconDownArrowPressed"; skinsDropdownButton.focusedFgSprite = "IconDownArrowFocused"; skinsDropdownButton.disabledFgSprite = "IconDownArrowDisabled"; skinsDropdownButton.foregroundSpriteMode = UIForegroundSpriteMode.Fill; skinsDropdownButton.horizontalAlignment = UIHorizontalAlignment.Right; skinsDropdownButton.verticalAlignment = UIVerticalAlignment.Middle; skinsDropdownButton.zOrder = 0; skinsDropdownButton.textScale = 0.8f; y += 40.0f; UIUtil.MakeButton(panel, "ReloadSkin", "Reload active skin (Ctrl+Shift+S)", new Vector2(4.0f, y), ReloadAndApplyActiveSkin); y += 36.0f; UIUtil.MakeButton(panel, "RefreshSkins", "Refresh available skins", new Vector2(4.0f, y), RefreshSkinsList); return panel; }
public override void Start() { instance = this; // extra filter checkbox optionDropDownCheckBox = SamsamTS.UIUtils.CreateCheckBox(this); optionDropDownCheckBox.isChecked = false; optionDropDownCheckBox.width = 20; optionDropDownCheckBox.relativePosition = new Vector3(10, 10); optionDropDownCheckBox.eventCheckChanged += (c, i) => { ((UISearchBox)parent).Search(); }; // extra filter dropdown optionDropDownMenu = SamsamTS.UIUtils.CreateDropDown(this); optionDropDownMenu.size = new Vector2(200, 25); optionDropDownMenu.listHeight = 210; optionDropDownMenu.itemHeight = 30; optionDropDownMenu.items = options; optionDropDownMenu.selectedIndex = 0; optionDropDownMenu.relativePosition = new Vector3(optionDropDownCheckBox.relativePosition.x + optionDropDownCheckBox.width + 5, 5); optionDropDownMenu.eventSelectedIndexChanged += (c, p) => { HideAll(); if (optionDropDownMenu.selectedIndex == (int)DropDownOptions.AssetCreator) { UpdateAssetCreatorOptionVisibility(true); } else if (optionDropDownMenu.selectedIndex == (int)DropDownOptions.BuildingHeight) { UpdateBuildingHeightOptionVisibility(true); } else if (optionDropDownMenu.selectedIndex == (int)DropDownOptions.BuildingLevel) { UpdateBuildingLevelOptionVisibility(true); } if (optionDropDownCheckBox.isChecked) { ((UISearchBox)parent).Search(); } }; // asset creator assetCreatorInput = SamsamTS.UIUtils.CreateTextField(this); assetCreatorInput.size = new Vector2(120, 25); assetCreatorInput.padding.top = 5; assetCreatorInput.isVisible = true; assetCreatorInput.text = ""; assetCreatorInput.textScale = 0.9f; assetCreatorInput.relativePosition = new Vector3(optionDropDownMenu.relativePosition.x + optionDropDownMenu.width + 30, 5); assetCreatorInput.eventTextChanged += (c, p) => { if (assetCreatorInput.text == "") { return; } for (int i = 0; i < assetCreatorDropDownMenu.items.Length; ++i) { if (assetCreatorDropDownMenu.items[i].ToLower().StartsWith(assetCreatorInput.text.ToLower())) { assetCreatorDropDownMenu.selectedIndex = i; return; } } for (int i = 0; i < assetCreatorDropDownMenu.items.Length; ++i) { if (assetCreatorDropDownMenu.items[i].ToLower().Contains(assetCreatorInput.text.ToLower())) { assetCreatorDropDownMenu.selectedIndex = i; return; } } }; // search icon assetCreatorSearchIcon = AddUIComponent <UISprite>(); assetCreatorSearchIcon.size = new Vector2(25, 30); assetCreatorSearchIcon.atlas = FindIt.atlas; assetCreatorSearchIcon.spriteName = "FindItDisabled"; assetCreatorSearchIcon.isVisible = true; assetCreatorSearchIcon.relativePosition = new Vector3(optionDropDownMenu.relativePosition.x + optionDropDownMenu.width + 30, 3); assetCreatorDropDownMenu = SamsamTS.UIUtils.CreateDropDown(this); assetCreatorDropDownMenu.size = new Vector2(270, 25); assetCreatorDropDownMenu.tooltip = Translations.Translate("FIF_POP_SCR"); assetCreatorDropDownMenu.listHeight = 300; assetCreatorDropDownMenu.itemHeight = 30; UpdateAssetCreatorList(); SamsamTS.UIUtils.CreateDropDownScrollBar(assetCreatorDropDownMenu); assetCreatorDropDownMenu.isVisible = true; assetCreatorDropDownMenu.relativePosition = new Vector3(assetCreatorInput.relativePosition.x + assetCreatorInput.width + 10, 5); assetCreatorDropDownMenu.eventSelectedIndexChanged += (c, p) => { if (optionDropDownCheckBox.isChecked) { ((UISearchBox)parent).Search(); } }; // building height min label minLabel = this.AddUIComponent <UILabel>(); minLabel.textScale = 0.8f; minLabel.padding = new RectOffset(0, 0, 8, 0); minLabel.text = "Min:"; minLabel.isVisible = false; minLabel.relativePosition = new Vector3(optionDropDownMenu.relativePosition.x + optionDropDownMenu.width + 50, 5); // building height min input box minInput = SamsamTS.UIUtils.CreateTextField(this); minInput.size = new Vector2(60, 25); minInput.padding.top = 5; minInput.isVisible = false; minInput.text = ""; minInput.relativePosition = new Vector3(minLabel.relativePosition.x + minLabel.width + 10, 5); minInput.eventTextChanged += (c, p) => { if (float.TryParse(minInput.text, out minBuildingHeight)) { if (builingHeightUnit.selectedIndex == 1) { minBuildingHeight *= 0.3048f; } ((UISearchBox)parent).Search(); } if (minInput.text == "") { minBuildingHeight = float.MinValue; ((UISearchBox)parent).Search(); } }; // building height max label maxLabel = this.AddUIComponent <UILabel>(); maxLabel.textScale = 0.8f; maxLabel.padding = new RectOffset(0, 0, 8, 0); maxLabel.text = "Max:"; maxLabel.isVisible = false; maxLabel.relativePosition = new Vector3(minInput.relativePosition.x + minInput.width + 20, 5); // building height max input box maxInput = SamsamTS.UIUtils.CreateTextField(this); maxInput.size = new Vector2(60, 25); maxInput.padding.top = 5; maxInput.isVisible = false; maxInput.text = ""; maxInput.relativePosition = new Vector3(maxLabel.relativePosition.x + maxLabel.width + 10, 5); maxInput.eventTextChanged += (c, p) => { if (float.TryParse(maxInput.text, out maxBuildingHeight)) { if (builingHeightUnit.selectedIndex == 1) { maxBuildingHeight *= 0.3048f; } ((UISearchBox)parent).Search(); } if (maxInput.text == "") { maxBuildingHeight = float.MaxValue; ((UISearchBox)parent).Search(); } }; // building height unit builingHeightUnit = SamsamTS.UIUtils.CreateDropDown(this); builingHeightUnit.size = new Vector2(80, 25); builingHeightUnit.listHeight = 210; builingHeightUnit.itemHeight = 30; builingHeightUnit.AddItem(Translations.Translate("FIF_EF_MET")); builingHeightUnit.AddItem(Translations.Translate("FIF_EF_FEE")); builingHeightUnit.selectedIndex = 0; builingHeightUnit.isVisible = false; builingHeightUnit.relativePosition = new Vector3(maxInput.relativePosition.x + maxInput.width + 30, 5); builingHeightUnit.eventSelectedIndexChanged += (c, p) => { if (float.TryParse(minInput.text, out minBuildingHeight)) { if (builingHeightUnit.selectedIndex == 1) { minBuildingHeight *= 0.3048f; } } if (float.TryParse(maxInput.text, out maxBuildingHeight)) { if (builingHeightUnit.selectedIndex == 1) { maxBuildingHeight *= 0.3048f; } } if (minInput.text == "") { minBuildingHeight = float.MinValue; } if (maxInput.text == "") { maxBuildingHeight = float.MaxValue; } ((UISearchBox)parent).Search(); }; // building level dropdown buildingLevelDropDownMenu = SamsamTS.UIUtils.CreateDropDown(this); buildingLevelDropDownMenu.size = new Vector2(80, 25); buildingLevelDropDownMenu.listHeight = 300; buildingLevelDropDownMenu.itemHeight = 30; buildingLevelDropDownMenu.AddItem("1"); buildingLevelDropDownMenu.AddItem("2"); buildingLevelDropDownMenu.AddItem("3"); buildingLevelDropDownMenu.AddItem("4"); buildingLevelDropDownMenu.AddItem("5"); buildingLevelDropDownMenu.isVisible = false; buildingLevelDropDownMenu.selectedIndex = 0; buildingLevelDropDownMenu.relativePosition = new Vector3(optionDropDownMenu.relativePosition.x + optionDropDownMenu.width + 50, 5); buildingLevelDropDownMenu.eventSelectedIndexChanged += (c, p) => { if (optionDropDownCheckBox.isChecked) { ((UISearchBox)parent).Search(); } }; }
/*public override void OnDestroy() * { * base.OnDestroy(); * * DebugUtils.Log("Destroying UIMainPanel"); * * if (m_button != null) GameObject.Destroy(m_button.gameObject); * GameObject.Destroy(m_optionPanel.gameObject); * }*/ private void SetupControls() { float offset = 40f; // Title Bar m_title = AddUIComponent <UITitleBar>(); m_title.iconSprite = "InfoIconTrafficCongestion"; m_title.title = "Advanced Vehicle Options " + ModInfo.version; // Category DropDown UILabel label = AddUIComponent <UILabel>(); label.textScale = 0.8f; label.padding = new RectOffset(0, 0, 8, 0); label.relativePosition = new Vector3(10f, offset); label.text = "Category :"; m_category = UIUtils.CreateDropDown(this); m_category.width = 150; for (int i = 0; i < categoryList.Length; i++) { m_category.AddItem(categoryList[i]); } m_category.selectedIndex = 0; m_category.tooltip = "Select a category to display\nTip: Use the mouse wheel to switch between categories faster"; m_category.relativePosition = label.relativePosition + new Vector3(75f, 0f); m_category.eventSelectedIndexChanged += (c, t) => { m_category.enabled = false; PopulateList(); m_category.enabled = true; }; // Search m_search = UIUtils.CreateTextField(this); m_search.width = 145f; m_search.height = 30f; m_search.padding = new RectOffset(6, 6, 6, 6); m_search.tooltip = "Type the name of a vehicle type"; m_search.relativePosition = new Vector3(WIDTHLEFT - m_search.width, offset); m_search.eventTextChanged += (c, t) => PopulateList(); label = AddUIComponent <UILabel>(); label.textScale = 0.8f; label.padding = new RectOffset(0, 0, 8, 0); label.relativePosition = m_search.relativePosition - new Vector3(60f, 0f); label.text = "Search :"; // FastList m_fastList = UIFastList.Create <UIVehicleItem>(this); m_fastList.backgroundSprite = "UnlockingPanel"; m_fastList.width = WIDTHLEFT - 5; m_fastList.height = height - offset - 110; m_fastList.canSelect = true; m_fastList.relativePosition = new Vector3(5, offset + 35); // Configuration file buttons UILabel configLabel = this.AddUIComponent <UILabel>(); configLabel.text = "Configuration file:"; configLabel.textScale = 0.8f; configLabel.relativePosition = new Vector3(10, height - 60); m_import = UIUtils.CreateButton(this); m_import.text = "Import"; m_import.tooltip = "Import the configuration"; m_import.relativePosition = new Vector3(10, height - 40); m_export = UIUtils.CreateButton(this); m_export.text = "Export"; m_export.tooltip = "Export the configuration"; m_export.relativePosition = new Vector3(105, height - 40); // Preview UIPanel panel = AddUIComponent <UIPanel>(); panel.backgroundSprite = "GenericPanel"; panel.width = WIDTHRIGHT - 10; panel.height = HEIGHT - 420; panel.relativePosition = new Vector3(WIDTHLEFT + 5, offset); m_preview = panel.AddUIComponent <UITextureSprite>(); m_preview.size = panel.size; m_preview.relativePosition = Vector3.zero; m_previewRenderer = gameObject.AddComponent <PreviewRenderer>(); m_previewRenderer.size = m_preview.size * 2; // Twice the size for anti-aliasing m_preview.texture = m_previewRenderer.texture; // Follow if (m_cameraController != null) { m_followVehicle = AddUIComponent <UISprite>(); m_followVehicle.spriteName = "LocationMarkerFocused"; m_followVehicle.width = m_followVehicle.spriteInfo.width; m_followVehicle.height = m_followVehicle.spriteInfo.height; m_followVehicle.tooltip = "Click here to cycle through the existing vehicles of that type"; m_followVehicle.relativePosition = new Vector3(panel.relativePosition.x + panel.width - m_followVehicle.width - 5, panel.relativePosition.y + 5); m_followVehicle.eventClick += (c, p) => FollowNextVehicle(); } // Option panel m_optionPanel = AddUIComponent <UIOptionPanel>(); m_optionPanel.relativePosition = new Vector3(WIDTHLEFT, height - 370); // Event handlers m_fastList.eventSelectedIndexChanged += OnSelectedItemChanged; m_optionPanel.eventEnableCheckChanged += OnEnableStateChanged; m_import.eventClick += (c, t) => { DefaultOptions.RestoreAll(); AdvancedVehicleOptions.ImportConfig(); optionList = AdvancedVehicleOptions.config.options; }; m_export.eventClick += (c, t) => AdvancedVehicleOptions.ExportConfig(); panel.eventMouseDown += (c, p) => { eventMouseMove += RotateCamera; if (m_optionPanel.m_options != null && m_optionPanel.m_options.useColorVariations) { m_previewRenderer.RenderVehicle(m_optionPanel.m_options.prefab, m_previewColor); } else { m_previewRenderer.RenderVehicle(m_optionPanel.m_options.prefab); } }; panel.eventMouseUp += (c, p) => { eventMouseMove -= RotateCamera; if (m_optionPanel.m_options != null && m_optionPanel.m_options.useColorVariations) { m_previewRenderer.RenderVehicle(m_optionPanel.m_options.prefab, m_previewColor); } else { m_previewRenderer.RenderVehicle(m_optionPanel.m_options.prefab); } }; panel.eventMouseWheel += (c, p) => { m_previewRenderer.zoom -= Mathf.Sign(p.wheelDelta) * 0.25f; if (m_optionPanel.m_options != null && m_optionPanel.m_options.useColorVariations) { m_previewRenderer.RenderVehicle(m_optionPanel.m_options.prefab, m_previewColor); } else { m_previewRenderer.RenderVehicle(m_optionPanel.m_options.prefab); } }; }
private void CreatePanelComponents() { m_routeLabel = this.AddUIComponent <UILabel>(); m_routeLabel.textScale = 1f; m_routeLabel.size = new Vector3(m_UIPadding.left, m_panelTitle.height + m_UIPadding.bottom); m_routeLabel.textColor = new Color32(180, 180, 180, 255); m_routeLabel.relativePosition = new Vector3(m_UIPadding.left, m_panelTitle.height + m_UIPadding.bottom); m_routeLabel.textAlignment = UIHorizontalAlignment.Left; m_routeLabel.text = "Route Name"; m_routeTypeDropdown = UIUtils.CreateDropDown(this, new Vector2(((this.width - m_UIPadding.left - 2 * m_UIPadding.right)), 25)); //TODO: Replace with Random namer values foreach (RouteShieldInfo info in RouteShieldConfig.Instance().routeShieldDictionary.Values) { m_routeTypeDropdown.AddItem(info.textureName); } m_routeTypeDropdown.selectedIndex = 0; m_routeTypeDropdown.relativePosition = new Vector3(m_UIPadding.left, m_routeLabel.relativePosition.y + m_routeLabel.height + m_UIPadding.bottom); m_routeStrField = UIUtils.CreateTextField(this); m_routeStrField.relativePosition = new Vector3(m_UIPadding.left, m_routeTypeDropdown.relativePosition.y + m_routeTypeDropdown.height + m_UIPadding.bottom); m_routeStrField.height = 25; m_routeStrField.width = (this.width - m_UIPadding.left - 2 * m_UIPadding.right); m_routeStrField.processMarkup = false; m_routeStrField.textColor = Color.white; m_routeStrField.maxLength = 3; m_destinationLabel = this.AddUIComponent <UILabel>(); m_destinationLabel.textScale = 1f; m_destinationLabel.size = new Vector3(m_UIPadding.left, m_panelTitle.height + m_UIPadding.bottom); m_destinationLabel.textColor = new Color32(180, 180, 180, 255); m_destinationLabel.relativePosition = new Vector3(m_UIPadding.left, m_routeStrField.relativePosition.y + m_routeStrField.height + m_UIPadding.bottom); m_destinationLabel.textAlignment = UIHorizontalAlignment.Left; m_destinationLabel.text = "Destination Name"; m_destinationField[0] = UIUtils.CreateTextField(this); m_destinationField[0].relativePosition = new Vector3(m_UIPadding.left, m_destinationLabel.relativePosition.y + m_destinationLabel.height + m_UIPadding.bottom); m_destinationField[0].height = 25; m_destinationField[0].width = (this.width - m_UIPadding.left - 2 * m_UIPadding.right); m_destinationField[0].processMarkup = false; m_destinationField[0].textColor = Color.white; m_destinationField[0].maxLength = 14; m_destinationField[1] = UIUtils.CreateTextField(this); m_destinationField[1].relativePosition = new Vector3(m_UIPadding.left, m_destinationField[0].relativePosition.y + m_destinationField[0].height + m_UIPadding.bottom); m_destinationField[1].height = 25; m_destinationField[1].width = (this.width - m_UIPadding.left - 2 * m_UIPadding.right); m_destinationField[1].processMarkup = false; m_destinationField[1].textColor = Color.white; m_destinationField[1].maxLength = 14; m_propTypeLabel = this.AddUIComponent <UILabel>(); m_propTypeLabel.textScale = 1f; m_propTypeLabel.size = new Vector3(m_UIPadding.left, m_panelTitle.height + m_UIPadding.bottom); m_propTypeLabel.textColor = new Color32(180, 180, 180, 255); m_propTypeLabel.relativePosition = new Vector3(m_UIPadding.left, m_destinationField[1].relativePosition.y + m_destinationField[1].height + m_UIPadding.bottom); m_propTypeLabel.textAlignment = UIHorizontalAlignment.Left; m_propTypeLabel.text = "Sign prop type"; m_propTypeDropDown = UIUtils.CreateDropDown(this, new Vector2(((this.width - m_UIPadding.left - 2 * m_UIPadding.right)), 25)); //TODO: Replace with Random namer values var keys = RenderingManager.instance.m_signPropDict.Keys; foreach (String signPropName in RenderingManager.instance.m_signPropDict.Keys.Where(key => SignPropConfig.signPropInfoDict.ContainsKey(key))) { m_propTypeDropDown.AddItem(signPropName); } m_propTypeDropDown.selectedIndex = 0; m_propTypeDropDown.relativePosition = new Vector3(m_UIPadding.left, m_propTypeLabel.relativePosition.y + m_propTypeLabel.height + m_UIPadding.bottom); UIButton nameRoadButton = UIUtils.CreateButton(this); nameRoadButton.text = "Set"; nameRoadButton.size = new Vector2(60, 30); nameRoadButton.relativePosition = new Vector3(this.width - nameRoadButton.width - m_UIPadding.right, m_propTypeDropDown.relativePosition.y + m_propTypeDropDown.height + m_UIPadding.bottom); nameRoadButton.eventClicked += NameRoadButton_eventClicked; nameRoadButton.tooltip = "Create the label"; this.height = nameRoadButton.relativePosition.y + nameRoadButton.height + m_UIPadding.bottom; }
public override void Start() { base.Start(); // Zoning zoningToggles = new UICheckBox[10]; for (int i = 0; i < 10; i++) { zoningToggles[i] = UIUtils.CreateIconToggle(this, CategoryIcons.atlases[i], CategoryIcons.spriteNames[i], CategoryIcons.spriteNames[i] + "Disabled"); zoningToggles[i].tooltip = CategoryIcons.tooltips[i]; zoningToggles[i].relativePosition = new Vector3(40 * i, 0); zoningToggles[i].isChecked = true; zoningToggles[i].readOnly = true; zoningToggles[i].checkedBoxObject.isInteractive = false; // Don't eat my double click event please zoningToggles[i].eventClick += (c, p) => { ((UICheckBox)c).isChecked = !((UICheckBox)c).isChecked; eventFilteringChanged(this, 0); }; zoningToggles[i].eventDoubleClick += (c, p) => { for (int j = 0; j < 10; j++) { zoningToggles[j].isChecked = false; } ((UICheckBox)c).isChecked = true; eventFilteringChanged(this, 0); }; } allZones = UIUtils.CreateButton(this); allZones.width = 55; allZones.text = "All"; allZones.relativePosition = new Vector3(400, 5); allZones.eventClick += (c, p) => { for (int i = 0; i < 10; i++) { zoningToggles[i].isChecked = true; } eventFilteringChanged(this, 0); }; noZones = UIUtils.CreateButton(this); noZones.width = 55; noZones.text = "None"; noZones.relativePosition = new Vector3(460, 5); noZones.eventClick += (c, p) => { for (int i = 0; i < 10; i++) { zoningToggles[i].isChecked = false; } eventFilteringChanged(this, 0); }; // Display UILabel display = AddUIComponent <UILabel>(); display.textScale = 0.8f; display.padding = new RectOffset(0, 0, 8, 0); display.text = "Display: "; display.relativePosition = new Vector3(0, 40); origin = UIUtils.CreateDropDown(this); origin.width = 90; origin.AddItem("All"); origin.AddItem("Default"); origin.AddItem("Custom"); origin.AddItem("Cloned"); origin.selectedIndex = 0; origin.relativePosition = new Vector3(display.relativePosition.x + display.width + 5, 40); origin.eventSelectedIndexChanged += (c, i) => eventFilteringChanged(this, 1); status = UIUtils.CreateDropDown(this); status.width = 90; status.AddItem("All"); status.AddItem("Included"); status.AddItem("Excluded"); status.selectedIndex = 0; status.relativePosition = new Vector3(origin.relativePosition.x + origin.width + 5, 40); status.eventSelectedIndexChanged += (c, i) => eventFilteringChanged(this, 2); // Level UILabel levelLabel = AddUIComponent <UILabel>(); levelLabel.textScale = 0.8f; levelLabel.padding = new RectOffset(0, 0, 8, 0); levelLabel.text = "Level: "; levelLabel.relativePosition = new Vector3(status.relativePosition.x + status.width + 10, 40); levelFilter = UIUtils.CreateDropDown(this); levelFilter.width = 55; levelFilter.AddItem("All"); levelFilter.AddItem("1"); levelFilter.AddItem("2"); levelFilter.AddItem("3"); levelFilter.AddItem("4"); levelFilter.AddItem("5"); levelFilter.selectedIndex = 0; levelFilter.relativePosition = new Vector3(levelLabel.relativePosition.x + levelLabel.width + 5, 40); levelFilter.eventSelectedIndexChanged += (c, i) => eventFilteringChanged(this, 3); // Size UILabel sizeLabel = AddUIComponent <UILabel>(); sizeLabel.textScale = 0.8f; sizeLabel.padding = new RectOffset(0, 0, 8, 0); sizeLabel.text = "Size: "; sizeLabel.relativePosition = new Vector3(levelFilter.relativePosition.x + levelFilter.width + 10, 40); sizeFilterX = UIUtils.CreateDropDown(this); sizeFilterX.width = 55; sizeFilterX.AddItem("All"); sizeFilterX.AddItem("1"); sizeFilterX.AddItem("2"); sizeFilterX.AddItem("3"); sizeFilterX.AddItem("4"); sizeFilterX.selectedIndex = 0; sizeFilterX.relativePosition = new Vector3(sizeLabel.relativePosition.x + sizeLabel.width + 5, 40); UILabel XLabel = AddUIComponent <UILabel>(); XLabel.textScale = 0.8f; XLabel.padding = new RectOffset(0, 0, 8, 0); XLabel.text = "X"; XLabel.isVisible = false; XLabel.relativePosition = new Vector3(sizeFilterX.relativePosition.x + sizeFilterX.width - 5, 40); sizeFilterY = UIUtils.CreateDropDown(this); sizeFilterY.width = 45; sizeFilterY.AddItem("1"); sizeFilterY.AddItem("2"); sizeFilterY.AddItem("3"); sizeFilterY.AddItem("4"); sizeFilterY.selectedIndex = 0; sizeFilterY.isVisible = false; sizeFilterY.relativePosition = new Vector3(XLabel.relativePosition.x + XLabel.width + 5, 40); sizeFilterX.eventSelectedIndexChanged += (c, i) => { if (i == 0) { sizeFilterX.width = 55; XLabel.isVisible = false; sizeFilterY.isVisible = false; } else { sizeFilterX.width = 45; XLabel.isVisible = true; sizeFilterY.isVisible = true; } eventFilteringChanged(this, 4); }; sizeFilterY.eventSelectedIndexChanged += (c, i) => eventFilteringChanged(this, 4); // Name filter UILabel nameLabel = AddUIComponent <UILabel>(); nameLabel.textScale = 0.8f; nameLabel.padding = new RectOffset(0, 0, 8, 0); nameLabel.relativePosition = new Vector3(width - 250, 0); nameLabel.text = "Name: "; nameFilter = UIUtils.CreateTextField(this); nameFilter.width = 200; nameFilter.height = 30; nameFilter.padding = new RectOffset(6, 6, 6, 6); nameFilter.relativePosition = new Vector3(width - nameFilter.width, 0); nameFilter.eventTextChanged += (c, s) => eventFilteringChanged(this, 5); nameFilter.eventTextSubmitted += (c, s) => eventFilteringChanged(this, 5); }
internal void SetupControls() { float offset = 40f; // Title Bar m_title = AddUIComponent <UITitleBar>(); m_title.iconSprite = "InfoIconTrafficCongestion"; m_title.title = AVOMod.ModName + " " + AVOMod.Version; // Category DropDown UILabel label = AddUIComponent <UILabel>(); label.textScale = 0.8f; label.padding = new RectOffset(0, 0, 8, 0); label.relativePosition = new Vector3(10f, offset); label.text = Translations.Translate("AVO_MOD_MP56"); m_category = UIUtils.CreateDropDown(this); m_category.width = 175; for (int i = 0; i < categoryList.Length; i++) { m_category.AddItem(categoryList[i]); } m_category.selectedIndex = 0; m_category.tooltip = Translations.Translate("AVO_MOD_MP39"); m_category.relativePosition = label.relativePosition + new Vector3(75f, 0f); m_category.eventSelectedIndexChanged += (c, t) => { m_category.enabled = false; PopulateList(); m_category.enabled = true; }; // Search m_search = UIUtils.CreateTextField(this); m_search.width = 145f; m_search.height = 30f; m_search.padding = new RectOffset(6, 6, 6, 6); m_search.tooltip = Translations.Translate("AVO_MOD_MP40"); m_search.relativePosition = new Vector3(WIDTHLEFT - m_search.width, offset); m_search.eventTextChanged += (c, t) => PopulateList(); label = AddUIComponent <UILabel>(); label.textScale = 0.8f; label.padding = new RectOffset(0, 0, 8, 0); label.relativePosition = m_search.relativePosition - new Vector3(60f, 0f); label.text = Translations.Translate("AVO_MOD_MP55"); // FastList m_fastList = UIFastList.Create <UIVehicleItem>(this); m_fastList.backgroundSprite = "UnlockingPanel"; m_fastList.width = WIDTHLEFT - 5; m_fastList.height = height - offset - 110; m_fastList.canSelect = true; m_fastList.relativePosition = new Vector3(5, offset + 35); // Configuration file buttons UILabel configLabel = this.AddUIComponent <UILabel>(); configLabel.text = Translations.Translate("AVO_MOD_MP41"); configLabel.textScale = 0.8f; configLabel.relativePosition = new Vector3(16, height - 65); m_import = UIUtils.CreateButton(this); m_import.text = Translations.Translate("AVO_MOD_MP42"); m_import.width = 80; m_import.tooltip = Translations.Translate("AVO_MOD_MP43"); m_import.relativePosition = new Vector3(10, height - 45); m_export = UIUtils.CreateButton(this); m_export.text = Translations.Translate("AVO_MOD_MP44"); m_export.width = 80; m_export.tooltip = Translations.Translate("AVO_MOD_MP45"); m_export.relativePosition = new Vector3(95, height - 45); m_resetall = UIUtils.CreateButton(this); m_resetall.text = Translations.Translate("AVO_MOD_MP46"); m_resetall.width = 80; m_resetall.tooltip = Translations.Translate("AVO_MOD_MP47"); m_resetall.relativePosition = new Vector3(180, height - 45); m_autosave = AddUIComponent <UILabel>(); m_autosave.textScale = 0.6f; m_autosave.text = Translations.Translate("AVO_MOD_MP48"); m_autosave.relativePosition = new Vector3(275, height - 40); m_autosave.autoSize = true; m_autosave.textAlignment = UIHorizontalAlignment.Center; m_autosave.textColor = Color.green; m_autosave.tooltip = Translations.Translate("AVO_MOD_MP49"); m_autosave.isVisible = AdvancedVehicleOptions.AutoSaveVehicleConfig; // Preview UIPanel panel = AddUIComponent <UIPanel>(); panel.backgroundSprite = "GenericPanel"; panel.width = WIDTHRIGHT - 10; panel.height = HEIGHT - 420; panel.relativePosition = new Vector3(WIDTHLEFT + 5, offset); m_preview = panel.AddUIComponent <UITextureSprite>(); m_preview.size = panel.size; m_preview.relativePosition = Vector3.zero; m_previewRenderer = gameObject.AddComponent <PreviewRenderer>(); m_previewRenderer.size = m_preview.size * 2; // Twice the size for anti-aliasing m_preview.texture = m_previewRenderer.texture; // Follow a vehicle if (m_cameraController != null) { m_followVehicle = AddUIComponent <UISprite>(); m_followVehicle.spriteName = "LocationMarkerFocused"; m_followVehicle.width = m_followVehicle.spriteInfo.width; m_followVehicle.height = m_followVehicle.spriteInfo.height; m_followVehicle.tooltip = Translations.Translate("AVO_MOD_MP50"); m_followVehicle.relativePosition = new Vector3(panel.relativePosition.x + panel.width - m_followVehicle.width - 5, panel.relativePosition.y + 5); m_followVehicle.eventClick += (c, p) => FollowNextVehicle(); } //Remove the followed vehicle { m_removeVehicle = AddUIComponent <UISprite>(); m_removeVehicle.Hide(); m_removeVehicle.spriteName = "IconPolicyOldTown"; m_removeVehicle.width = m_removeVehicle.spriteInfo.width - 12; m_removeVehicle.height = m_removeVehicle.spriteInfo.height - 12; m_removeVehicle.tooltip = Translations.Translate("AVO_MOD_MP51"); m_removeVehicle.relativePosition = new Vector3(panel.relativePosition.x + panel.width - m_removeVehicle.width - 33, panel.relativePosition.y + 7); m_removeVehicle.eventClick += (c, p) => RemoveThisVehicle(); } // Option panel m_optionPanel = AddUIComponent <UIOptionPanel>(); m_optionPanel.relativePosition = new Vector3(WIDTHLEFT, height - 370); // Event handlers m_fastList.eventSelectedIndexChanged += OnSelectedItemChanged; m_optionPanel.eventEnableCheckChanged += OnEnableStateChanged; m_import.eventClick += (c, t) => { DefaultOptions.RestoreAll(); AdvancedVehicleOptions.ImportVehicleDataConfig(); optionList = AdvancedVehicleOptions.config.options; }; m_export.eventClick += (c, t) => AdvancedVehicleOptions.ExportVehicleDataConfig(true); m_resetall.eventClick += (c, t) => { ConfirmPanel.ShowModal(Translations.Translate("AVO_MOD_MP52"), Translations.Translate("AVO_MOD_MP53"), (comp, ret) => { if (ret != 1) { return; } DefaultOptions.RestoreAll(); AdvancedVehicleOptions.ResetVehicleDataConfig(); optionList = AdvancedVehicleOptions.config.options; ExceptionPanel resetpanel = UIView.library.ShowModal <ExceptionPanel>("ExceptionPanel"); resetpanel.SetMessage("Advanced Vehicle Options", Translations.Translate("AVO_MOD_MP54"), false); }); }; panel.eventMouseDown += (c, p) => { eventMouseMove += RotateCamera; if (m_optionPanel.m_options != null && m_optionPanel.m_options.useColorVariations) { m_previewRenderer.RenderVehicle(m_optionPanel.m_options.prefab, m_previewColor); } else { m_previewRenderer.RenderVehicle(m_optionPanel.m_options.prefab); } }; panel.eventMouseUp += (c, p) => { eventMouseMove -= RotateCamera; if (m_optionPanel.m_options != null && m_optionPanel.m_options.useColorVariations) { m_previewRenderer.RenderVehicle(m_optionPanel.m_options.prefab, m_previewColor); } else { m_previewRenderer.RenderVehicle(m_optionPanel.m_options.prefab); } }; panel.eventMouseWheel += (c, p) => { m_previewRenderer.zoom -= Mathf.Sign(p.wheelDelta) * 0.25f; if (m_optionPanel.m_options != null && m_optionPanel.m_options.useColorVariations) { m_previewRenderer.RenderVehicle(m_optionPanel.m_options.prefab, m_previewColor); } else { m_previewRenderer.RenderVehicle(m_optionPanel.m_options.prefab); } }; }
public override void Awake() { height = 46; focusButton = UIUtils.CreateButton(this); focusButton.name = "CCX_FocusButton"; focusButton.text = "Point 0"; focusButton.size = new Vector2(70f, 30f); focusButton.relativePosition = new Vector3(8, 8); focusButton.tooltip = "Click here to place the camera at this point"; easingDropDown = UIUtils.CreateDropDown(this); easingDropDown.name = "CCX_EasingDropDown"; easingDropDown.textScale = 0.9f; easingDropDown.AddItem("None"); easingDropDown.AddItem("Auto"); easingDropDown.AddItem("In"); easingDropDown.AddItem("Out"); easingDropDown.AddItem("InOut"); easingDropDown.selectedValue = "Auto"; easingDropDown.size = new Vector2(80f, 30f); easingDropDown.textFieldPadding.top = 7; easingDropDown.relativePosition = new Vector3(focusButton.relativePosition.x + focusButton.width + 8, 8); easingDropDown.tooltip = "Camera movement easing"; durationInput = UIUtils.CreateTextField(this); durationInput.name = "CCX_DurationInput"; durationInput.size = new Vector2(40f, 26f); durationInput.numericalOnly = true; durationInput.allowFloats = true; durationInput.padding.top = 6; durationInput.relativePosition = new Vector3(easingDropDown.relativePosition.x + easingDropDown.width + 8, 10); durationInput.tooltip = "Duration in seconds"; delayInput = UIUtils.CreateTextField(this); delayInput.name = "CCX_DelayInput"; delayInput.size = new Vector2(45f, 26f); delayInput.numericalOnly = true; delayInput.allowFloats = true; delayInput.padding.top = 6; delayInput.relativePosition = new Vector3(durationInput.relativePosition.x + durationInput.width + 8, 10); delayInput.tooltip = "Delay in seconds"; fovInput = UIUtils.CreateTextField(this); fovInput.name = "CCX_DelayInput"; fovInput.size = new Vector2(45f, 26); fovInput.numericalOnly = true; fovInput.allowFloats = true; fovInput.padding.top = 6; fovInput.relativePosition = new Vector3(delayInput.relativePosition.x + delayInput.width + 8, 10); fovInput.tooltip = "Field of view in degrees"; resetButton = UIUtils.CreateButton(this); resetButton.name = "CCX_ResetButton"; resetButton.text = "O"; resetButton.size = new Vector2(45f, 30f); resetButton.relativePosition = new Vector3(fovInput.relativePosition.x + fovInput.width + 8, 8); resetButton.tooltip = "Recapture the camera position"; removeButton = UIUtils.CreateButton(this); removeButton.name = "CCX_RemoveButton"; removeButton.text = "X"; removeButton.size = new Vector2(40f, 30f); removeButton.relativePosition = new Vector3(resetButton.relativePosition.x + resetButton.width + 8, 8); removeButton.tooltip = "Remove this point"; focusButton.eventClicked += (c, p) => { CameraPath.SetCitiesCameraTransform(knot); }; easingDropDown.eventSelectedIndexChanged += (c, p) => { knot.mode = (EasingMode)p; }; durationInput.eventTextSubmitted += (c, p) => { float value; if (float.TryParse(p, out value) && value > 0) { knot.duration = value; } durationInput.text = knot.duration.ToString(); }; durationInput.eventMouseWheel += (c, p) => { float value; if (float.TryParse(durationInput.text, out value)) { knot.duration = Mathf.Max(0, value + p.wheelDelta); durationInput.text = knot.duration.ToString(); } p.Use(); }; delayInput.eventTextSubmitted += (c, p) => { float value; if (float.TryParse(p, out value)) { knot.delay = Mathf.Max(0, value); } delayInput.text = knot.delay.ToString(); }; delayInput.eventMouseWheel += (c, p) => { float value; if (float.TryParse(delayInput.text, out value)) { knot.delay = Mathf.Max(0, value + p.wheelDelta); delayInput.text = knot.delay.ToString(); } p.Use(); }; fovInput.eventTextSubmitted += (c, p) => { float value; if (float.TryParse(p, out value)) { knot.fov = Mathf.Clamp(value, 20f, 179f) / 2f; } fovInput.text = (2f * knot.fov).ToString(); }; fovInput.eventMouseWheel += (c, p) => { float value; if (float.TryParse(fovInput.text, out value)) { knot.fov = Mathf.Clamp(value + p.wheelDelta, 20f, 179f) / 2f; fovInput.text = (2f * knot.fov).ToString(); } p.Use(); }; resetButton.eventClicked += (c, p) => { knot.CaptureCamera(); fovInput.text = (2f * knot.fov).ToString(); }; removeButton.eventClicked += (c, p) => { CameraDirector.cameraPath.knots.RemoveAt(index); CameraDirector.mainWindow.RefreshKnotList(); }; }
/* The mod window turns on when RoadsIntersectionPanel or RoadsRoadTollsPanel is visible. */ public override void Start() { name = "SmartIntersectionsPanel"; if (!ModLoadingExtension.roadAnarchyDetected) { enabled = false; return; } atlas = ResourceLoader.GetAtlas("Ingame"); backgroundSprite = "SubcategoriesPanel"; size = new Vector2(204, 100); //Vector2 resolution = GetUIView().GetScreenResolution(); absolutePosition = new Vector3(ModInfo.savedWindowX.value, ModInfo.savedWindowY.value); isVisible = false; clipChildren = true; eventPositionChanged += (c, p) => { if (absolutePosition.x < 0) { absolutePosition = new Vector2(100, GetUIView().GetScreenResolution().y - height - 150); } Vector2 resolution = GetUIView().GetScreenResolution(); absolutePosition = new Vector2( Mathf.Clamp(absolutePosition.x, 0, resolution.x - width), Mathf.Clamp(absolutePosition.y, 0, resolution.y - height)); ModInfo.savedWindowX.value = (int)absolutePosition.x; ModInfo.savedWindowY.value = (int)absolutePosition.y; }; UIDragHandle dragHandle = AddUIComponent <UIDragHandle>(); dragHandle.width = width; dragHandle.relativePosition = Vector3.zero; dragHandle.target = parent; float cumulativeHeight = 8; UILabel label = AddUIComponent <UILabel>(); label.textScale = 0.9f; label.text = "Smart Intersections"; label.relativePosition = new Vector2(8, cumulativeHeight); label.SendToBack(); cumulativeHeight += label.height + 8; dragHandle.height = cumulativeHeight; m_enabledCheckBox = UI.CreateCheckBox(this); m_enabledCheckBox.name = "SI_Enabled"; m_enabledCheckBox.label.text = "Enabled"; m_enabledCheckBox.tooltip = "Enable Smart Intersections Tool"; m_enabledCheckBox.isChecked = SavedEnabled.value; m_enabledCheckBox.relativePosition = new Vector3(8, cumulativeHeight); m_enabledCheckBox.eventCheckChanged += (c, state) => { SmartIntersections.instance.Active = state; SavedEnabled.value = state; }; cumulativeHeight += m_enabledCheckBox.height + 8; m_connectRoadsCheckBox = UI.CreateCheckBox(this); m_connectRoadsCheckBox.name = "SI_ConnectRoads"; m_connectRoadsCheckBox.label.text = "Connect roads"; m_connectRoadsCheckBox.tooltip = "Try connecting dead ends of roads"; m_connectRoadsCheckBox.isChecked = SavedConnectRoads.value; m_connectRoadsCheckBox.relativePosition = new Vector3(8, cumulativeHeight); m_connectRoadsCheckBox.eventCheckChanged += (c, state) => { SavedConnectRoads.value = state; }; cumulativeHeight += m_connectRoadsCheckBox.height + 8; label = AddUIComponent <UILabel>(); label.textScale = 0.9f; label.text = "Snapping"; label.relativePosition = new Vector2(8, cumulativeHeight); label.SendToBack(); cumulativeHeight += label.height + 8; m_dropDown = UI.CreateDropDown(this); m_dropDown.AddItem("Enabled"); m_dropDown.AddItem("Low"); m_dropDown.AddItem("Off"); m_dropDown.relativePosition = new Vector3(8, cumulativeHeight); m_dropDown.width = width - 16; m_dropDown.eventSelectedIndexChanged += (component, state) => { SmartIntersections.instance.Snapping = (SmartIntersections.SnappingMode)state; SavedSnapping.value = state; }; m_dropDown.selectedIndex = SavedSnapping.value; m_dropDown.listPosition = UIDropDown.PopupListPosition.Above; cumulativeHeight += m_dropDown.height + 8; m_undoButton = UI.CreateButton(this); m_undoButton.text = "Undo"; m_undoButton.tooltip = "Remove last built intersection"; m_undoButton.relativePosition = new Vector2(8, cumulativeHeight); m_undoButton.width = width - 16; m_undoButton.isEnabled = false; m_undoButton.eventClick += (c, p) => { SmartIntersections.instance.Undo(); }; cumulativeHeight += m_undoButton.height + 8; height = cumulativeHeight; //absolutePosition = ModInfo.defWindowPosition; m_intersectionPanel = UIView.Find("RoadsIntersectionPanel"); if (m_intersectionPanel != null) { m_intersectionPanel.eventVisibilityChanged += (comp, value) => { //Debug.Log("Roads panel: visibility " + value); isVisible = IsIntersetionsPanelVisible(); }; } m_tollPanel = UIView.Find("RoadsRoadTollsPanel"); if (m_tollPanel != null) { m_tollPanel.eventVisibilityChanged += (comp, value) => { //Debug.Log("Tolls panel: visibility " + value); isVisible = IsIntersetionsPanelVisible(); }; } }
public override void Start() { name = "YetAnotherToolbar_UIQuickMenuPopUp"; atlas = SamsamTS.UIUtils.GetAtlas("Ingame"); backgroundSprite = "GenericPanelWhite"; size = new Vector2(460, 500); instance = this; UILabel title = AddUIComponent <UILabel>(); title.text = Translations.Translate("YAT_QM_TIT"); title.textColor = new Color32(0, 0, 0, 255); title.relativePosition = new Vector3(spacing * 3, spacing * 3); assetEditorWarning = AddUIComponent <UILabel>(); assetEditorWarning.text = Translations.Translate("YAT_QM_ASSET"); assetEditorWarning.textColor = new Color32(255, 0, 0, 255); assetEditorWarning.textScale = 0.9f; assetEditorWarning.relativePosition = new Vector3(spacing * 3, title.relativePosition.y + 20); assetEditorWarning.isVisible = false; UIButton close = AddUIComponent <UIButton>(); close.size = new Vector2(30f, 30f); close.text = "X"; close.textScale = 0.9f; close.textColor = new Color32(0, 0, 0, 255); close.focusedTextColor = new Color32(0, 0, 0, 255); close.hoveredTextColor = new Color32(109, 109, 109, 255); close.pressedTextColor = new Color32(128, 128, 128, 102); close.textPadding = new RectOffset(8, 8, 8, 8); close.canFocus = false; close.playAudioEvents = true; close.relativePosition = new Vector3(width - close.width, 0); close.eventClicked += (c, p) => Close(); close.Focus(); numOfRowLabel = AddUIComponent <UILabel>(); numOfRowLabel.text = Translations.Translate("YAT_QM_ROW"); numOfRowLabel.textScale = 0.8f; numOfRowLabel.textColor = new Color32(0, 0, 0, 255); numOfRowLabel.relativePosition = new Vector3(title.relativePosition.x, title.relativePosition.y + title.height + 20); numOfRowSlider = SamsamTS.UIUtils.CreateSlider(this, Settings.numOfRows, 2.0f, 10.0f, 1.0f); numOfRowSlider.relativePosition = new Vector3(numOfRowLabel.relativePosition.x, numOfRowLabel.relativePosition.y + numOfRowLabel.height + 5); numOfRowSlider.eventValueChanged += (c, p) => { if (numOfRowSlider.value == Settings.numOfRows) { return; } numOfRowValueTextField.text = $"{numOfRowSlider.value}"; }; numOfRowValueTextField = SamsamTS.UIUtils.CreateTextField(this); numOfRowValueTextField.text = $"{Settings.numOfRows}"; numOfRowValueTextField.width = 70; numOfRowValueTextField.relativePosition = new Vector3(numOfRowSlider.relativePosition.x + numOfRowSlider.width + 15, numOfRowSlider.relativePosition.y - 10); numOfRowValueTextField.eventTextChanged += (c, p) => { if (!int.TryParse(numOfRowValueTextField.text, out int newValue)) { return; } if (newValue < 2 || newValue > 10) { return; // too many rows will cause performance issues or even crash the game } Settings.numOfRows = newValue; XMLUtils.SaveSettings(); numOfRowSlider.value = newValue; if (!Settings.expanded) { Settings.expanded = true; XMLUtils.SaveSettings(); YetAnotherToolbar.instance.mainButton.normalFgSprite = "Collapse"; } YetAnotherToolbar.instance.Expand(); }; numOfColLabel = AddUIComponent <UILabel>(); numOfColLabel.text = Translations.Translate("YAT_QM_COL"); numOfColLabel.textScale = 0.8f; numOfColLabel.textColor = new Color32(0, 0, 0, 255); numOfColLabel.relativePosition = new Vector3(title.relativePosition.x, numOfRowLabel.relativePosition.y + numOfRowLabel.height + 30); numOfColSlider = SamsamTS.UIUtils.CreateSlider(this, Settings.numOfCols, 7.0f, 25.0f, 1.0f); numOfColSlider.relativePosition = new Vector3(numOfColLabel.relativePosition.x, numOfColLabel.relativePosition.y + numOfColLabel.height + 5); numOfColSlider.eventValueChanged += (c, p) => { if (numOfColSlider.value == Settings.numOfCols) { return; } numOfColValueTextField.text = $"{numOfColSlider.value}"; }; numOfColValueTextField = SamsamTS.UIUtils.CreateTextField(this); numOfColValueTextField.text = $"{Settings.numOfCols}"; numOfColValueTextField.width = 70; numOfColValueTextField.relativePosition = new Vector3(numOfColSlider.relativePosition.x + numOfColSlider.width + 15, numOfColSlider.relativePosition.y - 10); numOfColValueTextField.eventTextChanged += (c, p) => { if (!int.TryParse(numOfColValueTextField.text, out int newValue)) { return; } if (newValue < 7 || newValue > 25) { return; // too many cols will cause performance issues or even crash the game } Settings.numOfCols = newValue; XMLUtils.SaveSettings(); numOfColSlider.value = newValue; if (Settings.expanded) { YetAnotherToolbar.instance.Expand(); } else { YetAnotherToolbar.instance.Collapse(); } }; scaleLabel = AddUIComponent <UILabel>(); scaleLabel.text = Translations.Translate("YAT_QM_SCL"); scaleLabel.textScale = 0.8f; scaleLabel.textColor = new Color32(0, 0, 0, 255); scaleLabel.relativePosition = new Vector3(title.relativePosition.x, numOfColLabel.relativePosition.y + numOfColLabel.height + 30); scaleSlider = SamsamTS.UIUtils.CreateSlider(this, Settings.toolbarScale, 0.5f, 1.5f, 0.05f); scaleSlider.relativePosition = new Vector3(scaleLabel.relativePosition.x, scaleLabel.relativePosition.y + scaleLabel.height + 5); scaleSlider.eventValueChanged += (c, p) => { Settings.toolbarScale = scaleSlider.value; XMLUtils.SaveSettings(); scaleValueLabel.text = $"{Settings.toolbarScale * 100} %"; YetAnotherToolbar.instance.UpdateScale(Settings.toolbarScale); YetAnotherToolbar.instance.UpdatePanelPosition(); }; scaleValueLabel = AddUIComponent <UILabel>(); scaleValueLabel.text = $"{Settings.toolbarScale * 100} %"; scaleValueLabel.textScale = 1.0f; scaleValueLabel.textColor = new Color32(0, 0, 0, 255); scaleValueLabel.relativePosition = new Vector3(scaleSlider.relativePosition.x + scaleSlider.width + 30, scaleSlider.relativePosition.y); horizontalOffsetLabel = AddUIComponent <UILabel>(); horizontalOffsetLabel.text = Translations.Translate("YAT_QM_HOR"); horizontalOffsetLabel.textScale = 0.8f; horizontalOffsetLabel.textColor = new Color32(0, 0, 0, 255); horizontalOffsetLabel.relativePosition = new Vector3(title.relativePosition.x, scaleSlider.relativePosition.y + scaleSlider.height + 20); horizontalOffsetSlider = SamsamTS.UIUtils.CreateSlider(this, Settings.horizontalOffset, -2000.0f, 2000f, 10.0f); horizontalOffsetSlider.relativePosition = new Vector3(horizontalOffsetLabel.relativePosition.x, horizontalOffsetLabel.relativePosition.y + horizontalOffsetLabel.height + 5); horizontalOffsetSlider.eventValueChanged += (c, p) => { if (horizontalOffsetSlider.value == Settings.horizontalOffset) { return; } horizontalOffsetValueTextField.text = $"{horizontalOffsetSlider.value}"; }; horizontalOffsetValueTextField = SamsamTS.UIUtils.CreateTextField(this); horizontalOffsetValueTextField.text = $"{Settings.horizontalOffset}"; horizontalOffsetValueTextField.width = 70; horizontalOffsetValueTextField.relativePosition = new Vector3(horizontalOffsetSlider.relativePosition.x + horizontalOffsetSlider.width + 15, horizontalOffsetSlider.relativePosition.y - 10); horizontalOffsetValueTextField.eventTextChanged += (c, p) => { if (!int.TryParse(horizontalOffsetValueTextField.text, out int newValue)) { return; } if (newValue < -2000 || newValue > 2000) { return; // reasonable range } Settings.horizontalOffset = newValue; XMLUtils.SaveSettings(); horizontalOffsetSlider.value = newValue; YetAnotherToolbar.instance.UpdatePanelPosition(); }; verticalOffsetLabel = AddUIComponent <UILabel>(); verticalOffsetLabel.text = Translations.Translate("YAT_QM_VER"); verticalOffsetLabel.textScale = 0.8f; verticalOffsetLabel.textColor = new Color32(0, 0, 0, 255); verticalOffsetLabel.relativePosition = new Vector3(title.relativePosition.x, horizontalOffsetLabel.relativePosition.y + horizontalOffsetLabel.height + 30); verticalOffsetSlider = SamsamTS.UIUtils.CreateSlider(this, Settings.verticalOffset, -1500.0f, 1500f, 10.0f); verticalOffsetSlider.relativePosition = new Vector3(verticalOffsetLabel.relativePosition.x, verticalOffsetLabel.relativePosition.y + verticalOffsetLabel.height + 5); verticalOffsetSlider.eventValueChanged += (c, p) => { if (verticalOffsetSlider.value == Settings.verticalOffset) { return; } verticalOffsetValueTextField.text = $"{verticalOffsetSlider.value}"; }; verticalOffsetValueTextField = SamsamTS.UIUtils.CreateTextField(this); verticalOffsetValueTextField.text = $"{Settings.verticalOffset}"; verticalOffsetValueTextField.width = 70; verticalOffsetValueTextField.relativePosition = new Vector3(verticalOffsetSlider.relativePosition.x + verticalOffsetSlider.width + 15, verticalOffsetSlider.relativePosition.y - 10); verticalOffsetValueTextField.eventTextChanged += (c, p) => { if (!int.TryParse(verticalOffsetValueTextField.text, out int newValue)) { return; } if (newValue < -1500 || newValue > 1500) { return; // reasonable range } Settings.verticalOffset = newValue; XMLUtils.SaveSettings(); verticalOffsetSlider.value = newValue; YetAnotherToolbar.instance.UpdatePanelPosition(); }; tsBarOffsetLabel = AddUIComponent <UILabel>(); tsBarOffsetLabel.text = Translations.Translate("YAT_QM_TSO"); tsBarOffsetLabel.textScale = 0.8f; tsBarOffsetLabel.textColor = new Color32(0, 0, 0, 255); tsBarOffsetLabel.relativePosition = new Vector3(title.relativePosition.x, verticalOffsetLabel.relativePosition.y + verticalOffsetLabel.height + 30); tsBarOffsetSlider = SamsamTS.UIUtils.CreateSlider(this, Settings.tsBarOffset, -1500.0f, 1500f, 10.0f); tsBarOffsetSlider.relativePosition = new Vector3(tsBarOffsetLabel.relativePosition.x, tsBarOffsetLabel.relativePosition.y + tsBarOffsetLabel.height + 5); tsBarOffsetSlider.eventValueChanged += (c, p) => { if (tsBarOffsetSlider.value == Settings.tsBarOffset) { return; } tsBarOffsetValueTextField.text = $"{tsBarOffsetSlider.value}"; }; tsBarOffsetValueTextField = SamsamTS.UIUtils.CreateTextField(this); tsBarOffsetValueTextField.text = $"{Settings.tsBarOffset}"; tsBarOffsetValueTextField.width = 70; tsBarOffsetValueTextField.relativePosition = new Vector3(tsBarOffsetSlider.relativePosition.x + tsBarOffsetSlider.width + 15, tsBarOffsetSlider.relativePosition.y - 10); tsBarOffsetValueTextField.eventTextChanged += (c, p) => { if (!int.TryParse(tsBarOffsetValueTextField.text, out int newValue)) { return; } if (newValue < -1500 || newValue > 1500) { return; // reasonable range } Settings.tsBarOffset = newValue; XMLUtils.SaveSettings(); tsBarOffsetSlider.value = newValue; YetAnotherToolbar.instance.UpdateTSBarOffset(); }; backgroundLabel = AddUIComponent <UILabel>(); backgroundLabel.text = Translations.Translate("YAT_QM_BAC"); backgroundLabel.textScale = 0.8f; backgroundLabel.textColor = new Color32(0, 0, 0, 255); backgroundLabel.relativePosition = new Vector3(title.relativePosition.x, tsBarOffsetLabel.relativePosition.y + tsBarOffsetLabel.height + 45); backgroundDropdown = SamsamTS.UIUtils.CreateDropDown(this); backgroundDropdown.normalBgSprite = "TextFieldPanelHovered"; backgroundDropdown.size = new Vector2(205, 25); backgroundDropdown.listHeight = 270; backgroundDropdown.itemHeight = 30; backgroundDropdown.AddItem(Translations.Translate("YAT_QM_DRK") + " - 100%"); backgroundDropdown.AddItem(Translations.Translate("YAT_QM_DRK") + " - 75%"); backgroundDropdown.AddItem(Translations.Translate("YAT_QM_DRK") + " - 50%"); backgroundDropdown.AddItem(Translations.Translate("YAT_QM_DRK") + " - 25%"); backgroundDropdown.AddItem(Translations.Translate("YAT_QM_TRS")); backgroundDropdown.AddItem(Translations.Translate("YAT_QM_LGH") + " - 100%"); backgroundDropdown.AddItem(Translations.Translate("YAT_QM_LGH") + " - 75%"); backgroundDropdown.AddItem(Translations.Translate("YAT_QM_LGH") + " - 50%"); backgroundDropdown.AddItem(Translations.Translate("YAT_QM_LGH") + " - 25%"); backgroundDropdown.selectedIndex = Settings.backgroundOption; backgroundDropdown.relativePosition = new Vector3(backgroundLabel.relativePosition.x + 230, backgroundLabel.relativePosition.y - 7f); backgroundDropdown.eventSelectedIndexChanged += (c, p) => { Settings.backgroundOption = backgroundDropdown.selectedIndex; XMLUtils.SaveSettings(); YetAnotherToolbar.instance.UpdateMainPanelBackground(); }; thumbnailBarBackgroundLabel = AddUIComponent <UILabel>(); thumbnailBarBackgroundLabel.text = Translations.Translate("YAT_QM_THM"); thumbnailBarBackgroundLabel.textScale = 0.8f; thumbnailBarBackgroundLabel.textColor = new Color32(0, 0, 0, 255); thumbnailBarBackgroundLabel.relativePosition = new Vector3(title.relativePosition.x, backgroundLabel.relativePosition.y + backgroundLabel.height + 30); thumbnailBarbackgroundDropdown = SamsamTS.UIUtils.CreateDropDown(this); thumbnailBarbackgroundDropdown.normalBgSprite = "TextFieldPanelHovered"; thumbnailBarbackgroundDropdown.size = new Vector2(205, 25); thumbnailBarbackgroundDropdown.listHeight = 270; thumbnailBarbackgroundDropdown.itemHeight = 30; thumbnailBarbackgroundDropdown.AddItem(Translations.Translate("YAT_QM_PB_OR")); thumbnailBarbackgroundDropdown.AddItem(Translations.Translate("YAT_QM_DRK") + " - 75%"); thumbnailBarbackgroundDropdown.AddItem(Translations.Translate("YAT_QM_DRK") + " - 50%"); thumbnailBarbackgroundDropdown.AddItem(Translations.Translate("YAT_QM_DRK") + " - 25%"); thumbnailBarbackgroundDropdown.AddItem(Translations.Translate("YAT_QM_TRS")); thumbnailBarbackgroundDropdown.selectedIndex = Settings.thumbnailBarBackgroundOption; thumbnailBarbackgroundDropdown.relativePosition = new Vector3(thumbnailBarBackgroundLabel.relativePosition.x + 230, thumbnailBarBackgroundLabel.relativePosition.y - 7f); thumbnailBarbackgroundDropdown.eventSelectedIndexChanged += (c, p) => { Settings.thumbnailBarBackgroundOption = thumbnailBarbackgroundDropdown.selectedIndex; XMLUtils.SaveSettings(); YetAnotherToolbar.instance.UpdateThumbnailBarBackground(); }; tsBarBackgroundLabel = AddUIComponent <UILabel>(); tsBarBackgroundLabel.text = Translations.Translate("YAT_QM_TSB"); tsBarBackgroundLabel.textScale = 0.8f; tsBarBackgroundLabel.textColor = new Color32(0, 0, 0, 255); tsBarBackgroundLabel.relativePosition = new Vector3(title.relativePosition.x, thumbnailBarBackgroundLabel.relativePosition.y + thumbnailBarBackgroundLabel.height + 30); tsBarBackgroundDropdown = SamsamTS.UIUtils.CreateDropDown(this); tsBarBackgroundDropdown.normalBgSprite = "TextFieldPanelHovered"; tsBarBackgroundDropdown.size = new Vector2(205, 25); tsBarBackgroundDropdown.listHeight = 270; tsBarBackgroundDropdown.itemHeight = 30; tsBarBackgroundDropdown.AddItem(Translations.Translate("YAT_QM_PB_OR")); tsBarBackgroundDropdown.AddItem(Translations.Translate("YAT_QM_DRK") + " - 75%"); tsBarBackgroundDropdown.AddItem(Translations.Translate("YAT_QM_DRK") + " - 50%"); tsBarBackgroundDropdown.AddItem(Translations.Translate("YAT_QM_DRK") + " - 25%"); tsBarBackgroundDropdown.AddItem(Translations.Translate("YAT_QM_TRS")); tsBarBackgroundDropdown.selectedIndex = Settings.tsBarBackgroundOption; tsBarBackgroundDropdown.relativePosition = new Vector3(tsBarBackgroundLabel.relativePosition.x + 230, tsBarBackgroundLabel.relativePosition.y - 7f); tsBarBackgroundDropdown.eventSelectedIndexChanged += (c, p) => { Settings.tsBarBackgroundOption = tsBarBackgroundDropdown.selectedIndex; XMLUtils.SaveSettings(); YetAnotherToolbar.instance.UpdateTSBarBackground(); }; infoPanelBackgroundLabel = AddUIComponent <UILabel>(); infoPanelBackgroundLabel.text = Translations.Translate("YAT_QM_IPB"); infoPanelBackgroundLabel.textScale = 0.8f; infoPanelBackgroundLabel.textColor = new Color32(0, 0, 0, 255); infoPanelBackgroundLabel.relativePosition = new Vector3(title.relativePosition.x, tsBarBackgroundLabel.relativePosition.y + tsBarBackgroundLabel.height + 30); infoPanelBackgroundDropdown = SamsamTS.UIUtils.CreateDropDown(this); infoPanelBackgroundDropdown.normalBgSprite = "TextFieldPanelHovered"; infoPanelBackgroundDropdown.size = new Vector2(205, 25); infoPanelBackgroundDropdown.listHeight = 270; infoPanelBackgroundDropdown.itemHeight = 30; infoPanelBackgroundDropdown.AddItem(Translations.Translate("YAT_QM_PB_OR")); infoPanelBackgroundDropdown.AddItem(Translations.Translate("YAT_QM_DRK") + " - 75%"); infoPanelBackgroundDropdown.AddItem(Translations.Translate("YAT_QM_DRK") + " - 50%"); infoPanelBackgroundDropdown.AddItem(Translations.Translate("YAT_QM_DRK") + " - 25%"); infoPanelBackgroundDropdown.AddItem(Translations.Translate("YAT_QM_TRS")); infoPanelBackgroundDropdown.selectedIndex = Settings.infoPanelBackgroundOption; infoPanelBackgroundDropdown.relativePosition = new Vector3(infoPanelBackgroundLabel.relativePosition.x + 230, infoPanelBackgroundLabel.relativePosition.y - 7f); infoPanelBackgroundDropdown.eventSelectedIndexChanged += (c, p) => { Settings.infoPanelBackgroundOption = infoPanelBackgroundDropdown.selectedIndex; XMLUtils.SaveSettings(); YetAnotherToolbar.instance.UpdateInfoPanelBackground(); }; AssetEditorModeCheck(); }
public override void Start() { base.Start(); // Zoning zoningToggles = new UICheckBox[10]; zoningToggles[(int)Category.ResidentialLow] = UIUtils.CreateIconToggle(this, "Thumbnails", "ZoningResidentialLow", "ZoningResidentialLowDisabled"); zoningToggles[(int)Category.ResidentialHigh] = UIUtils.CreateIconToggle(this, "Thumbnails", "ZoningResidentialHigh", "ZoningResidentialHighDisabled"); zoningToggles[(int)Category.CommercialLow] = UIUtils.CreateIconToggle(this, "Thumbnails", "ZoningCommercialLow", "ZoningCommercialLowDisabled"); zoningToggles[(int)Category.CommercialHigh] = UIUtils.CreateIconToggle(this, "Thumbnails", "ZoningCommercialHigh", "ZoningCommercialHighDisabled"); zoningToggles[(int)Category.Industrial] = UIUtils.CreateIconToggle(this, "Thumbnails", "ZoningIndustrial", "ZoningIndustrialDisabled"); zoningToggles[(int)Category.Farming] = UIUtils.CreateIconToggle(this, "Ingame", "IconPolicyFarming", "IconPolicyFarmingDisabled"); zoningToggles[(int)Category.Forestry] = UIUtils.CreateIconToggle(this, "Ingame", "IconPolicyForest", "IconPolicyForestDisabled"); zoningToggles[(int)Category.Oil] = UIUtils.CreateIconToggle(this, "Ingame", "IconPolicyOil", "IconPolicyOilDisabled"); zoningToggles[(int)Category.Ore] = UIUtils.CreateIconToggle(this, "Ingame", "IconPolicyOre", "IconPolicyOreDisabled"); zoningToggles[(int)Category.Office] = UIUtils.CreateIconToggle(this, "Thumbnails", "ZoningOffice", "ZoningOfficeDisabled"); for (int i = 0; i < 10; i++) { zoningToggles[i].relativePosition = new Vector3(40 * i, 0); zoningToggles[i].isChecked = true; zoningToggles[i].readOnly = true; zoningToggles[i].checkedBoxObject.isInteractive = false; // Don't eat my double click event please zoningToggles[i].eventClick += (c, p) => { ((UICheckBox)c).isChecked = !((UICheckBox)c).isChecked; eventFilteringChanged(this, 0); }; zoningToggles[i].eventDoubleClick += (c, p) => { for (int j = 0; j < 10; j++) zoningToggles[j].isChecked = false; ((UICheckBox)c).isChecked = true; eventFilteringChanged(this, 0); }; } allZones = UIUtils.CreateButton(this); allZones.width = 55; allZones.text = "All"; allZones.relativePosition = new Vector3(400, 5); allZones.eventClick += (c, p) => { for (int i = 0; i < 10; i++) { zoningToggles[i].isChecked = true; } eventFilteringChanged(this, 0); }; noZones = UIUtils.CreateButton(this); noZones.width = 55; noZones.text = "None"; noZones.relativePosition = new Vector3(460, 5); noZones.eventClick += (c, p) => { for (int i = 0; i < 10; i++) { zoningToggles[i].isChecked = false; } eventFilteringChanged(this, 0); }; // Display UILabel display = AddUIComponent<UILabel>(); display.textScale = 0.8f; display.padding = new RectOffset(0, 0, 8, 0); display.text = "Display: "; display.relativePosition = new Vector3(0, 40); origin = UIUtils.CreateDropDown(this); origin.width = 90; origin.AddItem("All"); origin.AddItem("Default"); origin.AddItem("Custom"); origin.selectedIndex = 0; origin.relativePosition = new Vector3(display.relativePosition.x + display.width + 5, 40); origin.eventSelectedIndexChanged += (c, i) => eventFilteringChanged(this, 1); status = UIUtils.CreateDropDown(this); status.width = 90; status.AddItem("All"); status.AddItem("Included"); status.AddItem("Excluded"); status.selectedIndex = 0; status.relativePosition = new Vector3(origin.relativePosition.x + origin.width + 5, 40); status.eventSelectedIndexChanged += (c, i) => eventFilteringChanged(this, 2); // Level UILabel levelLabel = AddUIComponent<UILabel>(); levelLabel.textScale = 0.8f; levelLabel.padding = new RectOffset(0, 0, 8, 0); levelLabel.text = "Level: "; levelLabel.relativePosition = new Vector3(status.relativePosition.x + status.width + 10, 40); levelFilter = UIUtils.CreateDropDown(this); levelFilter.width = 55; levelFilter.AddItem("All"); levelFilter.AddItem("1"); levelFilter.AddItem("2"); levelFilter.AddItem("3"); levelFilter.AddItem("4"); levelFilter.AddItem("5"); levelFilter.selectedIndex = 0; levelFilter.relativePosition = new Vector3(levelLabel.relativePosition.x + levelLabel.width + 5, 40); levelFilter.eventSelectedIndexChanged += (c, i) => eventFilteringChanged(this, 3); // Size UILabel sizeLabel = AddUIComponent<UILabel>(); sizeLabel.textScale = 0.8f; sizeLabel.padding = new RectOffset(0, 0, 8, 0); sizeLabel.text = "Size: "; sizeLabel.relativePosition = new Vector3(levelFilter.relativePosition.x + levelFilter.width + 10, 40); sizeFilterX = UIUtils.CreateDropDown(this); sizeFilterX.width = 55; sizeFilterX.AddItem("All"); sizeFilterX.AddItem("1"); sizeFilterX.AddItem("2"); sizeFilterX.AddItem("3"); sizeFilterX.AddItem("4"); sizeFilterX.selectedIndex = 0; sizeFilterX.relativePosition = new Vector3(sizeLabel.relativePosition.x + sizeLabel.width + 5, 40); UILabel XLabel = AddUIComponent<UILabel>(); XLabel.textScale = 0.8f; XLabel.padding = new RectOffset(0, 0, 8, 0); XLabel.text = "X"; XLabel.isVisible = false; XLabel.relativePosition = new Vector3(sizeFilterX.relativePosition.x + sizeFilterX.width - 5, 40); sizeFilterY = UIUtils.CreateDropDown(this); sizeFilterY.width = 45; sizeFilterY.AddItem("1"); sizeFilterY.AddItem("2"); sizeFilterY.AddItem("3"); sizeFilterY.AddItem("4"); sizeFilterY.selectedIndex = 0; sizeFilterY.isVisible = false; sizeFilterY.relativePosition = new Vector3(XLabel.relativePosition.x + XLabel.width + 5, 40); sizeFilterX.eventSelectedIndexChanged += (c, i) => { if (i == 0) { sizeFilterX.width = 55; XLabel.isVisible = false; sizeFilterY.isVisible = false; } else { sizeFilterX.width = 45; XLabel.isVisible = true; sizeFilterY.isVisible = true; } eventFilteringChanged(this, 4); }; sizeFilterY.eventSelectedIndexChanged += (c, i) => eventFilteringChanged(this, 4); // Name filter UILabel nameLabel = AddUIComponent<UILabel>(); nameLabel.textScale = 0.8f; nameLabel.padding = new RectOffset(0, 0, 8, 0); nameLabel.relativePosition = new Vector3(width - 250, 0); nameLabel.text = "Name: "; nameFilter = UIUtils.CreateTextField(this); nameFilter.width = 200; nameFilter.height = 30; nameFilter.padding = new RectOffset(6, 6, 6, 6); nameFilter.relativePosition = new Vector3(width - nameFilter.width, 0); nameFilter.eventTextChanged += (c, s) => eventFilteringChanged(this, 5); nameFilter.eventTextSubmitted += (c, s) => eventFilteringChanged(this, 5); }
public override void Start() { base.Start(); // Zoning zoningToggles = new UICheckBox[NumOfCategories]; for (int i = 0; i < NumOfCategories; i++) { zoningToggles[i] = UIUtils.CreateIconToggle(this, CategoryIcons.atlases[i], CategoryIcons.spriteNames[i], CategoryIcons.spriteNames[i] + "Disabled"); zoningToggles[i].tooltip = CategoryIcons.tooltips[i]; zoningToggles[i].relativePosition = new Vector3(40 * i, 0); zoningToggles[i].isChecked = true; zoningToggles[i].readOnly = true; zoningToggles[i].checkedBoxObject.isInteractive = false; // Don't eat my double click event please zoningToggles[i].eventClick += (c, p) => { ((UICheckBox)c).isChecked = !((UICheckBox)c).isChecked; eventFilteringChanged(this, 0); }; zoningToggles[i].eventDoubleClick += (c, p) => { for (int j = 0; j < NumOfCategories; j++) zoningToggles[j].isChecked = false; ((UICheckBox)c).isChecked = true; eventFilteringChanged(this, 0); }; } allZones = UIUtils.CreateButton(this); allZones.width = 55; allZones.text = "All"; allZones.relativePosition = new Vector3(480, 5); allZones.eventClick += (c, p) => { for (int i = 0; i < NumOfCategories; i++) { zoningToggles[i].isChecked = true; } eventFilteringChanged(this, 0); }; noZones = UIUtils.CreateButton(this); noZones.width = 55; noZones.text = "None"; noZones.relativePosition = new Vector3(540, 5); noZones.eventClick += (c, p) => { for (int i = 0; i < NumOfCategories; i++) { zoningToggles[i].isChecked = false; } eventFilteringChanged(this, 0); }; // Display UILabel display = AddUIComponent<UILabel>(); display.textScale = 0.8f; display.padding = new RectOffset(0, 0, 8, 0); display.text = "Display: "; display.relativePosition = new Vector3(0, 40); origin = UIUtils.CreateDropDown(this); origin.width = 90; origin.AddItem("All"); origin.AddItem("Default"); origin.AddItem("Custom"); origin.AddItem("Cloned"); origin.selectedIndex = 0; origin.relativePosition = new Vector3(display.relativePosition.x + display.width + 5, 40); origin.eventSelectedIndexChanged += (c, i) => eventFilteringChanged(this, 1); status = UIUtils.CreateDropDown(this); status.width = 90; status.AddItem("All"); status.AddItem("Included"); status.AddItem("Excluded"); status.selectedIndex = 0; status.relativePosition = new Vector3(origin.relativePosition.x + origin.width + 5, 40); status.eventSelectedIndexChanged += (c, i) => eventFilteringChanged(this, 2); // Level UILabel levelLabel = AddUIComponent<UILabel>(); levelLabel.textScale = 0.8f; levelLabel.padding = new RectOffset(0, 0, 8, 0); levelLabel.text = "Level: "; levelLabel.relativePosition = new Vector3(status.relativePosition.x + status.width + 10, 40); levelFilter = UIUtils.CreateDropDown(this); levelFilter.width = 55; levelFilter.AddItem("All"); levelFilter.AddItem("1"); levelFilter.AddItem("2"); levelFilter.AddItem("3"); levelFilter.AddItem("4"); levelFilter.AddItem("5"); levelFilter.selectedIndex = 0; levelFilter.relativePosition = new Vector3(levelLabel.relativePosition.x + levelLabel.width + 5, 40); levelFilter.eventSelectedIndexChanged += (c, i) => eventFilteringChanged(this, 3); // Size UILabel sizeLabel = AddUIComponent<UILabel>(); sizeLabel.textScale = 0.8f; sizeLabel.padding = new RectOffset(0, 0, 8, 0); sizeLabel.text = "Size: "; sizeLabel.relativePosition = new Vector3(levelFilter.relativePosition.x + levelFilter.width + 10, 40); sizeFilterX = UIUtils.CreateDropDown(this); sizeFilterX.width = 55; sizeFilterX.AddItem("All"); sizeFilterX.AddItem("1"); sizeFilterX.AddItem("2"); sizeFilterX.AddItem("3"); sizeFilterX.AddItem("4"); sizeFilterX.selectedIndex = 0; sizeFilterX.relativePosition = new Vector3(sizeLabel.relativePosition.x + sizeLabel.width + 5, 40); UILabel XLabel = AddUIComponent<UILabel>(); XLabel.textScale = 0.8f; XLabel.padding = new RectOffset(0, 0, 8, 0); XLabel.text = "X"; XLabel.isVisible = false; XLabel.relativePosition = new Vector3(sizeFilterX.relativePosition.x + sizeFilterX.width - 5, 40); sizeFilterY = UIUtils.CreateDropDown(this); sizeFilterY.width = 45; sizeFilterY.AddItem("1"); sizeFilterY.AddItem("2"); sizeFilterY.AddItem("3"); sizeFilterY.AddItem("4"); sizeFilterY.selectedIndex = 0; sizeFilterY.isVisible = false; sizeFilterY.relativePosition = new Vector3(XLabel.relativePosition.x + XLabel.width + 5, 40); sizeFilterX.eventSelectedIndexChanged += (c, i) => { if (i == 0) { sizeFilterX.width = 55; XLabel.isVisible = false; sizeFilterY.isVisible = false; } else { sizeFilterX.width = 45; XLabel.isVisible = true; sizeFilterY.isVisible = true; } eventFilteringChanged(this, 4); }; sizeFilterY.eventSelectedIndexChanged += (c, i) => eventFilteringChanged(this, 4); // Name filter UILabel nameLabel = AddUIComponent<UILabel>(); nameLabel.textScale = 0.8f; nameLabel.padding = new RectOffset(0, 0, 8, 0); nameLabel.relativePosition = new Vector3(width - 250, 0); nameLabel.text = "Name: "; nameFilter = UIUtils.CreateTextField(this); nameFilter.width = 200; nameFilter.height = 30; nameFilter.padding = new RectOffset(6, 6, 6, 6); nameFilter.relativePosition = new Vector3(width - nameFilter.width, 0); nameFilter.eventTextChanged += (c, s) => eventFilteringChanged(this, 5); nameFilter.eventTextSubmitted += (c, s) => eventFilteringChanged(this, 5); }