//============================================================================= // KFGamepadLayoutManager //============================================================================= // This class is responsible for setting up the key binding/input system given // a requested layout scheme for a gamepad layout (Default, South Paw, etc). // A user interfaces with this class via GetGamepadLayout() to receive // an GamepadLayout struct containing button mappings. //============================================================================= // Killing Floor 2 // Created by Adam Pawlowski 2/25/16 // Copyright (C) 2016 Tripwire Interactive LLC //============================================================================= class KFGamepadLayoutManager extends Object abstract native; const NUM_OVERRIDDEN_BUTTONS = 12; // The layouts don't change all of the default controller buttons. No need to store unchanged buttons. const NUM_LAYOUTS = 4; const NUM_CONTROLLER_BINDINGS = 20; enum EGamepadLayoutType { LAYOUT_Default, LAYOUT_JUMPER, LAYOUT_QUICKDRAW, LAYOUT_SOUTHPAW}; struct native GamepadButtonCommand { var name Name; // The button name. var string Command; // The command string. }; struct native GamepadLayout { var string DisplayName; // The name that the player sees. var GamepadButtonCommand ButtonCommands[NUM_OVERRIDDEN_BUTTONS]; }; var private GamepadLayout GamepadLayouts[NUM_LAYOUTS]; var private name GamepadButtonNames[NUM_CONTROLLER_BINDINGS]; // The bind names of all the controller bindings. static native function GetGamepadLayout(EGamepadLayoutType GamepadLayoutType, out GamepadLayout Layout); static native function GetGamepadButtonNames(out name Names[NUM_CONTROLLER_BINDINGS]); static native function string GetLayoutName(int index); static native function int GetNumLayouts(); defaultproperties { GamepadButtonNames(0)="XboxTypeS_A" GamepadButtonNames(1)="XboxTypeS_B" GamepadButtonNames(2)="XboxTypeS_Y" GamepadButtonNames(3)="XboxTypeS_X" GamepadButtonNames(4)="XboxTypeS_LeftX" GamepadButtonNames(5)="XboxTypeS_LeftY" GamepadButtonNames(6)="XboxTypeS_LeftThumbStick" GamepadButtonNames(7)="XboxTypeS_RightX" GamepadButtonNames(8)="XboxTypeS_RightY" GamepadButtonNames(9)="XboxTypeS_RightThumbStick" GamepadButtonNames(10)="XboxTypeS_LeftShoulder" GamepadButtonNames(11)="XboxTypeS_RightShoulder" GamepadButtonNames(12)="XboxTypeS_LeftTrigger" GamepadButtonNames(13)="XboxTypeS_RightTrigger" GamepadButtonNames(14)="XboxTypeS_DPad_Left" GamepadButtonNames(15)="XboxTypeS_DPad_Right" GamepadButtonNames(16)="XboxTypeS_DPad_Down" GamepadButtonNames(17)="XboxTypeS_DPad_Up" GamepadButtonNames(18)="XboxTypeS_Back" GamepadButtonNames(19)="XboxTypeS_Start" // DEFAULT LAYOUT!!!, This MUST match the KFInput.ini defaults! GamepadLayouts(LAYOUT_Default)={( ButtonCommands[0]=(Name="XboxTypeS_A",Command="GBA_Jump | OnVoteYesPressed | OnRelease OnVoteYesRelease"), ButtonCommands[1]=(Name="XboxTypeS_Y",Command="GBA_WeaponSelect_Gamepad"), ButtonCommands[2]=(Name="XboxTypeS_LeftX",Command="GBA_StrafeLeft_Gamepad"), ButtonCommands[3]=(Name="XboxTypeS_LeftY",Command="GBA_MoveForward_Gamepad"), ButtonCommands[4]=(Name="XboxTypeS_LeftThumbStick",Command="GBA_SprintAndCrouch"), ButtonCommands[5]=(Name="XboxTypeS_RightX",Command="GBA_TurnLeft_Gamepad"), ButtonCommands[6]=(Name="XboxTypeS_RightY",Command="GBA_Look_Gamepad"), ButtonCommands[7]=(Name="XboxTypeS_RightThumbStick",Command="GBA_TertiaryFire"), ButtonCommands[8]=(Name="XboxTypeS_LeftShoulder",Command="GBA_Grenade"), ButtonCommands[9]=(Name="XboxTypeS_RightShoulder",Command="GBA_AltFire_Gamepad"), ButtonCommands[10]=(Name="XboxTypeS_LeftTrigger",Command="GBA_IronsightsHold"), ButtonCommands[11]=(Name="XboxTypeS_RightTrigger",Command="GBA_Fire") )} // Jumper GamepadLayouts(LAYOUT_JUMPER)={( ButtonCommands[0]=(Name="XboxTypeS_A",Command="GBA_TertiaryFire | OnVoteYesPressed | OnRelease OnVoteYesRelease"), ButtonCommands[1]=(Name="XboxTypeS_Y",Command="GBA_WeaponSelect_Gamepad"), ButtonCommands[2]=(Name="XboxTypeS_LeftX",Command="GBA_StrafeLeft_Gamepad"), ButtonCommands[3]=(Name="XboxTypeS_LeftY",Command="GBA_MoveForward_Gamepad"), ButtonCommands[4]=(Name="XboxTypeS_LeftThumbStick",Command="GBA_SprintAndCrouch"), ButtonCommands[5]=(Name="XboxTypeS_RightX",Command="GBA_TurnLeft_Gamepad"), ButtonCommands[6]=(Name="XboxTypeS_RightY",Command="GBA_Look_Gamepad"), ButtonCommands[7]=(Name="XboxTypeS_RightThumbStick",Command="GBA_Grenade"), ButtonCommands[8]=(Name="XboxTypeS_LeftShoulder",Command="GBA_Jump"), ButtonCommands[9]=(Name="XboxTypeS_RightShoulder",Command="GBA_AltFire_Gamepad"), ButtonCommands[10]=(Name="XboxTypeS_LeftTrigger",Command="GBA_IronsightsHold"), ButtonCommands[11]=(Name="XboxTypeS_RightTrigger",Command="GBA_Fire"), )} // Quick Draw GamepadLayouts(LAYOUT_QUICKDRAW)={( ButtonCommands[0]=(Name="XboxTypeS_A",Command="GBA_Jump | OnVoteYesPressed | OnRelease OnVoteYesRelease"), ButtonCommands[1]=(Name="XboxTypeS_Y",Command="GBA_TertiaryFire"), ButtonCommands[2]=(Name="XboxTypeS_LeftX",Command="GBA_StrafeLeft_Gamepad"), ButtonCommands[3]=(Name="XboxTypeS_LeftY",Command="GBA_MoveForward_Gamepad"), ButtonCommands[4]=(Name="XboxTypeS_LeftThumbStick",Command="GBA_SprintAndCrouch"), ButtonCommands[5]=(Name="XboxTypeS_RightX",Command="GBA_TurnLeft_Gamepad"), ButtonCommands[6]=(Name="XboxTypeS_RightY",Command="GBA_Look_Gamepad"), ButtonCommands[7]=(Name="XboxTypeS_RightThumbStick",Command="GBA_Grenade"), ButtonCommands[8]=(Name="XboxTypeS_LeftShoulder",Command="GBA_WeaponSelect_Gamepad"), ButtonCommands[9]=(Name="XboxTypeS_RightShoulder",Command="GBA_AltFire_Gamepad"), ButtonCommands[10]=(Name="XboxTypeS_LeftTrigger",Command="GBA_IronsightsHold"), ButtonCommands[11]=(Name="XboxTypeS_RightTrigger",Command="GBA_Fire"), )} // Southpaw GamepadLayouts(LAYOUT_SOUTHPAW)={( ButtonCommands[0]=(Name="XboxTypeS_A",Command="GBA_Jump | OnVoteYesPressed | OnRelease OnVoteYesRelease"), ButtonCommands[1]=(Name="XboxTypeS_Y",Command="GBA_WeaponSelect_Gamepad"), ButtonCommands[2]=(Name="XboxTypeS_LeftX",Command="GBA_TurnLeft_Gamepad"), ButtonCommands[3]=(Name="XboxTypeS_LeftY",Command="GBA_Look_GamepadSouthpaw"), ButtonCommands[4]=(Name="XboxTypeS_LeftThumbStick",Command="GBA_TertiaryFire"), ButtonCommands[5]=(Name="XboxTypeS_RightX",Command="GBA_StrafeLeft_Gamepad"), ButtonCommands[6]=(Name="XboxTypeS_RightY",Command="GBA_MoveForward_GamepadSouthpaw"), ButtonCommands[7]=(Name="XboxTypeS_RightThumbStick",Command="GBA_SprintAndCrouch"), ButtonCommands[8]=(Name="XboxTypeS_LeftShoulder",Command="GBA_AltFire_Gamepad"), ButtonCommands[9]=(Name="XboxTypeS_RightShoulder",Command="GBA_Grenade"), ButtonCommands[10]=(Name="XboxTypeS_LeftTrigger",Command="GBA_Fire"), ButtonCommands[11]=(Name="XboxTypeS_RightTrigger",Command="GBA_IronsightsHold"), )} }