protected void OnCheckChanged(UIComponent component, bool state) { if (!m_initialized || m_options == null) { return; } m_initialized = false; if (component == m_enabled) { if (m_options.isTrailer) { VehicleOptions engine = m_options.engine; if (engine.enabled != state) { engine.enabled = state; VehicleOptions.UpdateTransfertVehicles(); eventEnableCheckChanged(this, state); } } else { if (m_options.enabled != state) { m_options.enabled = state; VehicleOptions.UpdateTransfertVehicles(); eventEnableCheckChanged(this, state); } } if (!state && !AdvancedVehicleOptions.CheckServiceValidity(m_options.category)) { GUI.UIWarningModal.instance.message = UIMainPanel.categoryList[(int)m_options.category + 1] + Translations.Translate("AVO_MOD_OP42"); UIView.PushModal(GUI.UIWarningModal.instance); GUI.UIWarningModal.instance.Show(true); } } else if (component == m_addBackEngine && m_options.addBackEngine != state) { m_options.addBackEngine = state; if (m_options.addBackEngine == state) { VehicleOptions.prefabUpdateEngine = m_options.prefab; SimulationManager.instance.AddAction(VehicleOptions.UpdateBackEngines); } } else if (component == m_useColors && m_options.useColorVariations != state) { m_options.useColorVariations = state; (parent as UIMainPanel).ChangePreviewColor(m_color0.selectedColor); } else if (component == m_isLargeVehicle) { m_options.isLargeVehicle = state; } AdvancedVehicleOptions.ExportVehicleDataConfig(m_initialized); m_initialized = true; }
protected void OnCheckChanged(UIComponent component, bool state) { if (!m_initialized || m_options == null) { return; } m_initialized = false; if (component == m_enabled) { if (m_options.isTrailer) { VehicleOptions engine = m_options.engine; if (engine.enabled != state) { engine.enabled = state; VehicleOptions.UpdateTransfertVehicles(); eventEnableCheckChanged(this, state); } } else { if (m_options.enabled != state) { m_options.enabled = state; VehicleOptions.UpdateTransfertVehicles(); eventEnableCheckChanged(this, state); } } if (!state && !AdvancedVehicleOptions.CheckServiceValidity(m_options.category)) { GUI.UIWarningModal.instance.message = UIMainPanel.categoryList[(int)m_options.category + 1] + " may not work correctly because no vehicles are allowed to spawn."; UIView.PushModal(GUI.UIWarningModal.instance); GUI.UIWarningModal.instance.Show(true); } } else if (component == m_addBackEngine && m_options.addBackEngine != state) { m_options.addBackEngine = state; if (m_options.addBackEngine == state) { VehicleOptions.prefabUpdateEngine = m_options.prefab; new EnumerableActionThread(VehicleOptions.UpdateBackEngines); } } else if (component == m_useColors && m_options.useColorVariations != state) { m_options.useColorVariations = state; (parent as UIMainPanel).ChangePreviewColor(m_color0.selectedColor); } AdvancedVehicleOptions.SaveConfig(); m_initialized = true; }
protected void OnnodMultiplierSubmitted(UIComponent component, string text) { if (!m_initialized || m_options == null) { return; } m_initialized = false; m_options.nodMultiplier = float.Parse(text); AdvancedVehicleOptions.ExportVehicleDataConfig(m_initialized); m_initialized = true; }
protected void OnBrakingSubmitted(UIComponent component, string text) { if (!m_initialized || m_options == null) { return; } m_initialized = false; m_options.braking = float.Parse(text); AdvancedVehicleOptions.SaveConfig(); m_initialized = true; }
protected void OnSpecialCapacitySubmitted(UIComponent component, string text) { if (!m_initialized || m_options == null) { return; } m_initialized = false; m_options.specialcapacity = int.Parse(text); VehicleOptions.prefabUpdateUnits = m_options.prefab; SimulationManager.instance.AddAction(VehicleOptions.UpdateCapacityUnits); AdvancedVehicleOptions.ExportVehicleDataConfig(m_initialized); m_initialized = true; }
protected void OnCapacitySubmitted(UIComponent component, string text) { if (!m_initialized || m_options == null) { return; } m_initialized = false; m_options.capacity = int.Parse(text); VehicleOptions.prefabUpdateUnits = m_options.prefab; new EnumerableActionThread(VehicleOptions.UpdateCapacityUnits); AdvancedVehicleOptions.SaveConfig(); m_initialized = true; }
protected void OnClearVehicleClicked(UIComponent component, UIMouseEventParameter p) { if (m_options == null) { return; } if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)) { AdvancedVehicleOptions.ClearVehicles(null, component == m_clearParked); } else { AdvancedVehicleOptions.ClearVehicles(m_options, component == m_clearParked); } }
protected void OnMaxSpeedSubmitted(UIComponent component, string text) { if (!m_initialized || m_options == null) { return; } m_initialized = false; if (!AdvancedVehicleOptions.SpeedUnitOption) { m_options.maxSpeed = float.Parse(text) / maxSpeedToKmhConversionFactor; } else { m_options.maxSpeed = (float.Parse(text) * mphFactor) / maxSpeedToKmhConversionFactor; } AdvancedVehicleOptions.ExportVehicleDataConfig(m_initialized); m_initialized = true; }
protected void OnColorHexSubmitted(UIComponent component, string text) { if (!m_initialized || m_options == null) { return; } m_initialized = false; // Is text a valid color? if (text != "000000" && new HexaColor(text).ToString() == "000000") { m_color0_hex.text = m_options.color0.ToString(); m_color1_hex.text = m_options.color1.ToString(); m_color2_hex.text = m_options.color2.ToString(); m_color3_hex.text = m_options.color3.ToString(); m_initialized = true; return; } m_options.color0 = new HexaColor(m_color0_hex.text); m_options.color1 = new HexaColor(m_color1_hex.text); m_options.color2 = new HexaColor(m_color2_hex.text); m_options.color3 = new HexaColor(m_color3_hex.text); m_color0_hex.text = m_options.color0.ToString(); m_color1_hex.text = m_options.color1.ToString(); m_color2_hex.text = m_options.color2.ToString(); m_color3_hex.text = m_options.color3.ToString(); m_color0.selectedColor = m_options.color0; m_color1.selectedColor = m_options.color1; m_color2.selectedColor = m_options.color2; m_color3.selectedColor = m_options.color3; (parent as UIMainPanel).ChangePreviewColor(color); AdvancedVehicleOptions.ExportVehicleDataConfig(m_initialized); m_initialized = true; }
protected void OnColorChanged(UIComponent component, Color color) { if (!m_initialized || m_options == null) { return; } m_initialized = false; (parent as UIMainPanel).ChangePreviewColor(color); m_options.color0 = m_color0.selectedColor; m_options.color1 = m_color1.selectedColor; m_options.color2 = m_color2.selectedColor; m_options.color3 = m_color3.selectedColor; m_color0_hex.text = m_options.color0.ToString(); m_color1_hex.text = m_options.color1.ToString(); m_color2_hex.text = m_options.color2.ToString(); m_color3_hex.text = m_options.color3.ToString(); AdvancedVehicleOptions.ExportVehicleDataConfig(m_initialized); m_initialized = true; }
public override void Start() { try { UIView view = GetUIView(); name = "AdvancedVehicleOptions"; backgroundSprite = "UnlockingPanel2"; isVisible = false; canFocus = true; isInteractive = true; width = WIDTHLEFT + WIDTHRIGHT; height = HEIGHT; relativePosition = new Vector3(Mathf.Floor((view.fixedWidth - width) / 2), Mathf.Floor((view.fixedHeight - height) / 2)); // Get camera controller GameObject go = GameObject.FindGameObjectWithTag("MainCamera"); if (go != null) { m_cameraController = go.GetComponent <CameraController>(); } // Setting up UI SetupControls(); // Adding main button UITabstrip toolStrip = view.FindUIComponent <UITabstrip>("MainToolstrip"); m_button = AddUIComponent <UIButton>(); m_button.normalBgSprite = "InfoIconTrafficCongestion"; m_button.focusedFgSprite = "ToolbarIconGroup6Focused"; m_button.hoveredFgSprite = "ToolbarIconGroup6Hovered"; m_button.size = new Vector2(43f, 47f); m_button.name = AVOMod.ModName; m_button.tooltip = "Modify various Vehicle properties"; m_button.relativePosition = new Vector3(0, 5); // GUI Button is pressed in game m_button.eventButtonStateChanged += (c, s) => { if (s == UIButton.ButtonState.Focused) { if (!isVisible) { isVisible = true; m_fastList.DisplayAt(m_fastList.listPosition); m_optionPanel.Show(m_fastList.rowsData[m_fastList.selectedIndex] as VehicleOptions); m_followVehicle.isVisible = m_preview.parent.isVisible = true; AdvancedVehicleOptions.UpdateOptionPanelInfo(); } } else { isVisible = false; m_button.Unfocus(); } }; toolStrip.AddTab("Advanced Vehicle Options", m_button.gameObject, null, null); FieldInfo m_ObjectIndex = typeof(MainToolbar).GetField("m_ObjectIndex", BindingFlags.Instance | BindingFlags.NonPublic); m_ObjectIndex.SetValue(ToolsModifierControl.mainToolbar, (int)m_ObjectIndex.GetValue(ToolsModifierControl.mainToolbar) + 1); m_title.closeButton.eventClick += (component, param) => { toolStrip.closeButton.SimulateClick(); }; Locale locale = (Locale)typeof(LocaleManager).GetField("m_Locale", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(LocaleManager.instance); Locale.Key key = new Locale.Key { m_Identifier = "TUTORIAL_ADVISER_TITLE", m_Key = m_button.name }; if (!locale.Exists(key)) { locale.AddLocalizedString(key, m_button.name); } key = new Locale.Key { m_Identifier = "TUTORIAL_ADVISER", m_Key = m_button.name }; if (!locale.Exists(key)) { locale.AddLocalizedString(key, ""); } view.FindUIComponent <UITabContainer>("TSContainer").AddUIComponent <UIPanel>().color = new Color32(0, 0, 0, 0); optionList = AdvancedVehicleOptions.config.options; Logging.Message("UI initialized."); } catch (Exception e) { Logging.Error("UI initialization failed."); Logging.LogException(e); if (m_button != null) { Destroy(m_button.gameObject); } Destroy(gameObject); } }
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 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 SetupControls() { UIPanel panel = AddUIComponent <UIPanel>(); panel.gameObject.AddComponent <UICustomControl>(); panel.backgroundSprite = "UnlockingPanel"; panel.width = width - 10; panel.height = height - 75; panel.relativePosition = new Vector3(5, 0); // Max Speed UILabel maxSpeedLabel = panel.AddUIComponent <UILabel>(); maxSpeedLabel.text = "Maximum speed:"; maxSpeedLabel.textScale = 0.8f; maxSpeedLabel.relativePosition = new Vector3(15, 15); m_maxSpeed = UIUtils.CreateTextField(panel); m_maxSpeed.numericalOnly = true; m_maxSpeed.width = 75; m_maxSpeed.tooltip = "Change the maximum speed of the vehicle\nPlease note that vehicles do not go beyond speed limits"; m_maxSpeed.relativePosition = new Vector3(15, 35); UILabel kmh = panel.AddUIComponent <UILabel>(); kmh.text = "km/h"; kmh.textScale = 0.8f; kmh.relativePosition = new Vector3(95, 40); // Acceleration UILabel accelerationLabel = panel.AddUIComponent <UILabel>(); accelerationLabel.text = "Acceleration/Brake:"; accelerationLabel.textScale = 0.8f; accelerationLabel.relativePosition = new Vector3(160, 15); m_acceleration = UIUtils.CreateTextField(panel); m_acceleration.numericalOnly = true; m_acceleration.allowFloats = true; m_acceleration.width = 60; m_acceleration.tooltip = "Change the vehicle acceleration factor"; m_acceleration.relativePosition = new Vector3(160, 35); // Braking m_braking = UIUtils.CreateTextField(panel); m_braking.numericalOnly = true; m_braking.allowFloats = true; m_braking.width = 60; m_braking.tooltip = "Change the vehicle braking factor"; m_braking.relativePosition = new Vector3(230, 35); // Colors m_useColors = UIUtils.CreateCheckBox(panel); m_useColors.text = "Color variations:"; m_useColors.isChecked = true; m_useColors.width = width - 40; m_useColors.tooltip = "Enable color variations\nA random color is chosen between the four following colors"; m_useColors.relativePosition = new Vector3(15, 70); m_color0 = UIUtils.CreateColorField(panel); m_color0.name = "AVO-color0"; m_color0.popupTopmostRoot = false; m_color0.relativePosition = new Vector3(13, 95 - 2); m_color0_hex = UIUtils.CreateTextField(panel); m_color0_hex.maxLength = 6; m_color0_hex.relativePosition = new Vector3(55, 95); m_color1 = UIUtils.CreateColorField(panel); m_color1.name = "AVO-color1"; m_color1.popupTopmostRoot = false; m_color1.relativePosition = new Vector3(13, 120 - 2); m_color1_hex = UIUtils.CreateTextField(panel); m_color1_hex.maxLength = 6; m_color1_hex.relativePosition = new Vector3(55, 120); m_color2 = UIUtils.CreateColorField(panel); m_color2.name = "AVO-color2"; m_color2.popupTopmostRoot = false; m_color2.relativePosition = new Vector3(158, 95 - 2); m_color2_hex = UIUtils.CreateTextField(panel); m_color2_hex.maxLength = 6; m_color2_hex.relativePosition = new Vector3(200, 95); m_color3 = UIUtils.CreateColorField(panel); m_color3.name = "AVO-color3"; m_color3.popupTopmostRoot = false; m_color3.relativePosition = new Vector3(158, 120 - 2); m_color3_hex = UIUtils.CreateTextField(panel); m_color3_hex.maxLength = 6; m_color3_hex.relativePosition = new Vector3(200, 120); // Enable & BackEngine m_enabled = UIUtils.CreateCheckBox(panel); m_enabled.text = "Allow this vehicle to spawn"; m_enabled.isChecked = true; m_enabled.width = width - 40; m_enabled.tooltip = "Make sure you have at least one vehicle allowed to spawn for that category"; m_enabled.relativePosition = new Vector3(15, 155);; m_addBackEngine = UIUtils.CreateCheckBox(panel); m_addBackEngine.text = "Replace last car with engine"; m_addBackEngine.isChecked = false; m_addBackEngine.width = width - 40; m_addBackEngine.tooltip = "Make the last car of this train be an engine"; m_addBackEngine.relativePosition = new Vector3(15, 175); // Capacity UIPanel capacityPanel = panel.AddUIComponent <UIPanel>(); capacityPanel.size = Vector2.zero; capacityPanel.relativePosition = new Vector3(15, 200); UILabel capacityLabel = capacityPanel.AddUIComponent <UILabel>(); capacityLabel.text = "Capacity:"; capacityLabel.textScale = 0.8f; capacityLabel.relativePosition = Vector3.zero; m_capacity = UIUtils.CreateTextField(capacityPanel); m_capacity.numericalOnly = true; m_capacity.width = 110; m_capacity.tooltip = "Change the capacity of the vehicle"; m_capacity.relativePosition = new Vector3(0, 20); // Restore default m_restore = UIUtils.CreateButton(panel); m_restore.text = "Restore default"; m_restore.width = 130; m_restore.tooltip = "Restore all values to default"; m_restore.relativePosition = new Vector3(160, 215); // Remove Vehicles m_removeLabel = this.AddUIComponent <UILabel>(); m_removeLabel.text = "Remove vehicles:"; m_removeLabel.textScale = 0.8f; m_removeLabel.relativePosition = new Vector3(10, height - 60); m_clearVehicles = UIUtils.CreateButton(this); m_clearVehicles.text = "Driving"; m_clearVehicles.width = 90f; m_clearVehicles.tooltip = "Remove all driving vehicles of that type\nHold the SHIFT key to remove all types"; m_clearVehicles.relativePosition = new Vector3(10, height - 40); m_clearParked = UIUtils.CreateButton(this); m_clearParked.text = "Parked"; m_clearParked.width = 90f; m_clearParked.tooltip = "Remove all parked vehicles of that type\nHold the SHIFT key to remove all types"; m_clearParked.relativePosition = new Vector3(105, height - 40); panel.BringToFront(); // Event handlers m_maxSpeed.eventTextSubmitted += OnMaxSpeedSubmitted; m_acceleration.eventTextSubmitted += OnAccelerationSubmitted; m_braking.eventTextSubmitted += OnBrakingSubmitted; m_useColors.eventCheckChanged += OnCheckChanged; MouseEventHandler mousehandler = (c, p) => { if (m_initialized) { (parent as UIMainPanel).ChangePreviewColor((c as UIColorField).selectedColor); } }; m_color0.eventMouseEnter += mousehandler; m_color1.eventMouseEnter += mousehandler; m_color2.eventMouseEnter += mousehandler; m_color3.eventMouseEnter += mousehandler; m_color0_hex.eventMouseEnter += (c, p) => { if (m_initialized) { (parent as UIMainPanel).ChangePreviewColor(m_color0.selectedColor); } }; m_color1_hex.eventMouseEnter += (c, p) => { if (m_initialized) { (parent as UIMainPanel).ChangePreviewColor(m_color1.selectedColor); } }; m_color2_hex.eventMouseEnter += (c, p) => { if (m_initialized) { (parent as UIMainPanel).ChangePreviewColor(m_color2.selectedColor); } }; m_color3_hex.eventMouseEnter += (c, p) => { if (m_initialized) { (parent as UIMainPanel).ChangePreviewColor(m_color3.selectedColor); } }; m_color0.eventSelectedColorChanged += OnColorChanged; m_color1.eventSelectedColorChanged += OnColorChanged; m_color2.eventSelectedColorChanged += OnColorChanged; m_color3.eventSelectedColorChanged += OnColorChanged; m_color0_hex.eventTextSubmitted += OnColorHexSubmitted; m_color1_hex.eventTextSubmitted += OnColorHexSubmitted; m_color2_hex.eventTextSubmitted += OnColorHexSubmitted; m_color3_hex.eventTextSubmitted += OnColorHexSubmitted; m_enabled.eventCheckChanged += OnCheckChanged; m_addBackEngine.eventCheckChanged += OnCheckChanged; m_capacity.eventTextSubmitted += OnCapacitySubmitted; m_restore.eventClick += (c, p) => { m_initialized = false; bool isEnabled = m_options.enabled; DefaultOptions.Restore(m_options.prefab); AdvancedVehicleOptions.SaveConfig(); VehicleOptions.UpdateTransfertVehicles(); VehicleOptions.prefabUpdateEngine = m_options.prefab; VehicleOptions.prefabUpdateUnits = m_options.prefab; new EnumerableActionThread(VehicleOptions.UpdateBackEngines); new EnumerableActionThread(VehicleOptions.UpdateCapacityUnits); Show(m_options); if (m_options.enabled != isEnabled) { eventEnableCheckChanged(this, m_options.enabled); } }; m_clearVehicles.eventClick += OnClearVehicleClicked; m_clearParked.eventClick += OnClearVehicleClicked; }