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);
    }
Exemple #2
0
    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);
    }