private static bool SpecialNavigationSystem( AbstractInputController inputController, float horizontalAxis, float verticalAxis, bool horizontalAxisDown, bool verticalAxisDown, bool confirmButtonDown, bool cancelButtonDown, MoveCursorCallback moveCursorCallback, ActionCallback confirmCallback, ActionCallback cancelCallback ) { if (inputController != null) { if (moveCursorCallback != null && moveCursorCallback.Action != null) { moveCursorCallback.Action( horizontalAxis, verticalAxis, horizontalAxisDown, verticalAxisDown, confirmButtonDown, cancelButtonDown, moveCursorCallback.Sound ); } if (confirmButtonDown) { if (confirmCallback != null && confirmCallback.Action != null) { confirmCallback.Action(confirmCallback.Sound); } return(true); } else if (cancelButtonDown) { if (cancelCallback != null && cancelCallback.Action != null) { cancelCallback.Action(cancelCallback.Sound); } return(true); } } return(false); }
public static bool SpecialNavigationSystem( this UFEScreen screen, IDictionary <InputReferences, InputEvents> previousInputs, IDictionary <InputReferences, InputEvents> currentInputs, MoveCursorCallback moveCursorCallback, ActionCallback confirmCallback, ActionCallback cancelCallback ) { Fix64 currentHorizontalAxis = 0f; Fix64 currentVerticalAxis = 0f; bool currentHorizontalButton = false; bool currentVerticalButton = false; bool currentConfirmButton = false; bool currentCancelButton = false; foreach (KeyValuePair <InputReferences, InputEvents> pair in currentInputs) { if (pair.Key.inputType == InputType.HorizontalAxis) { currentHorizontalAxis = pair.Value.axisRaw; currentHorizontalButton = pair.Value.button; } else if (pair.Key.inputType == InputType.VerticalAxis) { currentVerticalAxis = pair.Value.axisRaw; currentVerticalButton = pair.Value.button; } else { if (pair.Key.engineRelatedButton == UFE.config.inputOptions.confirmButton) { currentConfirmButton = pair.Value.button; } if (pair.Key.engineRelatedButton == UFE.config.inputOptions.cancelButton) { currentCancelButton = pair.Value.button; } } } bool previousHorizontalButton = false; bool previousVerticalButton = false; bool previousConfirmButton = false; bool previousCancelButton = false; foreach (KeyValuePair <InputReferences, InputEvents> pair in previousInputs) { if (pair.Key.inputType == InputType.HorizontalAxis) { previousHorizontalButton = pair.Value.button; } else if (pair.Key.inputType == InputType.VerticalAxis) { previousVerticalButton = pair.Value.button; } else { if (pair.Key.engineRelatedButton == UFE.config.inputOptions.confirmButton) { previousConfirmButton = pair.Value.button; } if (pair.Key.engineRelatedButton == UFE.config.inputOptions.cancelButton) { previousCancelButton = pair.Value.button; } } } bool horizontalAxisDown = currentHorizontalButton && !previousHorizontalButton; bool verticalAxisDown = currentVerticalButton && !previousVerticalButton; bool confirmButtonDown = currentConfirmButton && !previousConfirmButton; bool cancelButtonDown = currentCancelButton && !previousCancelButton; // UnityEngine.Debug.Log( // UFE.currentFrame + " | " + // previousHorizontalButton + " > " + currentHorizontalButton + " | " + // previousVerticalButton + " > " + currentVerticalButton // ); if (moveCursorCallback != null && moveCursorCallback.Action != null) { moveCursorCallback.Action( currentHorizontalAxis, currentVerticalAxis, horizontalAxisDown, verticalAxisDown, confirmButtonDown, cancelButtonDown, moveCursorCallback.Sound ); } if (confirmButtonDown) { if (confirmCallback != null && confirmCallback.Action != null) { confirmCallback.Action(confirmCallback.Sound); } return(true); } else if (cancelButtonDown) { if (cancelCallback != null && cancelCallback.Action != null) { cancelCallback.Action(cancelCallback.Sound); } return(true); } return(false); }