From 7c778702e81809e1e8a3835f5e88da9b1d719873 Mon Sep 17 00:00:00 2001 From: Lars Doucet Date: Fri, 26 Feb 2016 11:45:17 -0600 Subject: [PATCH 1/9] Make analog sticks emit "fake" digital actions for left/right/up/down movement, and add ID's that make it simple to use them. Makes it easy to use an Analog stick as if it were a DPAD, a very popular input pattern. This behavior was already implemented on legacy, but the API for it was buried. I added top level FlxGamepadInputID's for the digital events, and refactored things so that Next can emit these events as well. Also, I added a "value" property to the FlxGamepadButton for storing last frame's analog input value, which should remove the requirement for FlxActions to call check() every frame in order to get accurate JUST_MOVED / JUST_STOPPED behavior. --- flixel/input/gamepad/FlxGamepad.hx | 69 ++++++++++++++++++- flixel/input/gamepad/FlxGamepadAnalogStick.hx | 6 +- flixel/input/gamepad/FlxGamepadButton.hx | 5 ++ flixel/input/gamepad/FlxGamepadInputID.hx | 18 +++-- flixel/input/gamepad/FlxGamepadManager.hx | 50 ++------------ flixel/input/gamepad/id/LogitechID.hx | 9 ++- flixel/input/gamepad/id/MFiID.hx | 4 +- .../input/gamepad/id/MayflashWiiRemoteID.hx | 20 +++--- flixel/input/gamepad/id/OUYAID.hx | 4 +- flixel/input/gamepad/id/PS4ID.hx | 12 ++-- flixel/input/gamepad/id/PSVitaID.hx | 4 +- flixel/input/gamepad/id/WiiRemoteID.hx | 22 +++--- flixel/input/gamepad/id/XInputID.hx | 16 ++--- .../input/gamepad/mappings/LogitechMapping.hx | 19 ++++- flixel/input/gamepad/mappings/MFiMapping.hx | 19 ++++- .../mappings/MayflashWiiRemoteMapping.hx | 30 +++++++- flixel/input/gamepad/mappings/OUYAMapping.hx | 19 ++++- flixel/input/gamepad/mappings/PS4Mapping.hx | 19 ++++- .../input/gamepad/mappings/PSVitaMapping.hx | 19 ++++- .../gamepad/mappings/WiiRemoteMapping.hx | 30 +++++++- .../input/gamepad/mappings/XInputMapping.hx | 19 ++++- 21 files changed, 302 insertions(+), 111 deletions(-) diff --git a/flixel/input/gamepad/FlxGamepad.hx b/flixel/input/gamepad/FlxGamepad.hx index 5464c065be..6d5c85d317 100644 --- a/flixel/input/gamepad/FlxGamepad.hx +++ b/flixel/input/gamepad/FlxGamepad.hx @@ -184,9 +184,17 @@ class FlxGamepad implements IFlxDestroyable control = _device.getControlAt(i); //quick absolute value for analog sticks - var value = Math.abs(control.value); button = getButton(i); + if (isAxisForAnalogStick(i)) + { + handleAxisMove(i, control.value, button.value); + } + + button.value = control.value; + + var value = Math.abs(control.value); + if (value < deadZone) { button.release(); @@ -261,10 +269,10 @@ class FlxGamepad implements IFlxDestroyable manager = null; #if FLX_JOYSTICK_API - hat = FlxDestroyUtil.put(hat); + hat = FlxDestroyUtil.put(hat); ball = FlxDestroyUtil.put(ball); - hat = null; + hat = null; ball = null; #end } @@ -606,6 +614,61 @@ class FlxGamepad implements IFlxDestroyable return getAnalogYAxisValue(Stick); } + @:allow(flixel.input.gamepad.FlxGamepadManager) + private function handleAxisMove(axis:Int, newVal:Float, oldVal:Float) + { + newVal = applyAxisFlip(newVal, axis); + oldVal = applyAxisFlip(oldVal, axis); + + //check to see if we should send digital inputs as well as analog + var stick:FlxGamepadAnalogStick = this.getAnalogStickByAxis(axis); + if (stick.mode == ONLY_DIGITAL || stick.mode == BOTH) + { + var neg = stick.digitalThreshold * -1; + var pos = stick.digitalThreshold; + var digitalButton = -1; + + trace("axis(" + axis + ") val = " + newVal); + + //pressed/released for digital LEFT/UP + if (newVal < neg && oldVal >= neg) + { + if (axis == stick.x) digitalButton = stick.rawLeft; + else if (axis == stick.y) digitalButton = stick.rawUp; + var btn = getButton(digitalButton); + if (btn != null) btn.press(); + } + else if (newVal >= neg && oldVal < neg) + { + if (axis == stick.x) digitalButton = stick.rawLeft; + else if (axis == stick.y) digitalButton = stick.rawUp; + var btn = getButton(digitalButton); + if (btn != null) btn.release(); + } + + //pressed/released for digital RIGHT/DOWN + if (newVal > pos && oldVal <= pos) + { + if (axis == stick.x) digitalButton = stick.rawRight; + else if (axis == stick.y) digitalButton = stick.rawDown; + var btn = getButton(digitalButton); + if (btn != null) btn.press(); + } + else if (newVal <= pos && oldVal > pos) + { + if (axis == stick.x) digitalButton = stick.rawRight; + else if (axis == stick.y) digitalButton = stick.rawDown; + var btn = getButton(digitalButton); + if (btn != null) btn.release(); + } + + if (stick.mode == ONLY_DIGITAL) + { + //still haven't figured out how to suppress the analog inputs properly. Oh well. + } + } + } + /** * Whether any buttons have the specified input state. */ diff --git a/flixel/input/gamepad/FlxGamepadAnalogStick.hx b/flixel/input/gamepad/FlxGamepadAnalogStick.hx index 19e18c523f..d605cec181 100644 --- a/flixel/input/gamepad/FlxGamepadAnalogStick.hx +++ b/flixel/input/gamepad/FlxGamepadAnalogStick.hx @@ -32,7 +32,7 @@ class FlxGamepadAnalogStick /** * when analog inputs are received, how to process them digitally */ - public var mode(default, null):FlxAnalogToDigitalMode = ONLY_ANALOG; + public var mode(default, null):FlxAnalogToDigitalMode = BOTH; public function new(x:Int, y:Int, ?settings:FlxGamepadAnalogStickSettings) { @@ -42,12 +42,12 @@ class FlxGamepadAnalogStick if (settings == null) return; - mode = (settings.mode != null) ? settings.mode : ONLY_ANALOG; + mode = (settings.mode != null) ? settings.mode : BOTH; rawUp = (settings.up != null) ? settings.up : -1; rawDown = (settings.down != null) ? settings.down : -1; rawLeft = (settings.left != null) ? settings.left : -1; rawRight = (settings.right != null) ? settings.right : -1; - digitalThreshold = (settings.threshold != null) ? settings.threshold : -1; + digitalThreshold = (settings.threshold != null) ? settings.threshold : 0.5; } public function toString():String diff --git a/flixel/input/gamepad/FlxGamepadButton.hx b/flixel/input/gamepad/FlxGamepadButton.hx index aff6a9e153..3f9a705739 100644 --- a/flixel/input/gamepad/FlxGamepadButton.hx +++ b/flixel/input/gamepad/FlxGamepadButton.hx @@ -31,4 +31,9 @@ class FlxGamepadButton extends FlxInput super.press(); } #end + + /** + * Optional analog value, so we can check when the value has changed from the last frame + */ + public var value:Float = 0; } \ No newline at end of file diff --git a/flixel/input/gamepad/FlxGamepadInputID.hx b/flixel/input/gamepad/FlxGamepadInputID.hx index e37ebf2d61..74658377cc 100644 --- a/flixel/input/gamepad/FlxGamepadInputID.hx +++ b/flixel/input/gamepad/FlxGamepadInputID.hx @@ -81,14 +81,24 @@ abstract FlxGamepadInputID(Int) from Int to Int /**for a mouse-like input such as touch or IR camera. Vertical axis.**/ var POINTER_Y = 29; + var LEFT_STICK_DIGITAL_UP = 30; + var LEFT_STICK_DIGITAL_RIGHT = 31; + var LEFT_STICK_DIGITAL_DOWN = 32; + var LEFT_STICK_DIGITAL_LEFT = 33; + + var RIGHT_STICK_DIGITAL_UP = 34; + var RIGHT_STICK_DIGITAL_RIGHT = 35; + var RIGHT_STICK_DIGITAL_DOWN = 36; + var RIGHT_STICK_DIGITAL_LEFT = 37; + /**an extra digital button that doesn't fit cleanly into the universal template**/ - var EXTRA_0 = 30; + var EXTRA_0 = 46; /**an extra digital button that doesn't fit cleanly into the universal template**/ - var EXTRA_1 = 31; + var EXTRA_1 = 47; /**an extra digital button that doesn't fit cleanly into the universal template**/ - var EXTRA_2 = 32; + var EXTRA_2 = 48; /**an extra digital button that doesn't fit cleanly into the universal template**/ - var EXTRA_3 = 33; + var EXTRA_3 = 49; @:from public static inline function fromString(s:String) diff --git a/flixel/input/gamepad/FlxGamepadManager.hx b/flixel/input/gamepad/FlxGamepadManager.hx index 09421a41d2..c076d9d72d 100644 --- a/flixel/input/gamepad/FlxGamepadManager.hx +++ b/flixel/input/gamepad/FlxGamepadManager.hx @@ -453,58 +453,18 @@ class FlxGamepadManager implements IFlxInputManager { var isForStick = gamepad.isAxisForAnalogStick(i); var isForMotion = gamepad.mapping.isAxisForMotion(i); + if (!isForStick && !isForMotion) { // in legacy this returns a (-1, 1) range, but in flash/next it // returns (0,1) so we normalize to (0, 1) for legacy target only newAxis[i] = (newAxis[i] + 1) / 2; } - else if (isForStick) + else { - //check to see if we should send digital inputs as well as analog - var stick:FlxGamepadAnalogStick = gamepad.getAnalogStickByAxis(i); - if (stick.mode == ONLY_DIGITAL || stick.mode == BOTH) - { - var newVal = newAxis[i]; - var oldVal = oldAxis[i]; - - var neg = stick.digitalThreshold * -1; - var pos = stick.digitalThreshold; - var digitalButton = -1; - - //pressed/released for digital LEFT/UP - if (newVal < neg && oldVal >= neg) - { - if (i == stick.x) digitalButton = stick.rawLeft; - else if (i == stick.y) digitalButton = stick.rawUp; - handleButtonDown(device, digitalButton); - } - else if (newVal >= neg && oldVal < neg) - { - if (i == stick.x) digitalButton = stick.rawLeft; - else if (i == stick.y) digitalButton = stick.rawUp; - handleButtonUp(device, digitalButton); - } - - //pressed/released for digital RIGHT/DOWN - if (newVal > pos && oldVal <= pos) - { - if (i == stick.x) digitalButton = stick.rawRight; - else if (i == stick.y) digitalButton = stick.rawDown; - handleButtonDown(device, digitalButton); - } - else if (newVal <= pos && oldVal > pos) - { - if (i == stick.x) digitalButton = stick.rawRight; - else if (i == stick.y) digitalButton = stick.rawDown; - handleButtonUp(device, digitalButton); - } - - if (stick.mode == ONLY_DIGITAL) - { - //still haven't figured out how to suppress the analog inputs properly. Oh well. - } - } + var newVal = newAxis[i]; + var oldVal = oldAxis[i]; + gamepad.handleAxisMove(i, newVal, oldVal); } } diff --git a/flixel/input/gamepad/id/LogitechID.hx b/flixel/input/gamepad/id/LogitechID.hx index df38464713..2b458fbef2 100644 --- a/flixel/input/gamepad/id/LogitechID.hx +++ b/flixel/input/gamepad/id/LogitechID.hx @@ -29,9 +29,6 @@ class LogitechID //TODO: Someone needs to look this up and define it! (NOTE: not all logitech controllers have this) public static inline var LOGITECH:Int = -1; - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3); - #else // native and html5 public static inline var ONE:Int = 0; public static inline var TWO:Int = 1; @@ -55,7 +52,9 @@ class LogitechID //TODO: Someone needs to look this up and define it! (NOTE: not all logitech controllers have this) public static inline var LOGITECH:Int = -5; - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3); #end + +public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1, {up:24, down:25, left:26, right:27}); +public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3, {up:28, down:29, left:30, right:31}); + } \ No newline at end of file diff --git a/flixel/input/gamepad/id/MFiID.hx b/flixel/input/gamepad/id/MFiID.hx index ea17dda6a3..d49ed0f966 100644 --- a/flixel/input/gamepad/id/MFiID.hx +++ b/flixel/input/gamepad/id/MFiID.hx @@ -25,8 +25,8 @@ class MFiID public static inline var DPAD_LEFT:Int = 19; public static inline var DPAD_RIGHT:Int = 20; - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3); + public static var LEFT_ANALOG_STICK (default, null) = new FlxGamepadAnalogStick(0, 1, {up:21, down:22, left:23, right:24}); + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3, {up:25, down:26, left:27, right:28}); public static inline var LEFT_TRIGGER:Int = 4; public static inline var RIGHT_TRIGGER:Int = 5; diff --git a/flixel/input/gamepad/id/MayflashWiiRemoteID.hx b/flixel/input/gamepad/id/MayflashWiiRemoteID.hx index 7d1608b051..82e32bab3f 100644 --- a/flixel/input/gamepad/id/MayflashWiiRemoteID.hx +++ b/flixel/input/gamepad/id/MayflashWiiRemoteID.hx @@ -81,16 +81,16 @@ class MayflashWiiRemoteID // Yes, the WiiRemote DPAD is treated as ANALOG for some reason...so we have to pass in some "fake" ID's to get simulated digital inputs public static var REMOTE_DPAD(default, null) = new FlxGamepadAnalogStick(0, 1, { - up: REMOTE_DPAD_UP, - down: REMOTE_DPAD_DOWN, - left: REMOTE_DPAD_LEFT, + up: REMOTE_DPAD_UP, + down: REMOTE_DPAD_DOWN, + left: REMOTE_DPAD_LEFT, right: REMOTE_DPAD_RIGHT, threshold: 0.5, mode: ONLY_DIGITAL }); - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); //the nunchuk only has the "left" analog stick - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3); //the classic controller has both the "left" and "right" analog sticks + public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1, {up:26, down:27, left:28, right:29}); //the nunchuk only has the "left" analog stick + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3, {up:30, down:31, left:32, right:33}); //the classic controller has both the "left" and "right" analog sticks // these aren't real axes, they're simulated when the right digital buttons are pushed public static inline var LEFT_TRIGGER_FAKE:Int = 4; @@ -166,16 +166,16 @@ class MayflashWiiRemoteID // Yes, the WiiRemote DPAD is treated as ANALOG for some reason...so we have to pass in some "fake" ID's to get simulated digital inputs public static var REMOTE_DPAD(default, null) = new FlxGamepadAnalogStick(0, 1, { - up: REMOTE_DPAD_UP, - down: REMOTE_DPAD_DOWN, - left: REMOTE_DPAD_LEFT, + up: REMOTE_DPAD_UP, + down: REMOTE_DPAD_DOWN, + left: REMOTE_DPAD_LEFT, right: REMOTE_DPAD_RIGHT, threshold: 0.5, mode: ONLY_DIGITAL }); - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); //the nunchuk only has the "left" analog stick - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3); //the classic controller has both the "left" and "right" analog sticks + public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1, {up:26, down:27, left:28, right:29}); //the nunchuk only has the "left" analog stick + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3, {up:26, down:27, left:28, right:29}); //the classic controller has both the "left" and "right" analog sticks // these aren't real axes, they're simulated when the right digital buttons are pushed public static inline var LEFT_TRIGGER_FAKE:Int = 4; diff --git a/flixel/input/gamepad/id/OUYAID.hx b/flixel/input/gamepad/id/OUYAID.hx index b2a378d428..ad2bbb69e9 100644 --- a/flixel/input/gamepad/id/OUYAID.hx +++ b/flixel/input/gamepad/id/OUYAID.hx @@ -26,8 +26,8 @@ class OUYAID public static inline var DPAD_UP:Int = 16; // If TRIGGER axis returns value > 0 then LT is being pressed, and if it's < 0 then RT is being pressed - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(11, 14); + public static var LEFT_ANALOG_STICK (default, null) = new FlxGamepadAnalogStick( 0, 1, {up:23, down:24, left:25, right:26}); + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(11, 14, {up:27, down:28, left:29, right:30}); public static inline var LEFT_TRIGGER_ANALOG:Int = 17; public static inline var RIGHT_TRIGGER_ANALOG:Int = 18; diff --git a/flixel/input/gamepad/id/PS4ID.hx b/flixel/input/gamepad/id/PS4ID.hx index 8b8e40c7df..f8c7b67529 100644 --- a/flixel/input/gamepad/id/PS4ID.hx +++ b/flixel/input/gamepad/id/PS4ID.hx @@ -37,8 +37,8 @@ class PS4ID public static inline var PS:Int = 22; public static inline var TOUCHPAD_CLICK:Int = 23; - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0 , 1); - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 5); + public static var LEFT_ANALOG_STICK (default, null) = new FlxGamepadAnalogStick(0, 1, {up:24, down:25, left:26, right:27}); + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 5, {up:28, down:29, left:30, right:31}); public static inline var DPAD_UP:Int = 6; public static inline var DPAD_DOWN:Int = 7; @@ -63,8 +63,8 @@ class PS4ID public static inline var TOUCHPAD_CLICK:Int = 21; - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3); + public static var LEFT_ANALOG_STICK (default, null) = new FlxGamepadAnalogStick(0, 1, {up:22, down:23, left:24, right:25}); + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3, {up:26, down:27, left:28, right:29}); public static inline var L2:Int = 4; public static inline var R2:Int = 5; @@ -97,8 +97,8 @@ class PS4ID public static inline var L2:Int = 3; public static inline var R2:Int = 4; - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 5); + public static var LEFT_ANALOG_STICK (default, null) = new FlxGamepadAnalogStick(0, 1, {up:27, down:28, left:29, right:30}); + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 5, {up:31, down:32, left:33, right:34}); //"fake" IDs, we manually watch for hat axis changes and then send events using these otherwise unused joystick button codes public static inline var DPAD_LEFT:Int = 15; diff --git a/flixel/input/gamepad/id/PSVitaID.hx b/flixel/input/gamepad/id/PSVitaID.hx index 2d073cee8c..3e70d75c63 100644 --- a/flixel/input/gamepad/id/PSVitaID.hx +++ b/flixel/input/gamepad/id/PSVitaID.hx @@ -24,6 +24,6 @@ class PSVitaID public static inline var DPAD_LEFT:Int = 19; public static inline var DPAD_RIGHT:Int = 20; - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3); + public static var LEFT_ANALOG_STICK (default, null) = new FlxGamepadAnalogStick(0, 1, {up:21, down:22, left:23, right:24}); + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3, {up:21, down:22, left:23, right:24}); } \ No newline at end of file diff --git a/flixel/input/gamepad/id/WiiRemoteID.hx b/flixel/input/gamepad/id/WiiRemoteID.hx index 580e65f5f5..7913bdeeba 100644 --- a/flixel/input/gamepad/id/WiiRemoteID.hx +++ b/flixel/input/gamepad/id/WiiRemoteID.hx @@ -73,18 +73,18 @@ class WiiRemoteID // Yes, the WiiRemote DPAD is treated as ANALOG for some reason... // so we have to pass in some "fake" ID's to get simulated digital inputs public static var REMOTE_DPAD(default, null) = new FlxGamepadAnalogStick(0, 1, { - up: REMOTE_DPAD_UP, - down: REMOTE_DPAD_DOWN, - left: REMOTE_DPAD_LEFT, + up: REMOTE_DPAD_UP, + down: REMOTE_DPAD_DOWN, + left: REMOTE_DPAD_LEFT, right: REMOTE_DPAD_RIGHT, threshold: 0.5, mode: ONLY_DIGITAL }); // the nunchuk only has the "left" analog stick - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); + public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1, {up:32,down:33,left:34,right:35}); // the classic controller has both the "left" and "right" analog sticks - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3); + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3, {up:36,down:37,left:38,right:39}); // these aren't real axes, they're simulated when the right digital buttons are pushed public static inline var LEFT_TRIGGER_FAKE:Int = 4; @@ -167,22 +167,22 @@ class WiiRemoteID // Yes, the WiiRemote DPAD is treated as ANALOG for some reason...so we have to pass in some "fake" ID's to get simulated digital inputs public static var REMOTE_DPAD(default, null) = new FlxGamepadAnalogStick(0, 1, { - up: REMOTE_DPAD_UP, - down: REMOTE_DPAD_DOWN, - left: REMOTE_DPAD_LEFT, + up: REMOTE_DPAD_UP, + down: REMOTE_DPAD_DOWN, + left: REMOTE_DPAD_LEFT, right: REMOTE_DPAD_RIGHT, threshold: 0.5, - mode: ONLY_DIGITAL + mode: ONLY_DIGITAL }); /** * the nunchuk only has the "left" analog stick */ - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); + public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1, {up:28,down:29,left:30,right:31}); /** * the classic controller has both the "left" and "right" analog sticks */ - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3); + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3, {up:32,down:33,left:34,right:35}); // these aren't real axes, they're simulated when the right digital buttons are pushed public static inline var LEFT_TRIGGER_FAKE:Int = 4; diff --git a/flixel/input/gamepad/id/XInputID.hx b/flixel/input/gamepad/id/XInputID.hx index 5208e0479f..a4f6dc8c39 100644 --- a/flixel/input/gamepad/id/XInputID.hx +++ b/flixel/input/gamepad/id/XInputID.hx @@ -46,8 +46,8 @@ class XInputID public static inline var LEFT_TRIGGER:Int = 10; public static inline var RIGHT_TRIGGER:Int = 11; - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3); + public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1, {up:20,down:21,left:22,right:23}); + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3, {up:24,down:25,left:26,right:27}); #elseif FLX_GAMEINPUT_API @@ -71,8 +71,8 @@ class XInputID public static inline var DPAD_LEFT:Int = 19; public static inline var DPAD_RIGHT:Int = 20; - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3); + public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1, {up:21,down:22,left:23,right:24}); + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3, {up:25,down:26,left:27,right:28}); public static inline var LEFT_TRIGGER:Int = 4; public static inline var RIGHT_TRIGGER:Int = 5; @@ -116,8 +116,8 @@ class XInputID public static inline var LEFT_TRIGGER:Int = 2; public static inline var RIGHT_TRIGGER:Int = 5; - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(3, 4); + public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1, {up:21,down:22,left:23,right:24}); + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(3, 4, {up:25,down:26,left:27,right:28}); #else // mac @@ -145,8 +145,8 @@ class XInputID public static inline var LEFT_TRIGGER:Int = 2; public static inline var RIGHT_TRIGGER:Int = 5; - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(3, 4); + public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1, {up:21,down:22,left:23,right:24}); + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(3, 4, {up:25,down:26,left:27,right:28}); #end #end diff --git a/flixel/input/gamepad/mappings/LogitechMapping.hx b/flixel/input/gamepad/mappings/LogitechMapping.hx index 6289dd4d17..3833bfe7a8 100644 --- a/flixel/input/gamepad/mappings/LogitechMapping.hx +++ b/flixel/input/gamepad/mappings/LogitechMapping.hx @@ -41,7 +41,16 @@ class LogitechMapping extends FlxGamepadMapping case LogitechID.DPAD_RIGHT: DPAD_RIGHT; case LogitechID.DPAD_UP: DPAD_UP; case LogitechID.LOGITECH: GUIDE; - default: NONE; + default: + if(rawID == LogitechID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if(rawID == LogitechID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if(rawID == LogitechID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if(rawID == LogitechID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + if(rawID == LogitechID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; + if(rawID == LogitechID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; + if(rawID == LogitechID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; + if(rawID == LogitechID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; + NONE; } } @@ -66,6 +75,14 @@ class LogitechMapping extends FlxGamepadMapping case DPAD_RIGHT: LogitechID.DPAD_RIGHT; case LEFT_TRIGGER: LogitechID.SEVEN; case RIGHT_TRIGGER: LogitechID.EIGHT; + case LEFT_STICK_DIGITAL_UP: LogitechID.LEFT_ANALOG_STICK.rawUp; + case LEFT_STICK_DIGITAL_DOWN: LogitechID.LEFT_ANALOG_STICK.rawDown; + case LEFT_STICK_DIGITAL_LEFT: LogitechID.LEFT_ANALOG_STICK.rawLeft; + case LEFT_STICK_DIGITAL_RIGHT: LogitechID.LEFT_ANALOG_STICK.rawRight; + case RIGHT_STICK_DIGITAL_UP: LogitechID.RIGHT_ANALOG_STICK.rawUp; + case RIGHT_STICK_DIGITAL_DOWN: LogitechID.RIGHT_ANALOG_STICK.rawDown; + case RIGHT_STICK_DIGITAL_LEFT: LogitechID.RIGHT_ANALOG_STICK.rawLeft; + case RIGHT_STICK_DIGITAL_RIGHT: LogitechID.RIGHT_ANALOG_STICK.rawRight; #if FLX_JOYSTICK_API case LEFT_TRIGGER_FAKE: LogitechID.SEVEN; case RIGHT_TRIGGER_FAKE: LogitechID.EIGHT; diff --git a/flixel/input/gamepad/mappings/MFiMapping.hx b/flixel/input/gamepad/mappings/MFiMapping.hx index a1aeb54a7c..94ecb7c5c5 100644 --- a/flixel/input/gamepad/mappings/MFiMapping.hx +++ b/flixel/input/gamepad/mappings/MFiMapping.hx @@ -31,7 +31,16 @@ class MFiMapping extends FlxGamepadMapping case MFiID.DPAD_DOWN: DPAD_DOWN; case MFiID.DPAD_LEFT: DPAD_LEFT; case MFiID.DPAD_RIGHT: DPAD_RIGHT; - default: NONE; + default: + if (rawID == MFiID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if (rawID == MFiID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if (rawID == MFiID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if (rawID == MFiID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + if (rawID == MFiID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; + if (rawID == MFiID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; + if (rawID == MFiID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; + if (rawID == MFiID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; + NONE; } } @@ -56,6 +65,14 @@ class MFiMapping extends FlxGamepadMapping case DPAD_RIGHT: MFiID.DPAD_RIGHT; case LEFT_TRIGGER: MFiID.LEFT_TRIGGER; case RIGHT_TRIGGER: MFiID.RIGHT_TRIGGER; + case LEFT_STICK_DIGITAL_UP: MFiID.LEFT_ANALOG_STICK.rawUp; + case LEFT_STICK_DIGITAL_DOWN: MFiID.LEFT_ANALOG_STICK.rawDown; + case LEFT_STICK_DIGITAL_LEFT: MFiID.LEFT_ANALOG_STICK.rawLeft; + case LEFT_STICK_DIGITAL_RIGHT: MFiID.LEFT_ANALOG_STICK.rawRight; + case RIGHT_STICK_DIGITAL_UP: MFiID.RIGHT_ANALOG_STICK.rawUp; + case RIGHT_STICK_DIGITAL_DOWN: MFiID.RIGHT_ANALOG_STICK.rawDown; + case RIGHT_STICK_DIGITAL_LEFT: MFiID.RIGHT_ANALOG_STICK.rawLeft; + case RIGHT_STICK_DIGITAL_RIGHT: MFiID.RIGHT_ANALOG_STICK.rawRight; #if FLX_JOYSTICK_API case LEFT_TRIGGER_FAKE: MFiID.LEFT_TRIGGER; case RIGHT_TRIGGER_FAKE: MFiID.RIGHT_TRIGGER; diff --git a/flixel/input/gamepad/mappings/MayflashWiiRemoteMapping.hx b/flixel/input/gamepad/mappings/MayflashWiiRemoteMapping.hx index 549830f8d9..632e032d4d 100644 --- a/flixel/input/gamepad/mappings/MayflashWiiRemoteMapping.hx +++ b/flixel/input/gamepad/mappings/MayflashWiiRemoteMapping.hx @@ -52,7 +52,16 @@ class MayflashWiiRemoteMapping extends FlxGamepadMapping case MayflashWiiRemoteID.CLASSIC_DPAD_DOWN: DPAD_DOWN; case MayflashWiiRemoteID.CLASSIC_DPAD_LEFT: DPAD_LEFT; case MayflashWiiRemoteID.CLASSIC_DPAD_RIGHT: DPAD_RIGHT; - default: NONE; + default: + if(rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if(rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if(rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if(rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + if(rawID == MayflashWiiRemoteID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; + if(rawID == MayflashWiiRemoteID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; + if(rawID == MayflashWiiRemoteID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; + if(rawID == MayflashWiiRemoteID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; + NONE; } } @@ -73,7 +82,12 @@ class MayflashWiiRemoteMapping extends FlxGamepadMapping case MayflashWiiRemoteID.NUNCHUK_DPAD_DOWN: DPAD_DOWN; case MayflashWiiRemoteID.NUNCHUK_DPAD_LEFT: DPAD_LEFT; case MayflashWiiRemoteID.NUNCHUK_DPAD_RIGHT: DPAD_RIGHT; - default: NONE; + default: + if(rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if(rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if(rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if(rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + NONE; } } @@ -127,6 +141,14 @@ class MayflashWiiRemoteMapping extends FlxGamepadMapping case RIGHT_TRIGGER: MayflashWiiRemoteID.CLASSIC_R; case EXTRA_0: MayflashWiiRemoteID.CLASSIC_ONE; case EXTRA_1: MayflashWiiRemoteID.CLASSIC_TWO; + case LEFT_STICK_DIGITAL_UP: MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawUp; + case LEFT_STICK_DIGITAL_DOWN: MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawDown; + case LEFT_STICK_DIGITAL_LEFT: MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawLeft; + case LEFT_STICK_DIGITAL_RIGHT: MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawRight; + case RIGHT_STICK_DIGITAL_UP: MayflashWiiRemoteID.RIGHT_ANALOG_STICK.rawUp; + case RIGHT_STICK_DIGITAL_DOWN: MayflashWiiRemoteID.RIGHT_ANALOG_STICK.rawDown; + case RIGHT_STICK_DIGITAL_LEFT: MayflashWiiRemoteID.RIGHT_ANALOG_STICK.rawLeft; + case RIGHT_STICK_DIGITAL_RIGHT: MayflashWiiRemoteID.RIGHT_ANALOG_STICK.rawRight; default: getRawDefault(ID); } } @@ -150,6 +172,10 @@ class MayflashWiiRemoteMapping extends FlxGamepadMapping case DPAD_RIGHT: MayflashWiiRemoteID.NUNCHUK_DPAD_RIGHT; case POINTER_X: MayflashWiiRemoteID.NUNCHUK_POINTER_X; case POINTER_Y: MayflashWiiRemoteID.NUNCHUK_POINTER_Y; + case LEFT_STICK_DIGITAL_UP: MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawUp; + case LEFT_STICK_DIGITAL_DOWN: MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawDown; + case LEFT_STICK_DIGITAL_LEFT: MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawLeft; + case LEFT_STICK_DIGITAL_RIGHT: MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawRight; default: -1; } } diff --git a/flixel/input/gamepad/mappings/OUYAMapping.hx b/flixel/input/gamepad/mappings/OUYAMapping.hx index 9e783c3e58..865de1932e 100644 --- a/flixel/input/gamepad/mappings/OUYAMapping.hx +++ b/flixel/input/gamepad/mappings/OUYAMapping.hx @@ -39,7 +39,16 @@ class OUYAMapping extends FlxGamepadMapping case OUYAID.DPAD_DOWN: DPAD_DOWN; case OUYAID.DPAD_LEFT: DPAD_LEFT; case OUYAID.DPAD_RIGHT: DPAD_RIGHT; - default: NONE; + default: + if(rawID == OUYAID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if(rawID == OUYAID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if(rawID == OUYAID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if(rawID == OUYAID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + if(rawID == OUYAID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; + if(rawID == OUYAID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; + if(rawID == OUYAID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; + if(rawID == OUYAID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; + NONE; } } @@ -62,6 +71,14 @@ class OUYAMapping extends FlxGamepadMapping case DPAD_RIGHT: OUYAID.DPAD_RIGHT; case LEFT_TRIGGER: OUYAID.LEFT_TRIGGER; case RIGHT_TRIGGER: OUYAID.RIGHT_TRIGGER; + case LEFT_STICK_DIGITAL_UP: OUYAID.LEFT_ANALOG_STICK.rawUp; + case LEFT_STICK_DIGITAL_DOWN: OUYAID.LEFT_ANALOG_STICK.rawDown; + case LEFT_STICK_DIGITAL_LEFT: OUYAID.LEFT_ANALOG_STICK.rawLeft; + case LEFT_STICK_DIGITAL_RIGHT: OUYAID.LEFT_ANALOG_STICK.rawRight; + case RIGHT_STICK_DIGITAL_UP: OUYAID.RIGHT_ANALOG_STICK.rawUp; + case RIGHT_STICK_DIGITAL_DOWN: OUYAID.RIGHT_ANALOG_STICK.rawDown; + case RIGHT_STICK_DIGITAL_LEFT: OUYAID.RIGHT_ANALOG_STICK.rawLeft; + case RIGHT_STICK_DIGITAL_RIGHT: OUYAID.RIGHT_ANALOG_STICK.rawRight; default: -1; } } diff --git a/flixel/input/gamepad/mappings/PS4Mapping.hx b/flixel/input/gamepad/mappings/PS4Mapping.hx index cf42564049..816b0a9194 100644 --- a/flixel/input/gamepad/mappings/PS4Mapping.hx +++ b/flixel/input/gamepad/mappings/PS4Mapping.hx @@ -42,7 +42,16 @@ class PS4Mapping extends FlxGamepadMapping case PS4ID.DPAD_UP: DPAD_UP; case PS4ID.DPAD_LEFT: DPAD_LEFT; case PS4ID.DPAD_RIGHT: DPAD_RIGHT; - default: NONE; + default: + if(rawID == PS4ID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if(rawID == PS4ID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if(rawID == PS4ID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if(rawID == PS4ID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + if(rawID == PS4ID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; + if(rawID == PS4ID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; + if(rawID == PS4ID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; + if(rawID == PS4ID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; + NONE; } } @@ -67,6 +76,14 @@ class PS4Mapping extends FlxGamepadMapping case DPAD_RIGHT: PS4ID.DPAD_RIGHT; case LEFT_TRIGGER: PS4ID.L2; case RIGHT_TRIGGER: PS4ID.R2; + case LEFT_STICK_DIGITAL_UP: PS4ID.LEFT_ANALOG_STICK.rawUp; + case LEFT_STICK_DIGITAL_DOWN: PS4ID.LEFT_ANALOG_STICK.rawDown; + case LEFT_STICK_DIGITAL_LEFT: PS4ID.LEFT_ANALOG_STICK.rawLeft; + case LEFT_STICK_DIGITAL_RIGHT: PS4ID.LEFT_ANALOG_STICK.rawRight; + case RIGHT_STICK_DIGITAL_UP: PS4ID.RIGHT_ANALOG_STICK.rawUp; + case RIGHT_STICK_DIGITAL_DOWN: PS4ID.RIGHT_ANALOG_STICK.rawDown; + case RIGHT_STICK_DIGITAL_LEFT: PS4ID.RIGHT_ANALOG_STICK.rawLeft; + case RIGHT_STICK_DIGITAL_RIGHT: PS4ID.RIGHT_ANALOG_STICK.rawRight; #if FLX_JOYSTICK_API case LEFT_TRIGGER_FAKE: LEFT_TRIGGER_FAKE; case RIGHT_TRIGGER_FAKE: RIGHT_TRIGGER_FAKE; diff --git a/flixel/input/gamepad/mappings/PSVitaMapping.hx b/flixel/input/gamepad/mappings/PSVitaMapping.hx index b9ef74fa2d..5e1b93a5bc 100644 --- a/flixel/input/gamepad/mappings/PSVitaMapping.hx +++ b/flixel/input/gamepad/mappings/PSVitaMapping.hx @@ -28,7 +28,16 @@ class PSVitaMapping extends FlxGamepadMapping case PSVitaID.DPAD_UP: DPAD_UP; case PSVitaID.DPAD_LEFT: DPAD_LEFT; case PSVitaID.DPAD_RIGHT: DPAD_RIGHT; - default: NONE; + default: + if(rawID == PSVitaID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if(rawID == PSVitaID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if(rawID == PSVitaID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if(rawID == PSVitaID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + if(rawID == PSVitaID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; + if(rawID == PSVitaID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; + if(rawID == PSVitaID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; + if(rawID == PSVitaID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; + NONE; } } @@ -48,6 +57,14 @@ class PSVitaMapping extends FlxGamepadMapping case DPAD_DOWN: PSVitaID.DPAD_DOWN; case DPAD_LEFT: PSVitaID.DPAD_LEFT; case DPAD_RIGHT: PSVitaID.DPAD_RIGHT; + case LEFT_STICK_DIGITAL_UP: PSVitaID.LEFT_ANALOG_STICK.rawUp; + case LEFT_STICK_DIGITAL_DOWN: PSVitaID.LEFT_ANALOG_STICK.rawDown; + case LEFT_STICK_DIGITAL_LEFT: PSVitaID.LEFT_ANALOG_STICK.rawLeft; + case LEFT_STICK_DIGITAL_RIGHT: PSVitaID.LEFT_ANALOG_STICK.rawRight; + case RIGHT_STICK_DIGITAL_UP: PSVitaID.RIGHT_ANALOG_STICK.rawUp; + case RIGHT_STICK_DIGITAL_DOWN: PSVitaID.RIGHT_ANALOG_STICK.rawDown; + case RIGHT_STICK_DIGITAL_LEFT: PSVitaID.RIGHT_ANALOG_STICK.rawLeft; + case RIGHT_STICK_DIGITAL_RIGHT: PSVitaID.RIGHT_ANALOG_STICK.rawRight; default: -1; } } diff --git a/flixel/input/gamepad/mappings/WiiRemoteMapping.hx b/flixel/input/gamepad/mappings/WiiRemoteMapping.hx index 98c76e33dc..eff24495ab 100644 --- a/flixel/input/gamepad/mappings/WiiRemoteMapping.hx +++ b/flixel/input/gamepad/mappings/WiiRemoteMapping.hx @@ -52,7 +52,16 @@ class WiiRemoteMapping extends FlxGamepadMapping case WiiRemoteID.CLASSIC_DPAD_RIGHT: DPAD_RIGHT; case WiiRemoteID.CLASSIC_ONE: EXTRA_0; case WiiRemoteID.CLASSIC_TWO: EXTRA_1; - default: NONE; + default: + if(rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if(rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if(rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if(rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + if(rawID == WiiRemoteID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; + if(rawID == WiiRemoteID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; + if(rawID == WiiRemoteID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; + if(rawID == WiiRemoteID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; + NONE; } } @@ -73,7 +82,12 @@ class WiiRemoteMapping extends FlxGamepadMapping case WiiRemoteID.NUNCHUK_DPAD_DOWN: DPAD_DOWN; case WiiRemoteID.NUNCHUK_DPAD_LEFT: DPAD_LEFT; case WiiRemoteID.NUNCHUK_DPAD_RIGHT: DPAD_RIGHT; - default: NONE; + default: + if(rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if(rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if(rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if(rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + NONE; } } @@ -127,6 +141,14 @@ class WiiRemoteMapping extends FlxGamepadMapping case RIGHT_TRIGGER: WiiRemoteID.CLASSIC_R; case EXTRA_0: WiiRemoteID.CLASSIC_ONE; case EXTRA_1: WiiRemoteID.CLASSIC_TWO; + case LEFT_STICK_DIGITAL_UP: WiiRemoteID.LEFT_ANALOG_STICK.rawUp; + case LEFT_STICK_DIGITAL_DOWN: WiiRemoteID.LEFT_ANALOG_STICK.rawDown; + case LEFT_STICK_DIGITAL_LEFT: WiiRemoteID.LEFT_ANALOG_STICK.rawLeft; + case LEFT_STICK_DIGITAL_RIGHT: WiiRemoteID.LEFT_ANALOG_STICK.rawRight; + case RIGHT_STICK_DIGITAL_UP: WiiRemoteID.RIGHT_ANALOG_STICK.rawUp; + case RIGHT_STICK_DIGITAL_DOWN: WiiRemoteID.RIGHT_ANALOG_STICK.rawDown; + case RIGHT_STICK_DIGITAL_LEFT: WiiRemoteID.RIGHT_ANALOG_STICK.rawLeft; + case RIGHT_STICK_DIGITAL_RIGHT: WiiRemoteID.RIGHT_ANALOG_STICK.rawRight; default: -1; } } @@ -150,6 +172,10 @@ class WiiRemoteMapping extends FlxGamepadMapping case DPAD_RIGHT: WiiRemoteID.NUNCHUK_DPAD_RIGHT; case TILT_PITCH: WiiRemoteID.NUNCHUK_TILT_PITCH; case TILT_ROLL: WiiRemoteID.NUNCHUK_TILT_ROLL; + case LEFT_STICK_DIGITAL_UP: WiiRemoteID.LEFT_ANALOG_STICK.rawUp; + case LEFT_STICK_DIGITAL_DOWN: WiiRemoteID.LEFT_ANALOG_STICK.rawDown; + case LEFT_STICK_DIGITAL_LEFT: WiiRemoteID.LEFT_ANALOG_STICK.rawLeft; + case LEFT_STICK_DIGITAL_RIGHT: WiiRemoteID.LEFT_ANALOG_STICK.rawRight; default: -1; } } diff --git a/flixel/input/gamepad/mappings/XInputMapping.hx b/flixel/input/gamepad/mappings/XInputMapping.hx index 95dd3f6739..eae43f7b69 100644 --- a/flixel/input/gamepad/mappings/XInputMapping.hx +++ b/flixel/input/gamepad/mappings/XInputMapping.hx @@ -49,7 +49,16 @@ class XInputMapping extends FlxGamepadMapping case XInputID.DPAD_DOWN: DPAD_DOWN; case XInputID.DPAD_LEFT: DPAD_LEFT; case XInputID.DPAD_RIGHT: DPAD_RIGHT; - default: NONE; + default: + if(rawID == XInputID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if(rawID == XInputID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if(rawID == XInputID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if(rawID == XInputID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + if(rawID == XInputID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; + if(rawID == XInputID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; + if(rawID == XInputID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; + if(rawID == XInputID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; + NONE; } } @@ -78,6 +87,14 @@ class XInputMapping extends FlxGamepadMapping case LEFT_TRIGGER_FAKE: LEFT_TRIGGER_FAKE; case RIGHT_TRIGGER_FAKE: RIGHT_TRIGGER_FAKE; #end + case LEFT_STICK_DIGITAL_UP: XInputID.LEFT_ANALOG_STICK.rawUp; + case LEFT_STICK_DIGITAL_DOWN: XInputID.LEFT_ANALOG_STICK.rawDown; + case LEFT_STICK_DIGITAL_LEFT: XInputID.LEFT_ANALOG_STICK.rawLeft; + case LEFT_STICK_DIGITAL_RIGHT: XInputID.LEFT_ANALOG_STICK.rawRight; + case RIGHT_STICK_DIGITAL_UP: XInputID.RIGHT_ANALOG_STICK.rawUp; + case RIGHT_STICK_DIGITAL_DOWN: XInputID.RIGHT_ANALOG_STICK.rawDown; + case RIGHT_STICK_DIGITAL_LEFT: XInputID.RIGHT_ANALOG_STICK.rawLeft; + case RIGHT_STICK_DIGITAL_RIGHT: XInputID.RIGHT_ANALOG_STICK.rawRight; default: -1; } } From 4d1dd74ad672e1043029a6333f709f888576187b Mon Sep 17 00:00:00 2001 From: Lars Doucet Date: Fri, 26 Feb 2016 11:48:45 -0600 Subject: [PATCH 2/9] quick fix --- flixel/input/gamepad/FlxGamepadManager.hx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flixel/input/gamepad/FlxGamepadManager.hx b/flixel/input/gamepad/FlxGamepadManager.hx index c076d9d72d..f6797d15ba 100644 --- a/flixel/input/gamepad/FlxGamepadManager.hx +++ b/flixel/input/gamepad/FlxGamepadManager.hx @@ -460,7 +460,7 @@ class FlxGamepadManager implements IFlxInputManager // returns (0,1) so we normalize to (0, 1) for legacy target only newAxis[i] = (newAxis[i] + 1) / 2; } - else + else if(isForStick) { var newVal = newAxis[i]; var oldVal = oldAxis[i]; From 3ded9b2fc17108e870ef39b7cc748c880a680d67 Mon Sep 17 00:00:00 2001 From: Lars Doucet Date: Fri, 26 Feb 2016 13:41:02 -0600 Subject: [PATCH 3/9] style fixes / cleanup --- flixel/input/gamepad/FlxGamepad.hx | 21 ++++++------- flixel/input/gamepad/FlxGamepadButton.hx | 10 +++---- flixel/input/gamepad/FlxGamepadInputID.hx | 36 ++++++++++++++--------- flixel/input/gamepad/FlxGamepadManager.hx | 6 ++-- flixel/input/gamepad/id/LogitechID.hx | 4 +-- 5 files changed, 40 insertions(+), 37 deletions(-) diff --git a/flixel/input/gamepad/FlxGamepad.hx b/flixel/input/gamepad/FlxGamepad.hx index 6d5c85d317..7e18523069 100644 --- a/flixel/input/gamepad/FlxGamepad.hx +++ b/flixel/input/gamepad/FlxGamepad.hx @@ -269,7 +269,7 @@ class FlxGamepad implements IFlxDestroyable manager = null; #if FLX_JOYSTICK_API - hat = FlxDestroyUtil.put(hat); + hat = FlxDestroyUtil.put(hat); ball = FlxDestroyUtil.put(ball); hat = null; @@ -614,31 +614,28 @@ class FlxGamepad implements IFlxDestroyable return getAnalogYAxisValue(Stick); } - @:allow(flixel.input.gamepad.FlxGamepadManager) - private function handleAxisMove(axis:Int, newVal:Float, oldVal:Float) + private function handleAxisMove(axis:Int, newValue:Float, oldValue:Float) { - newVal = applyAxisFlip(newVal, axis); - oldVal = applyAxisFlip(oldVal, axis); + newValue = applyAxisFlip(newValue, axis); + oldValue = applyAxisFlip(oldValue, axis); //check to see if we should send digital inputs as well as analog - var stick:FlxGamepadAnalogStick = this.getAnalogStickByAxis(axis); + var stick:FlxGamepadAnalogStick = getAnalogStickByAxis(axis); if (stick.mode == ONLY_DIGITAL || stick.mode == BOTH) { var neg = stick.digitalThreshold * -1; var pos = stick.digitalThreshold; var digitalButton = -1; - trace("axis(" + axis + ") val = " + newVal); - //pressed/released for digital LEFT/UP - if (newVal < neg && oldVal >= neg) + if (newValue < neg && oldValue >= neg) { if (axis == stick.x) digitalButton = stick.rawLeft; else if (axis == stick.y) digitalButton = stick.rawUp; var btn = getButton(digitalButton); if (btn != null) btn.press(); } - else if (newVal >= neg && oldVal < neg) + else if (newValue >= neg && oldValue < neg) { if (axis == stick.x) digitalButton = stick.rawLeft; else if (axis == stick.y) digitalButton = stick.rawUp; @@ -647,14 +644,14 @@ class FlxGamepad implements IFlxDestroyable } //pressed/released for digital RIGHT/DOWN - if (newVal > pos && oldVal <= pos) + if (newValue > pos && oldValue <= pos) { if (axis == stick.x) digitalButton = stick.rawRight; else if (axis == stick.y) digitalButton = stick.rawDown; var btn = getButton(digitalButton); if (btn != null) btn.press(); } - else if (newVal <= pos && oldVal > pos) + else if (newValue <= pos && oldValue > pos) { if (axis == stick.x) digitalButton = stick.rawRight; else if (axis == stick.y) digitalButton = stick.rawDown; diff --git a/flixel/input/gamepad/FlxGamepadButton.hx b/flixel/input/gamepad/FlxGamepadButton.hx index 3f9a705739..c8dbd9c020 100644 --- a/flixel/input/gamepad/FlxGamepadButton.hx +++ b/flixel/input/gamepad/FlxGamepadButton.hx @@ -7,6 +7,11 @@ class FlxGamepadButton extends FlxInput #if flash private var _pressed:Bool = false; + /** + * Optional analog value, so we can check when the value has changed from the last frame + */ + public var value:Float = 0; + override public function release():Void { // simulate button onUp event which does not exist on flash @@ -31,9 +36,4 @@ class FlxGamepadButton extends FlxInput super.press(); } #end - - /** - * Optional analog value, so we can check when the value has changed from the last frame - */ - public var value:Float = 0; } \ No newline at end of file diff --git a/flixel/input/gamepad/FlxGamepadInputID.hx b/flixel/input/gamepad/FlxGamepadInputID.hx index 74658377cc..b872abf2a6 100644 --- a/flixel/input/gamepad/FlxGamepadInputID.hx +++ b/flixel/input/gamepad/FlxGamepadInputID.hx @@ -81,24 +81,32 @@ abstract FlxGamepadInputID(Int) from Int to Int /**for a mouse-like input such as touch or IR camera. Vertical axis.**/ var POINTER_Y = 29; - var LEFT_STICK_DIGITAL_UP = 30; - var LEFT_STICK_DIGITAL_RIGHT = 31; - var LEFT_STICK_DIGITAL_DOWN = 32; - var LEFT_STICK_DIGITAL_LEFT = 33; - - var RIGHT_STICK_DIGITAL_UP = 34; - var RIGHT_STICK_DIGITAL_RIGHT = 35; - var RIGHT_STICK_DIGITAL_DOWN = 36; - var RIGHT_STICK_DIGITAL_LEFT = 37; - /**an extra digital button that doesn't fit cleanly into the universal template**/ - var EXTRA_0 = 46; + var EXTRA_0 = 30; /**an extra digital button that doesn't fit cleanly into the universal template**/ - var EXTRA_1 = 47; + var EXTRA_1 = 31; /**an extra digital button that doesn't fit cleanly into the universal template**/ - var EXTRA_2 = 48; + var EXTRA_2 = 32; /**an extra digital button that doesn't fit cleanly into the universal template**/ - var EXTRA_3 = 49; + var EXTRA_3 = 33; + + /**left analog stick as a dpad, pushed up**/ + var LEFT_STICK_DIGITAL_UP = 34; + /**left analog stick as a dpad, pushed right**/ + var LEFT_STICK_DIGITAL_RIGHT = 35; + /**left analog stick as a dpad, pushed down**/ + var LEFT_STICK_DIGITAL_DOWN = 36; + /**left analog stick as a dpad, pushed left**/ + var LEFT_STICK_DIGITAL_LEFT = 37; + + /**left analog stick as a dpad, pushed up**/ + var RIGHT_STICK_DIGITAL_UP = 38; + /**left analog stick as a dpad, pushed right**/ + var RIGHT_STICK_DIGITAL_RIGHT = 39; + /**left analog stick as a dpad, pushed down**/ + var RIGHT_STICK_DIGITAL_DOWN = 40; + /**left analog stick as a dpad, pushed left**/ + var RIGHT_STICK_DIGITAL_LEFT = 41; @:from public static inline function fromString(s:String) diff --git a/flixel/input/gamepad/FlxGamepadManager.hx b/flixel/input/gamepad/FlxGamepadManager.hx index f6797d15ba..4befa6031d 100644 --- a/flixel/input/gamepad/FlxGamepadManager.hx +++ b/flixel/input/gamepad/FlxGamepadManager.hx @@ -460,11 +460,9 @@ class FlxGamepadManager implements IFlxInputManager // returns (0,1) so we normalize to (0, 1) for legacy target only newAxis[i] = (newAxis[i] + 1) / 2; } - else if(isForStick) + else if (isForStick) { - var newVal = newAxis[i]; - var oldVal = oldAxis[i]; - gamepad.handleAxisMove(i, newVal, oldVal); + gamepad.handleAxisMove(i, newAxis[i], oldAxis[i]); } } diff --git a/flixel/input/gamepad/id/LogitechID.hx b/flixel/input/gamepad/id/LogitechID.hx index 2b458fbef2..b084d85e91 100644 --- a/flixel/input/gamepad/id/LogitechID.hx +++ b/flixel/input/gamepad/id/LogitechID.hx @@ -54,7 +54,7 @@ class LogitechID #end -public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1, {up:24, down:25, left:26, right:27}); -public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3, {up:28, down:29, left:30, right:31}); + public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1, {up:24, down:25, left:26, right:27}); + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3, {up:28, down:29, left:30, right:31}); } \ No newline at end of file From f72cace32a07b9c648b4cfba089c3c53136bceee Mon Sep 17 00:00:00 2001 From: Lars Doucet Date: Fri, 26 Feb 2016 13:51:29 -0600 Subject: [PATCH 4/9] this needs to be outside the #if flash conditional, that's probably why I had it at the bottom before --- flixel/input/gamepad/FlxGamepadButton.hx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flixel/input/gamepad/FlxGamepadButton.hx b/flixel/input/gamepad/FlxGamepadButton.hx index c8dbd9c020..9af83df456 100644 --- a/flixel/input/gamepad/FlxGamepadButton.hx +++ b/flixel/input/gamepad/FlxGamepadButton.hx @@ -4,14 +4,14 @@ import flixel.input.FlxInput; class FlxGamepadButton extends FlxInput { - #if flash - private var _pressed:Bool = false; - /** * Optional analog value, so we can check when the value has changed from the last frame */ public var value:Float = 0; + #if flash + private var _pressed:Bool = false; + override public function release():Void { // simulate button onUp event which does not exist on flash From ffe683815c985c2aa60c1487bc4ec730b0f54eee Mon Sep 17 00:00:00 2001 From: Lars Doucet Date: Fri, 26 Feb 2016 14:37:44 -0600 Subject: [PATCH 5/9] minor cleanup --- flixel/input/gamepad/FlxGamepad.hx | 99 ++++++++++++++---------------- 1 file changed, 47 insertions(+), 52 deletions(-) diff --git a/flixel/input/gamepad/FlxGamepad.hx b/flixel/input/gamepad/FlxGamepad.hx index 7e18523069..fdf08d557d 100644 --- a/flixel/input/gamepad/FlxGamepad.hx +++ b/flixel/input/gamepad/FlxGamepad.hx @@ -613,58 +613,6 @@ class FlxGamepad implements IFlxDestroyable { return getAnalogYAxisValue(Stick); } - - private function handleAxisMove(axis:Int, newValue:Float, oldValue:Float) - { - newValue = applyAxisFlip(newValue, axis); - oldValue = applyAxisFlip(oldValue, axis); - - //check to see if we should send digital inputs as well as analog - var stick:FlxGamepadAnalogStick = getAnalogStickByAxis(axis); - if (stick.mode == ONLY_DIGITAL || stick.mode == BOTH) - { - var neg = stick.digitalThreshold * -1; - var pos = stick.digitalThreshold; - var digitalButton = -1; - - //pressed/released for digital LEFT/UP - if (newValue < neg && oldValue >= neg) - { - if (axis == stick.x) digitalButton = stick.rawLeft; - else if (axis == stick.y) digitalButton = stick.rawUp; - var btn = getButton(digitalButton); - if (btn != null) btn.press(); - } - else if (newValue >= neg && oldValue < neg) - { - if (axis == stick.x) digitalButton = stick.rawLeft; - else if (axis == stick.y) digitalButton = stick.rawUp; - var btn = getButton(digitalButton); - if (btn != null) btn.release(); - } - - //pressed/released for digital RIGHT/DOWN - if (newValue > pos && oldValue <= pos) - { - if (axis == stick.x) digitalButton = stick.rawRight; - else if (axis == stick.y) digitalButton = stick.rawDown; - var btn = getButton(digitalButton); - if (btn != null) btn.press(); - } - else if (newValue <= pos && oldValue > pos) - { - if (axis == stick.x) digitalButton = stick.rawRight; - else if (axis == stick.y) digitalButton = stick.rawDown; - var btn = getButton(digitalButton); - if (btn != null) btn.release(); - } - - if (stick.mode == ONLY_DIGITAL) - { - //still haven't figured out how to suppress the analog inputs properly. Oh well. - } - } - } /** * Whether any buttons have the specified input state. @@ -790,6 +738,53 @@ class FlxGamepad implements IFlxDestroyable return 0; } + private function handleAxisMove(axis:Int, newValue:Float, oldValue:Float) + { + newValue = applyAxisFlip(newValue, axis); + oldValue = applyAxisFlip(oldValue, axis); + + //check to see if we should send digital inputs as well as analog + var stick:FlxGamepadAnalogStick = getAnalogStickByAxis(axis); + if (stick.mode == ONLY_DIGITAL || stick.mode == BOTH) + { + handleAxisMoveSub(stick, axis, newValue, oldValue, 1.0); + handleAxisMoveSub(stick, axis, newValue, oldValue, -1.0); + + if (stick.mode == ONLY_DIGITAL) + { + //still haven't figured out how to suppress the analog inputs properly. Oh well. + } + } + } + + private function handleAxisMoveSub(stick:FlxGamepadAnalogStick, axis:Int, value:Float, oldValue:Float, sign:Float=1.0) + { + var digitalButton = -1; + + if (axis == stick.x) + { + digitalButton = (sign < 0) ? stick.rawLeft : stick.rawRight; + } + else if (axis == stick.y) + { + digitalButton = (sign < 0) ? stick.rawUp : stick.rawDown; + } + + var threshold = stick.digitalThreshold; + var valueSign = value * sign; + var oldValueSign = oldValue * sign; + + if (valueSign > threshold && oldValueSign <= threshold) + { + var btn = getButton(digitalButton); + if (btn != null) btn.press(); + } + else if (valueSign <= threshold && oldValueSign > threshold) + { + var btn = getButton(digitalButton); + if (btn != null) btn.release(); + } + } private function createMappingForModel(model:FlxGamepadModel):FlxGamepadMapping { return switch (model) From 1c9febd593d53e6e78a2574e84ceffb00a4f66cc Mon Sep 17 00:00:00 2001 From: Lars Doucet Date: Sat, 27 Feb 2016 12:16:14 -0600 Subject: [PATCH 6/9] fix crash on legacy --- flixel/input/gamepad/FlxGamepadManager.hx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flixel/input/gamepad/FlxGamepadManager.hx b/flixel/input/gamepad/FlxGamepadManager.hx index 4befa6031d..89e2a6c961 100644 --- a/flixel/input/gamepad/FlxGamepadManager.hx +++ b/flixel/input/gamepad/FlxGamepadManager.hx @@ -462,7 +462,7 @@ class FlxGamepadManager implements IFlxInputManager } else if (isForStick) { - gamepad.handleAxisMove(i, newAxis[i], oldAxis[i]); + gamepad.handleAxisMove(i, newAxis[i], oldAxis[i] != null ? oldAxis[i] : 0); } } From dc9a67465d480934127e48cdc41e5ccfe4961578 Mon Sep 17 00:00:00 2001 From: Lars Doucet Date: Sat, 27 Feb 2016 12:21:47 -0600 Subject: [PATCH 7/9] fix ifs --- .../input/gamepad/mappings/LogitechMapping.hx | 16 ++++++------- .../mappings/MayflashWiiRemoteMapping.hx | 24 +++++++++---------- flixel/input/gamepad/mappings/OUYAMapping.hx | 16 ++++++------- flixel/input/gamepad/mappings/PS4Mapping.hx | 16 ++++++------- .../input/gamepad/mappings/PSVitaMapping.hx | 16 ++++++------- .../gamepad/mappings/WiiRemoteMapping.hx | 24 +++++++++---------- .../input/gamepad/mappings/XInputMapping.hx | 16 ++++++------- 7 files changed, 64 insertions(+), 64 deletions(-) diff --git a/flixel/input/gamepad/mappings/LogitechMapping.hx b/flixel/input/gamepad/mappings/LogitechMapping.hx index 3833bfe7a8..e079fd954c 100644 --- a/flixel/input/gamepad/mappings/LogitechMapping.hx +++ b/flixel/input/gamepad/mappings/LogitechMapping.hx @@ -42,14 +42,14 @@ class LogitechMapping extends FlxGamepadMapping case LogitechID.DPAD_UP: DPAD_UP; case LogitechID.LOGITECH: GUIDE; default: - if(rawID == LogitechID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; - if(rawID == LogitechID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; - if(rawID == LogitechID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; - if(rawID == LogitechID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; - if(rawID == LogitechID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; - if(rawID == LogitechID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; - if(rawID == LogitechID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; - if(rawID == LogitechID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; + if (rawID == LogitechID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if (rawID == LogitechID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if (rawID == LogitechID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if (rawID == LogitechID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + if (rawID == LogitechID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; + if (rawID == LogitechID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; + if (rawID == LogitechID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; + if (rawID == LogitechID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; NONE; } } diff --git a/flixel/input/gamepad/mappings/MayflashWiiRemoteMapping.hx b/flixel/input/gamepad/mappings/MayflashWiiRemoteMapping.hx index 632e032d4d..785a1bb07b 100644 --- a/flixel/input/gamepad/mappings/MayflashWiiRemoteMapping.hx +++ b/flixel/input/gamepad/mappings/MayflashWiiRemoteMapping.hx @@ -53,14 +53,14 @@ class MayflashWiiRemoteMapping extends FlxGamepadMapping case MayflashWiiRemoteID.CLASSIC_DPAD_LEFT: DPAD_LEFT; case MayflashWiiRemoteID.CLASSIC_DPAD_RIGHT: DPAD_RIGHT; default: - if(rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; - if(rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; - if(rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; - if(rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; - if(rawID == MayflashWiiRemoteID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; - if(rawID == MayflashWiiRemoteID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; - if(rawID == MayflashWiiRemoteID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; - if(rawID == MayflashWiiRemoteID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; + if (rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if (rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if (rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if (rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + if (rawID == MayflashWiiRemoteID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; + if (rawID == MayflashWiiRemoteID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; + if (rawID == MayflashWiiRemoteID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; + if (rawID == MayflashWiiRemoteID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; NONE; } } @@ -83,10 +83,10 @@ class MayflashWiiRemoteMapping extends FlxGamepadMapping case MayflashWiiRemoteID.NUNCHUK_DPAD_LEFT: DPAD_LEFT; case MayflashWiiRemoteID.NUNCHUK_DPAD_RIGHT: DPAD_RIGHT; default: - if(rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; - if(rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; - if(rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; - if(rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + if (rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if (rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if (rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if (rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; NONE; } } diff --git a/flixel/input/gamepad/mappings/OUYAMapping.hx b/flixel/input/gamepad/mappings/OUYAMapping.hx index 865de1932e..a23ac4d2a6 100644 --- a/flixel/input/gamepad/mappings/OUYAMapping.hx +++ b/flixel/input/gamepad/mappings/OUYAMapping.hx @@ -40,14 +40,14 @@ class OUYAMapping extends FlxGamepadMapping case OUYAID.DPAD_LEFT: DPAD_LEFT; case OUYAID.DPAD_RIGHT: DPAD_RIGHT; default: - if(rawID == OUYAID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; - if(rawID == OUYAID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; - if(rawID == OUYAID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; - if(rawID == OUYAID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; - if(rawID == OUYAID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; - if(rawID == OUYAID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; - if(rawID == OUYAID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; - if(rawID == OUYAID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; + if (rawID == OUYAID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if (rawID == OUYAID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if (rawID == OUYAID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if (rawID == OUYAID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + if (rawID == OUYAID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; + if (rawID == OUYAID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; + if (rawID == OUYAID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; + if (rawID == OUYAID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; NONE; } } diff --git a/flixel/input/gamepad/mappings/PS4Mapping.hx b/flixel/input/gamepad/mappings/PS4Mapping.hx index 816b0a9194..96bf290d0f 100644 --- a/flixel/input/gamepad/mappings/PS4Mapping.hx +++ b/flixel/input/gamepad/mappings/PS4Mapping.hx @@ -43,14 +43,14 @@ class PS4Mapping extends FlxGamepadMapping case PS4ID.DPAD_LEFT: DPAD_LEFT; case PS4ID.DPAD_RIGHT: DPAD_RIGHT; default: - if(rawID == PS4ID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; - if(rawID == PS4ID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; - if(rawID == PS4ID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; - if(rawID == PS4ID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; - if(rawID == PS4ID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; - if(rawID == PS4ID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; - if(rawID == PS4ID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; - if(rawID == PS4ID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; + if (rawID == PS4ID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if (rawID == PS4ID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if (rawID == PS4ID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if (rawID == PS4ID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + if (rawID == PS4ID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; + if (rawID == PS4ID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; + if (rawID == PS4ID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; + if (rawID == PS4ID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; NONE; } } diff --git a/flixel/input/gamepad/mappings/PSVitaMapping.hx b/flixel/input/gamepad/mappings/PSVitaMapping.hx index 5e1b93a5bc..d53ca8df13 100644 --- a/flixel/input/gamepad/mappings/PSVitaMapping.hx +++ b/flixel/input/gamepad/mappings/PSVitaMapping.hx @@ -29,14 +29,14 @@ class PSVitaMapping extends FlxGamepadMapping case PSVitaID.DPAD_LEFT: DPAD_LEFT; case PSVitaID.DPAD_RIGHT: DPAD_RIGHT; default: - if(rawID == PSVitaID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; - if(rawID == PSVitaID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; - if(rawID == PSVitaID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; - if(rawID == PSVitaID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; - if(rawID == PSVitaID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; - if(rawID == PSVitaID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; - if(rawID == PSVitaID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; - if(rawID == PSVitaID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; + if (rawID == PSVitaID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if (rawID == PSVitaID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if (rawID == PSVitaID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if (rawID == PSVitaID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + if (rawID == PSVitaID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; + if (rawID == PSVitaID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; + if (rawID == PSVitaID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; + if (rawID == PSVitaID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; NONE; } } diff --git a/flixel/input/gamepad/mappings/WiiRemoteMapping.hx b/flixel/input/gamepad/mappings/WiiRemoteMapping.hx index eff24495ab..36f9622172 100644 --- a/flixel/input/gamepad/mappings/WiiRemoteMapping.hx +++ b/flixel/input/gamepad/mappings/WiiRemoteMapping.hx @@ -53,14 +53,14 @@ class WiiRemoteMapping extends FlxGamepadMapping case WiiRemoteID.CLASSIC_ONE: EXTRA_0; case WiiRemoteID.CLASSIC_TWO: EXTRA_1; default: - if(rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; - if(rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; - if(rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; - if(rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; - if(rawID == WiiRemoteID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; - if(rawID == WiiRemoteID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; - if(rawID == WiiRemoteID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; - if(rawID == WiiRemoteID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; + if (rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if (rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if (rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if (rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + if (rawID == WiiRemoteID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; + if (rawID == WiiRemoteID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; + if (rawID == WiiRemoteID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; + if (rawID == WiiRemoteID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; NONE; } } @@ -83,10 +83,10 @@ class WiiRemoteMapping extends FlxGamepadMapping case WiiRemoteID.NUNCHUK_DPAD_LEFT: DPAD_LEFT; case WiiRemoteID.NUNCHUK_DPAD_RIGHT: DPAD_RIGHT; default: - if(rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; - if(rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; - if(rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; - if(rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + if (rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if (rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if (rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if (rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; NONE; } } diff --git a/flixel/input/gamepad/mappings/XInputMapping.hx b/flixel/input/gamepad/mappings/XInputMapping.hx index eae43f7b69..09c1ee775b 100644 --- a/flixel/input/gamepad/mappings/XInputMapping.hx +++ b/flixel/input/gamepad/mappings/XInputMapping.hx @@ -50,14 +50,14 @@ class XInputMapping extends FlxGamepadMapping case XInputID.DPAD_LEFT: DPAD_LEFT; case XInputID.DPAD_RIGHT: DPAD_RIGHT; default: - if(rawID == XInputID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; - if(rawID == XInputID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; - if(rawID == XInputID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; - if(rawID == XInputID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; - if(rawID == XInputID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; - if(rawID == XInputID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; - if(rawID == XInputID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; - if(rawID == XInputID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; + if (rawID == XInputID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if (rawID == XInputID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if (rawID == XInputID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if (rawID == XInputID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + if (rawID == XInputID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; + if (rawID == XInputID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; + if (rawID == XInputID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; + if (rawID == XInputID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; NONE; } } From 08aa03dc53ab480bb237c0a7b948dcd193b225e7 Mon Sep 17 00:00:00 2001 From: Lars Doucet Date: Sat, 27 Feb 2016 12:32:04 -0600 Subject: [PATCH 8/9] better "null" check --- flixel/input/gamepad/FlxGamepadManager.hx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flixel/input/gamepad/FlxGamepadManager.hx b/flixel/input/gamepad/FlxGamepadManager.hx index 89e2a6c961..e68a3c35cf 100644 --- a/flixel/input/gamepad/FlxGamepadManager.hx +++ b/flixel/input/gamepad/FlxGamepadManager.hx @@ -462,7 +462,7 @@ class FlxGamepadManager implements IFlxInputManager } else if (isForStick) { - gamepad.handleAxisMove(i, newAxis[i], oldAxis[i] != null ? oldAxis[i] : 0); + gamepad.handleAxisMove(i, newAxis[i], (i > 0 && i < oldAxis.length) ? oldAxis[i] : 0); } } From 1c9ca2e5c90f98b66b262234eb7a6ae7891b073b Mon Sep 17 00:00:00 2001 From: Lars Doucet Date: Sat, 27 Feb 2016 12:33:47 -0600 Subject: [PATCH 9/9] d'oh --- flixel/input/gamepad/FlxGamepadManager.hx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flixel/input/gamepad/FlxGamepadManager.hx b/flixel/input/gamepad/FlxGamepadManager.hx index e68a3c35cf..bc8144ad98 100644 --- a/flixel/input/gamepad/FlxGamepadManager.hx +++ b/flixel/input/gamepad/FlxGamepadManager.hx @@ -462,7 +462,7 @@ class FlxGamepadManager implements IFlxInputManager } else if (isForStick) { - gamepad.handleAxisMove(i, newAxis[i], (i > 0 && i < oldAxis.length) ? oldAxis[i] : 0); + gamepad.handleAxisMove(i, newAxis[i], (i >= 0 && i < oldAxis.length) ? oldAxis[i] : 0); } }