MBHaxe/src/Gamepad.hx
2023-02-11 02:48:07 -05:00

108 lines
No EOL
2.4 KiB
Haxe

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<String>) {
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<String>) {
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<String>) {
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];
}
}