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)); }
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)); }
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 ); }