diff --git a/src/kiss_flixel/FlxKeyShortcutHandler.hx b/src/kiss_flixel/FlxKeyShortcutHandler.hx index c72a505..9dabcaf 100644 --- a/src/kiss_flixel/FlxKeyShortcutHandler.hx +++ b/src/kiss_flixel/FlxKeyShortcutHandler.hx @@ -7,6 +7,10 @@ import kiss.List; import kiss_tools.KeyShortcutHandler; import flixel.input.keyboard.FlxKey; import flixel.FlxG; +import flixel.input.actions.FlxAction; +import flixel.input.actions.FlxActionInput; +import flixel.input.FlxInput; +import flixel.input.gamepad.FlxGamepadInputID; @:build(kiss.Kiss.build()) class FlxKeyShortcutHandler extends KeyShortcutHandler {} diff --git a/src/kiss_flixel/FlxKeyShortcutHandler.kiss b/src/kiss_flixel/FlxKeyShortcutHandler.kiss index d74e146..6939f50 100644 --- a/src/kiss_flixel/FlxKeyShortcutHandler.kiss +++ b/src/kiss_flixel/FlxKeyShortcutHandler.kiss @@ -28,8 +28,24 @@ // TODO generic error handlers ) -// automatically pass the last pressed key to handle key +(prop &mut :Array buttonActions []) +(method enableGamepadInput [:Map buttonToKeyMappings &opt :Int gamepadId] + (unless gamepadId (set gamepadId FlxInputDeviceID.ALL)) + (set buttonActions + (for =>buttonId keyString buttonToKeyMappings + (.addGamepad + (new FlxActionDigital + "${buttonId}->${keyString}" + ->:Void _ (handleKey keyString)) + buttonId + JUST_PRESSED + gamepadId)))) + (method :Void update [] + (doFor action buttonActions + (action.update)) + + // automatically pass the last pressed key to super.handleKey (let [:FlxKey id (FlxG.keys.firstJustPressed)] (unless (= id -1) (let [key (id.toString)]