Ejemplo n.º 1
0
 private static void SetDPad(InputFrame input, ref GamePadDPad pad, ref GamePadThumbSticks sticks)
 {
     pad = new GamePadDPad(
         input.HasActions(Actions.Up) ? ButtonState.Pressed : ButtonState.Released,
         input.HasActions(Actions.Down) ? ButtonState.Pressed : ButtonState.Released,
         input.HasActions(Actions.Left) ? ButtonState.Pressed : ButtonState.Released,
         input.HasActions(Actions.Right) ? ButtonState.Pressed : ButtonState.Released
         );
     sticks = new GamePadThumbSticks(new Vector2(0, 0), new Vector2(0, 0));
 }
Ejemplo n.º 2
0
        public static void SetInputs(InputFrame input)
        {
            GamePadDPad        pad    = default;
            GamePadThumbSticks sticks = default;
            GamePadState       state  = default;

            if (input.HasActions(Actions.Feather))
            {
                SetFeather(input, ref pad, ref sticks);
            }
            else
            {
                SetDPad(input, ref pad, ref sticks);
            }

            SetState(input, ref state, ref pad, ref sticks);

            bool found = false;

            for (int i = 0; i < 4; i++)
            {
                MInput.GamePads[i].Update();
                if (MInput.GamePads[i].Attached)
                {
                    found = true;
                    MInput.GamePads[i].CurrentState = state;
                }
            }

            if (!found)
            {
                MInput.GamePads[0].CurrentState = state;
                MInput.GamePads[0].Attached     = true;
            }

            if (input.HasActions(Actions.Confirm))
            {
                MInput.Keyboard.CurrentState = new KeyboardState(Keys.Enter);
            }
            else
            {
                MInput.Keyboard.CurrentState = new KeyboardState();
            }

            UpdateVirtualInputs();
        }
        private static string LibTasKeys(InputFrame inputFrame)
        {
            if (inputFrame.HasActions(Actions.Confirm))
            {
                return("ff0d");
            }

            if (inputFrame.HasActions(Actions.Restart))
            {
                return("72");
            }

            if (inputFrame.HasActions(Actions.Journal))
            {
                return("ff09");
            }

            return("");
        }
        public static void WriteLibTasFrame(InputFrame inputFrame)
        {
            if (inputFrame == skipInputFrame)
            {
                return;
            }

            WriteLibTasFrame(LibTasKeys(inputFrame),
                             inputFrame.HasActions(Actions.Feather) ? ($"{AnalogHelper.LastDirectionShort.X}:{-AnalogHelper.LastDirectionShort.Y}") : "0:0",
                             LibTasButtons(inputFrame));
        }
        public static void WriteLibTasFrame(InputFrame inputFrame)
        {
            if (!exporting || inputFrame == skipInputFrame)
            {
                return;
            }

            for (int i = 0; i < inputFrame.Frames; ++i)
            {
                WriteLibTasFrame(LibTasKeys(inputFrame),
                                 inputFrame.HasActions(Actions.Feather) ? ($"{inputFrame.AngleVector2Short.X}:{-inputFrame.AngleVector2Short.Y}") : "0:0",
                                 LibTasButtons(inputFrame));
            }
        }
        private static string LibTasButtons(InputFrame inputFrame)
        {
            // 0 BUTTON_A = A
            // 1 BUTTON_B = B
            // 2 BUTTON_X = X
            // 3 BUTTON_Y = Y
            // 4 BUTTON_BACK = b
            // 5 BUTTON_GUIDE = g
            // 6 BUTTON_START = s
            // 7 BUTTON_LEFTSTICK = (
            // 8 BUTTON_RIGHTSTICK = )
            // 9 BUTTON_LEFTSHOULDER = [
            // 10 BUTTON_RIGHTSHOULDER = ]
            // 11 BUTTON_DPAD_UP = u
            // 12 BUTTON_DPAD_DOWN = d
            // 13 BUTTON_DPAD_LEFT = l
            // 14 BUTTON_DPAD_RIGHT = r

            char[] buttons = new char[15];
            for (int i = 0; i < 15; ++i)
            {
                buttons[i] = '.';
            }

            if (inputFrame.HasActions(Actions.Left))
            {
                buttons[13] = 'l';
            }

            if (inputFrame.HasActions(Actions.Right))
            {
                buttons[14] = 'r';
            }

            if (inputFrame.HasActions(Actions.Up))
            {
                buttons[11] = 'u';
            }

            if (inputFrame.HasActions(Actions.Down))
            {
                buttons[12] = 'd';
            }

            if (inputFrame.HasActions(Actions.Jump))
            {
                buttons[0] = 'A';
            }

            if (inputFrame.HasActions(Actions.Jump2))
            {
                buttons[3] = 'Y';
            }

            if (inputFrame.HasActions(Actions.DemoDash))
            {
                // Playback via libtas requires the right shoulder to be set to demodash in game settings
                buttons[10] = ']';
            }

            if (inputFrame.HasActions(Actions.DemoDash2))
            {
                // Playback via libtas requires the right stick to be set to demodash in game settings
                buttons[8] = ')';
            }

            if (inputFrame.HasActions(Actions.Dash))
            {
                buttons[1] = 'B';
            }

            if (inputFrame.HasActions(Actions.Dash2))
            {
                buttons[2] = 'X';
            }

            if (inputFrame.HasActions(Actions.Start))
            {
                buttons[6] = 's';
            }

            if (inputFrame.HasActions(Actions.Grab))
            {
                buttons[9] = '[';
            }

            return(string.Join("", buttons));
        }
Ejemplo n.º 7
0
 private static void SetState(InputFrame input, ref GamePadState state, ref GamePadDPad pad, ref GamePadThumbSticks sticks)
 {
     state = new GamePadState(
         sticks,
         new GamePadTriggers(input.HasActions(Actions.Journal) ? 1f : 0f, 0),
         new GamePadButtons(
             (input.HasActions(Actions.Jump) ? BindingHelper.JumpAndConfirm : 0)
             | (input.HasActions(Actions.Jump2) ? BindingHelper.Jump2 : 0)
             | (input.HasActions(Actions.DemoDash) ? BindingHelper.DemoDash : 0)
             | (input.HasActions(Actions.Dash) ? BindingHelper.DashAndTalkAndCancel : 0)
             | (input.HasActions(Actions.Dash2) ? BindingHelper.Dash2AndCancel : 0)
             | (input.HasActions(Actions.Grab) ? BindingHelper.Grab : 0)
             | (input.HasActions(Actions.Start) ? BindingHelper.Pause : 0)
             | (input.HasActions(Actions.Restart) ? BindingHelper.QuickRestart : 0)
             | (input.HasActions(Actions.Up) ? BindingHelper.Up : 0)
             | (input.HasActions(Actions.Down) ? BindingHelper.Down : 0)
             | (input.HasActions(Actions.Left) ? BindingHelper.Left : 0)
             | (input.HasActions(Actions.Right) ? BindingHelper.Right : 0)
             | (input.HasActions(Actions.Journal) ? BindingHelper.Journal : 0)
             ),
         pad
         );
 }