package src; import hxd.Pad; import src.Console; class Gamepad { public static var gamepad:Pad = Pad.createDummy(); public static function init() { Pad.wait(onPad); } public static function onPad(pad: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) { switch (name) { case "start": return gamepad.config.start; case "ranalogY": return gamepad.config.ranalogY; case "ranalogX": return gamepad.config.ranalogX; case "ranalogClick": return gamepad.config.ranalogClick; case "dpadUp": return gamepad.config.dpadUp; case "dpadRight": return gamepad.config.dpadRight; case "dpadLeft": return gamepad.config.dpadLeft; case "dpadDown": return gamepad.config.dpadDown; case "back": return gamepad.config.back; case "analogY": return gamepad.config.analogY; case "analogX": return gamepad.config.analogX; case "analogClick": return gamepad.config.analogClick; case "Y": return gamepad.config.Y; case "X": return gamepad.config.X; case "RT": return gamepad.config.RT; case "RB": return gamepad.config.RB; case "LT": return gamepad.config.LT; case "LB": return gamepad.config.LB; case "B": return gamepad.config.B; case "A": return gamepad.config.A; } return -1; } public static function isDown(buttons:Array) { for (button in buttons) { var buttonId = getId(button); if (buttonId < 0 || buttonId > gamepad.buttons.length) continue; if (gamepad.isDown(buttonId)) return true; } return false; } public static function isPressed(buttons:Array) { for (button in buttons) { var buttonId = getId(button); if (buttonId < 0 || buttonId > gamepad.buttons.length) continue; if (gamepad.isPressed(buttonId)) return true; } return false; } public static function isReleased(buttons:Array) { for (button in buttons) { 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) { var axisId = getId(axis); if (axisId < 0 || axisId > gamepad.values.length) return 0.0; return gamepad.values[axisId]; } }