private void ControllerOnMoveToElement(UiElement uiElement) { if (CurrentElement != uiElement) { CurrentElement?.Unfocus(); CurrentElement = uiElement; CurrentElement.Focus(); } }
private void ControllerOnMoveToPreviousElement() { var lastElement = CurrentElement; if (CurrentElement == null) { CurrentElement = _interactableElements.FirstOrDefault(); } else { var index = _interactableElements.IndexOf(CurrentElement); CurrentElement = index == 0 ? _interactableElements[_interactableElements.Count - 1] : _interactableElements[index - 1]; } if (lastElement != CurrentElement) { lastElement?.Unfocus(); CurrentElement?.Focus(); } }
public virtual void Update(GameTime gameTime) { if (_rearrangeList) { _interactableElements.RemoveAll(e => !e.IsInteractable); _interactableElements.Sort((e1, e2) => e1.TabIndex.CompareTo(e2.TabIndex)); } foreach (var inputController in InputControllers) { inputController.Update(this); } if (_elementToGetFocus != null && _elementToGetFocus.State == UiState.Active) { _elementToGetFocus.Focus(); CurrentElement = _elementToGetFocus; _elementToGetFocus = null; } }