mirror of
https://github.com/Ellpeck/MLEM.git
synced 2024-11-26 06:28:35 +01:00
Added UiControls.AutoNavModeChanged event
This commit is contained in:
parent
8fa94f1186
commit
fa34258bbe
2 changed files with 48 additions and 32 deletions
|
@ -36,6 +36,7 @@ Removals
|
||||||
### MLEM.Ui
|
### MLEM.Ui
|
||||||
Additions
|
Additions
|
||||||
- Added Element.OnStyleInit event
|
- Added Element.OnStyleInit event
|
||||||
|
- Added UiControls.AutoNavModeChanged event
|
||||||
|
|
||||||
Improvements
|
Improvements
|
||||||
- Allow for checkboxes and radio buttons to be disabled
|
- Allow for checkboxes and radio buttons to be disabled
|
||||||
|
|
|
@ -21,36 +21,6 @@ namespace MLEM.Ui {
|
||||||
/// The input handler that is used for querying input
|
/// The input handler that is used for querying input
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public readonly InputHandler Input;
|
public readonly InputHandler Input;
|
||||||
/// <summary>
|
|
||||||
/// This value ist true if the <see cref="InputHandler"/> was created by this ui controls instance, or if it was passed in.
|
|
||||||
/// If the input handler was created by this instance, its <see cref="InputHandler.Update()"/> method should be called by us.
|
|
||||||
/// </summary>
|
|
||||||
protected readonly bool IsInputOurs;
|
|
||||||
/// <summary>
|
|
||||||
/// The <see cref="UiSystem"/> that this ui controls instance is controlling
|
|
||||||
/// </summary>
|
|
||||||
protected readonly UiSystem System;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The <see cref="RootElement"/> that is currently active.
|
|
||||||
/// The active root element is the one with the highest <see cref="RootElement.Priority"/> that whose <see cref="RootElement.CanSelectContent"/> property is true.
|
|
||||||
/// </summary>
|
|
||||||
public RootElement ActiveRoot { get; protected set; }
|
|
||||||
/// <summary>
|
|
||||||
/// The <see cref="Element"/> that the mouse is currently over.
|
|
||||||
/// </summary>
|
|
||||||
public Element MousedElement { get; protected set; }
|
|
||||||
/// <summary>
|
|
||||||
/// The <see cref="Element"/> that is currently touched.
|
|
||||||
/// </summary>
|
|
||||||
public Element TouchedElement { get; protected set; }
|
|
||||||
private readonly Dictionary<string, Element> selectedElements = new Dictionary<string, Element>();
|
|
||||||
/// <summary>
|
|
||||||
/// The element that is currently selected.
|
|
||||||
/// This is the <see cref="RootElement.SelectedElement"/> of the <see cref="ActiveRoot"/>.
|
|
||||||
/// </summary>
|
|
||||||
public Element SelectedElement => this.GetSelectedElement(this.ActiveRoot);
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A list of <see cref="Keys"/>, <see cref="Buttons"/> and/or <see cref="MouseButton"/> that act as the buttons on the keyboard which perform the <see cref="Element.OnPressed"/> action.
|
/// A list of <see cref="Keys"/>, <see cref="Buttons"/> and/or <see cref="MouseButton"/> that act as the buttons on the keyboard which perform the <see cref="Element.OnPressed"/> action.
|
||||||
/// If the <see cref="ModifierKey.Shift"/> is held, these buttons perform <see cref="Element.OnSecondaryPressed"/>.
|
/// If the <see cref="ModifierKey.Shift"/> is held, these buttons perform <see cref="Element.OnSecondaryPressed"/>.
|
||||||
|
@ -85,6 +55,25 @@ namespace MLEM.Ui {
|
||||||
/// This can be used to easily serialize and deserialize all ui keybinds.
|
/// This can be used to easily serialize and deserialize all ui keybinds.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public readonly Keybind[] Keybinds;
|
public readonly Keybind[] Keybinds;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The <see cref="RootElement"/> that is currently active.
|
||||||
|
/// The active root element is the one with the highest <see cref="RootElement.Priority"/> that whose <see cref="RootElement.CanSelectContent"/> property is true.
|
||||||
|
/// </summary>
|
||||||
|
public RootElement ActiveRoot { get; protected set; }
|
||||||
|
/// <summary>
|
||||||
|
/// The <see cref="Element"/> that the mouse is currently over.
|
||||||
|
/// </summary>
|
||||||
|
public Element MousedElement { get; protected set; }
|
||||||
|
/// <summary>
|
||||||
|
/// The <see cref="Element"/> that is currently touched.
|
||||||
|
/// </summary>
|
||||||
|
public Element TouchedElement { get; protected set; }
|
||||||
|
/// <summary>
|
||||||
|
/// The element that is currently selected.
|
||||||
|
/// This is the <see cref="RootElement.SelectedElement"/> of the <see cref="ActiveRoot"/>.
|
||||||
|
/// </summary>
|
||||||
|
public Element SelectedElement => this.GetSelectedElement(this.ActiveRoot);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The zero-based index of the <see cref="GamePad"/> used for gamepad input.
|
/// The zero-based index of the <see cref="GamePad"/> used for gamepad input.
|
||||||
/// If this index is lower than 0, every connected gamepad will trigger input.
|
/// If this index is lower than 0, every connected gamepad will trigger input.
|
||||||
|
@ -113,9 +102,35 @@ namespace MLEM.Ui {
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// If this value is true, the ui controls are in automatic navigation mode.
|
/// If this value is true, the ui controls are in automatic navigation mode.
|
||||||
/// This means that the <see cref="UiStyle.SelectionIndicator"/> will be drawn around the <see cref="SelectedElement"/>.
|
/// This means that the <see cref="UiStyle.SelectionIndicator"/> will be drawn around the <see cref="SelectedElement"/>.
|
||||||
/// To set this value, use <see cref="SelectElement"/> or <see cref="RootElement.SelectElement"/>
|
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsAutoNavMode { get; internal set; }
|
public bool IsAutoNavMode {
|
||||||
|
get => this.isAutoNavMode;
|
||||||
|
set {
|
||||||
|
if (this.isAutoNavMode != value) {
|
||||||
|
this.isAutoNavMode = value;
|
||||||
|
this.AutoNavModeChanged?.Invoke(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// An event that is raised when <see cref="IsAutoNavMode"/> is changed.
|
||||||
|
/// This can be used for custom actions like hiding the mouse cursor when automatic navigation is enabled.
|
||||||
|
/// </summary>
|
||||||
|
public event Action<bool> AutoNavModeChanged;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This value ist true if the <see cref="InputHandler"/> was created by this ui controls instance, or if it was passed in.
|
||||||
|
/// If the input handler was created by this instance, its <see cref="InputHandler.Update()"/> method should be called by us.
|
||||||
|
/// </summary>
|
||||||
|
protected readonly bool IsInputOurs;
|
||||||
|
/// <summary>
|
||||||
|
/// The <see cref="UiSystem"/> that this ui controls instance is controlling
|
||||||
|
/// </summary>
|
||||||
|
protected readonly UiSystem System;
|
||||||
|
|
||||||
|
private readonly Dictionary<string, Element> selectedElements = new Dictionary<string, Element>();
|
||||||
|
private bool isAutoNavMode;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates a new instance of the ui controls.
|
/// Creates a new instance of the ui controls.
|
||||||
|
|
Loading…
Reference in a new issue