From 98662dfd3a735369d144aacecf222b2efc39d16c Mon Sep 17 00:00:00 2001 From: Terry Hearst Date: Sat, 11 Feb 2023 02:48:07 -0500 Subject: [PATCH] Fixes for js and probably other cases too --- src/Gamepad.hx | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/Gamepad.hx b/src/Gamepad.hx index 88661a72..98bcd227 100644 --- a/src/Gamepad.hx +++ b/src/Gamepad.hx @@ -1,6 +1,7 @@ package src; import hxd.Pad; +import src.Console; class Gamepad { public static var gamepad:Pad = Pad.createDummy(); @@ -10,10 +11,13 @@ class Gamepad { } public static function onPad(pad:Pad) { - gamepad = pad; + Console.log("Gamepad found"); + pad.axisDeadZone = 0.2; pad.onDisconnect = function() { + Console.log("Gamepad disconnected"); gamepad = Pad.createDummy(); } + gamepad = pad; } public static function getId(name:String) { @@ -64,7 +68,10 @@ class Gamepad { public static function isDown(buttons:Array) { for (button in buttons) { - if (gamepad.isDown(getId(button))) + var buttonId = getId(button); + if (buttonId < 0 || buttonId > gamepad.buttons.length) + continue; + if (gamepad.isDown(buttonId)) return true; } return false; @@ -72,7 +79,10 @@ class Gamepad { public static function isPressed(buttons:Array) { for (button in buttons) { - if (gamepad.isPressed(getId(button))) + var buttonId = getId(button); + if (buttonId < 0 || buttonId > gamepad.buttons.length) + continue; + if (gamepad.isPressed(buttonId)) return true; } return false; @@ -80,13 +90,19 @@ class Gamepad { public static function isReleased(buttons:Array) { for (button in buttons) { - if (gamepad.isReleased(getId(button))) + var buttonId = getId(button); + if (buttonId < 0 || buttonId > gamepad.buttons.length) + continue; + if (gamepad.isReleased(buttonId)) return true; } return false; } public static function getAxis(axis:String) { - return gamepad.values[getId(axis)]; + var axisId = getId(axis); + if (axisId < 0 || axisId > gamepad.values.length) + return 0.0; + return gamepad.values[axisId]; } } \ No newline at end of file