Added Basic Joystick Configuration

This commit is contained in:
John Clemis 2018-06-27 19:05:17 -05:00
parent 50ee597735
commit 56dc5005c4
3 changed files with 47 additions and 13 deletions

View file

@ -35,6 +35,9 @@ namespace Ryujinx
public static string Controls_Left_FakeJoycon_GamePadStick_Button;
public static string Controls_Left_FakeJoycon_GamePadTrigger_ZL;
public static string Controls_Right_FakeJoycon_GamePadJoystick_R;
public static string Controls_Left_FakeJoycon_GamePadJoystick_L;
public static void Read(Logger Log)
{
string IniFolder = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
@ -73,6 +76,9 @@ namespace Ryujinx
Controls_Left_FakeJoycon_GamePadStick_Button = Parser.Value("Controls_Left_FakeJoycon_GamePadStick_Button");
Controls_Left_FakeJoycon_GamePadTrigger_ZL = Parser.Value("Controls_Left_FakeJoycon_GamePadTrigger_ZL");
Controls_Right_FakeJoycon_GamePadJoystick_R = Parser.Value("Controls_Right_FakeJoycon_GamePadJoystick_R");
Controls_Left_FakeJoycon_GamePadJoystick_L = Parser.Value("Controls_Left_FakeJoycon_GamePadJoystick_L");
string[] FilteredLogClasses = Parser.Value("Logging_Filtered_Classes").Split(',', StringSplitOptions.RemoveEmptyEntries);
//When the classes are specified on the list, we only

View file

@ -72,4 +72,7 @@ Controls_Left_FakeJoycon_GamePadDPad_Right = DPadRight
Controls_Left_FakeJoycon_GamePadButton_Minus = Back
Controls_Left_FakeJoycon_GamePadButton_L = LShoulder
Controls_Left_FakeJoycon_GamePadStick_Button = LStick
Controls_Left_FakeJoycon_GamePadTrigger_ZL = LTrigger
Controls_Left_FakeJoycon_GamePadTrigger_ZL = LTrigger
Controls_Right_FakeJoycon_GamePadJoystick_R = RJoystick
Controls_Left_FakeJoycon_GamePadJoystick_L = LJoystick

View file

@ -121,6 +121,26 @@ namespace Ryujinx
return result;
}
private Vector2 getJoystickAxisFromString(GamePadState gamePad, string str)
{
Vector2 result = new Vector2(0, 0);
switch (str)
{
case "LJoystick":
result = gamePad.ThumbSticks.Left;
break;
case "RJoystick":
result = gamePad.ThumbSticks.Right;
break;
default:
Console.Error.WriteLine("Invalid Joystick Axis \"" + str + "\"! Defaulting the Vector2 to 0, 0.");
break;
}
return result;
}
protected override void OnUpdateFrame(FrameEventArgs e)
{
HidControllerButtons CurrentButton = 0;
@ -187,12 +207,13 @@ namespace Ryujinx
== ButtonState.Pressed) CurrentButton |= HidControllerButtons.KEY_X;
if (getGamePadButtonFromString(gamePad, Config.Controls_Right_FakeJoycon_GamePadButton_Y)
== ButtonState.Pressed) CurrentButton |= HidControllerButtons.KEY_Y;
if (getGamePadButtonFromString(gamePad, Config.Controls_Right_FakeJoycon_GamePadStick_Button)
if (getGamePadButtonFromString(gamePad, Config.Controls_Right_FakeJoycon_GamePadStick_Button)
== ButtonState.Pressed) CurrentButton |= HidControllerButtons.KEY_RSTICK;
if (getGamePadButtonFromString(gamePad, Config.Controls_Right_FakeJoycon_GamePadButton_Plus)
if (getGamePadButtonFromString(gamePad, Config.Controls_Right_FakeJoycon_GamePadButton_Plus)
== ButtonState.Pressed) CurrentButton |= HidControllerButtons.KEY_PLUS;
if (gamePad.Buttons.RightShoulder == ButtonState.Pressed) CurrentButton |= HidControllerButtons.KEY_R;
if (getGamePadTriggerFromString(gamePad, Config.Controls_Right_FakeJoycon_GamePadTrigger_ZR)
if (getGamePadButtonFromString(gamePad, Config.Controls_Right_FakeJoycon_GamePadButton_R)
== ButtonState.Pressed) CurrentButton |= HidControllerButtons.KEY_R;
if (getGamePadTriggerFromString(gamePad, Config.Controls_Right_FakeJoycon_GamePadTrigger_ZR)
>= 0.5) CurrentButton |= HidControllerButtons.KEY_ZR;
//LeftButtons
@ -214,18 +235,22 @@ namespace Ryujinx
>= 0.5) CurrentButton |= HidControllerButtons.KEY_ZL;
//RightJoystick
if (gamePad.ThumbSticks.Right.X >= deadzone || gamePad.ThumbSticks.Right.X <= -deadzone)
RightJoystickDY = (int)(-gamePad.ThumbSticks.Right.X * short.MaxValue);
if (getJoystickAxisFromString(gamePad, Config.Controls_Right_FakeJoycon_GamePadJoystick_R).X >= deadzone
|| getJoystickAxisFromString(gamePad, Config.Controls_Right_FakeJoycon_GamePadJoystick_R).X <= -deadzone)
RightJoystickDY = (int)(-getJoystickAxisFromString(gamePad, Config.Controls_Right_FakeJoycon_GamePadJoystick_R).X * short.MaxValue);
if (gamePad.ThumbSticks.Right.Y >= deadzone || gamePad.ThumbSticks.Right.Y <= -deadzone)
RightJoystickDX = (int)(-gamePad.ThumbSticks.Right.Y * short.MaxValue);
if (getJoystickAxisFromString(gamePad, Config.Controls_Right_FakeJoycon_GamePadJoystick_R).Y >= deadzone
|| getJoystickAxisFromString(gamePad, Config.Controls_Right_FakeJoycon_GamePadJoystick_R).Y <= -deadzone)
RightJoystickDX = (int)(-getJoystickAxisFromString(gamePad, Config.Controls_Right_FakeJoycon_GamePadJoystick_R).Y * short.MaxValue);
//LeftJoystick
if (gamePad.ThumbSticks.Left.X >= deadzone || gamePad.ThumbSticks.Left.X <= -deadzone)
LeftJoystickDX = (int)(gamePad.ThumbSticks.Left.X * short.MaxValue);
if (getJoystickAxisFromString(gamePad, Config.Controls_Left_FakeJoycon_GamePadJoystick_L).X >= deadzone
|| getJoystickAxisFromString(gamePad, Config.Controls_Left_FakeJoycon_GamePadJoystick_L).X <= -deadzone)
LeftJoystickDX = (int)(getJoystickAxisFromString(gamePad, Config.Controls_Left_FakeJoycon_GamePadJoystick_L).X * short.MaxValue);
if (gamePad.ThumbSticks.Left.Y >= deadzone || gamePad.ThumbSticks.Left.Y <= -deadzone)
LeftJoystickDY = (int)(gamePad.ThumbSticks.Left.Y * short.MaxValue);
if (getJoystickAxisFromString(gamePad, Config.Controls_Left_FakeJoycon_GamePadJoystick_L).Y >= deadzone
|| getJoystickAxisFromString(gamePad, Config.Controls_Left_FakeJoycon_GamePadJoystick_L).Y <= -deadzone)
LeftJoystickDY = (int)(getJoystickAxisFromString(gamePad, Config.Controls_Left_FakeJoycon_GamePadJoystick_L).Y * short.MaxValue);
}
LeftJoystick = new HidJoystickPosition