/// <summary> /// Adds a textfield with a label to the left. /// </summary> /// <param name="yPos">Relative y-position of textfield</param> /// <param name="key">Translation key for label</param> /// <returns></returns> private UILabelledTextfield AddLabelledTextfield(float yPos, string key) { // Create textfield. UILabelledTextfield newField = new UILabelledTextfield { textField = UIControls.AddTextField(this, MarginPadding + LabelWidth + MarginPadding, yPos, width: this.width - (MarginPadding * 3) - LabelWidth) }; newField.textField.clipChildren = false; // Label. newField.label = newField.textField.AddUIComponent <UILabel>(); newField.label.anchor = UIAnchorStyle.Right | UIAnchorStyle.CenterVertical; newField.label.relativePosition = new Vector2(-MarginPadding * 2f, newField.textField.height / 2); newField.label.textAlignment = UIHorizontalAlignment.Right; newField.label.textScale = 0.7f; newField.label.text = Translations.Translate(key); return(newField); }
/// <summary> /// Create the panel; we no longer use Start() as that's not sufficiently reliable (race conditions), and is no longer needed, with the new create/destroy process. /// </summary> public void Setup() { // Generic setup. isVisible = true; canFocus = true; isInteractive = true; backgroundSprite = "UnlockingPanel"; autoLayout = false; autoLayoutDirection = LayoutDirection.Vertical; autoLayoutPadding.top = 5; autoLayoutPadding.right = 5; builtinKeyNavigation = true; clipChildren = true; // Panel title. UILabel title = this.AddUIComponent <UILabel>(); title.relativePosition = new Vector3(0, TitleY); title.textAlignment = UIHorizontalAlignment.Center; title.text = Translations.Translate("RPR_CUS_TITLE"); title.textScale = 1.2f; title.autoSize = false; title.width = this.width; title.height = 30; // Checkboxes. popCheck = UIControls.LabelledCheckBox(this, 20f, PopCheckY, Translations.Translate("RPR_EDT_POP"), textScale: 1.0f); floorCheck = UIControls.LabelledCheckBox(this, 20f, FloorCheckY, Translations.Translate("RPR_EDT_FLR"), textScale: 1.0f); // Text fields. homeJobsCount = AddLabelledTextfield(HomeJobY, "RPR_LBL_HOM"); firstFloorField = AddLabelledTextfield(FirstFloorY, "RPR_LBL_OFF"); floorHeightField = AddLabelledTextfield(FloorHeightY, "RPR_LBL_OFH"); homeJobLabel = homeJobsCount.label; // Save button. saveButton = UIControls.AddButton(this, MarginPadding, SaveY, Translations.Translate("RPR_CUS_ADD")); saveButton.tooltip = Translations.Translate("RPR_CUS_ADD_TIP"); saveButton.Disable(); // Delete button. deleteButton = UIControls.AddButton(this, MarginPadding, DeleteY, Translations.Translate("RPR_CUS_DEL")); deleteButton.tooltip = Translations.Translate("RPR_CUS_DEL_TIP"); deleteButton.Disable(); // Message label (initially hidden). messageLabel = this.AddUIComponent <UILabel>(); messageLabel.relativePosition = new Vector3(MarginPadding, MessageY); messageLabel.textAlignment = UIHorizontalAlignment.Left; messageLabel.autoSize = false; messageLabel.autoHeight = true; messageLabel.wordWrap = true; messageLabel.width = this.width - (MarginPadding * 2); messageLabel.isVisible = false; messageLabel.text = "No message to display"; // Checkbox event handlers. popCheck.eventCheckChanged += (component, isChecked) => { // If this is now selected and floorCheck is also selected, deselect floorCheck. if (isChecked && floorCheck.isChecked) { floorCheck.isChecked = false; } }; floorCheck.eventCheckChanged += (component, isChecked) => { // If this is now selected and popCheck is also selected, deselect popCheck. if (isChecked && popCheck.isChecked) { popCheck.isChecked = false; } }; // Save button event handler. saveButton.eventClick += (component, clickEvent) => SaveAndApply(); // Delete button event handler. deleteButton.eventClick += (component, clickEvent) => DeleteOverride(); }