Fix js crashing on mobile, respect deadzone and make configurable

This commit is contained in:
Terry Hearst 2023-02-11 15:53:45 -05:00
parent dc9ee0a60c
commit 5eb8e39b82
4 changed files with 18 additions and 8 deletions

View file

@ -163,7 +163,7 @@ class CameraController extends Object {
var cameraPitchDelta = (Key.isDown(Settings.controlsSettings.camBackward) ? 1 : 0)
- (Key.isDown(Settings.controlsSettings.camForward) ? 1 : 0)
- Gamepad.getAxis(Settings.gamepadSettings.cameraYAxis);
+ Gamepad.getAxis(Settings.gamepadSettings.cameraYAxis);
if (Settings.gamepadSettings.invertYAxis)
cameraPitchDelta = -cameraPitchDelta;
nextCameraPitch += 0.75 * 5 * cameraPitchDelta * dt * Settings.gamepadSettings.cameraSensitivity;

View file

@ -2,6 +2,7 @@ package src;
import hxd.Pad;
import src.Console;
import src.Settings;
class Gamepad {
public static var gamepad:Pad = Pad.createDummy();
@ -12,7 +13,7 @@ class Gamepad {
public static function onPad(pad:Pad) {
Console.log("Gamepad found");
pad.axisDeadZone = 0.2;
pad.axisDeadZone = Settings.gamepadSettings.axisDeadzone;
pad.onDisconnect = function() {
Console.log("Gamepad disconnected");
gamepad = Pad.createDummy();
@ -100,9 +101,16 @@ class Gamepad {
}
public static function getAxis(axis:String) {
var axisId = getId(axis);
if (axisId < 0 || axisId > gamepad.values.length)
return 0.0;
return gamepad.values[axisId];
switch (axis) {
case "analogX":
return gamepad.xAxis;
case "analogY":
return gamepad.yAxis;
case "ranalogX":
return gamepad.rxAxis;
case "ranalogY":
return gamepad.ryAxis;
}
return 0.0;
}
}
}

View file

@ -1687,7 +1687,7 @@ class Marble extends GameObject {
var move = new Move();
move.d = new Vector();
if (this.controllable && this.mode != Finish && !MarbleGame.instance.paused && !this.level.isWatching) {
move.d.x = -Gamepad.getAxis(Settings.gamepadSettings.moveYAxis);
move.d.x = Gamepad.getAxis(Settings.gamepadSettings.moveYAxis);
move.d.y = -Gamepad.getAxis(Settings.gamepadSettings.moveXAxis);
if (Key.isDown(Settings.controlsSettings.forward)) {
move.d.x -= 1;

View file

@ -85,6 +85,7 @@ typedef GamepadSettings = {
var cameraSensitivity:Float;
var invertXAxis:Bool;
var invertYAxis:Bool;
var axisDeadzone:Float;
var respawn:Array<String>;
var blast:Array<String>;
}
@ -165,6 +166,7 @@ class Settings {
cameraSensitivity: 1.0,
invertXAxis: false,
invertYAxis: false,
axisDeadzone: 0.15,
respawn: ["back"],
blast: ["X", "LB", "RB"]
}