From a4eac2173a5126f9c2e3d5ebf0994c0593fded1e Mon Sep 17 00:00:00 2001 From: minjaesong Date: Tue, 9 Apr 2019 23:42:10 +0900 Subject: [PATCH] controller getaxisraw, calibration on startup --- src/net/torvald/terrarum/AppLoader.java | 22 +++++++++---------- .../controller/GdxControllerAdapter.kt | 2 +- .../terrarum/controller/TerrarumController.kt | 22 ++++++++++++++++++- .../controller/XinputControllerAdapter.kt | 2 +- .../gameactors/ActorHumanoid.kt | 6 ----- .../graphics/fonts/hebrew_rtl_variable.psd | 3 +++ 6 files changed, 36 insertions(+), 21 deletions(-) create mode 100644 work_files/graphics/fonts/hebrew_rtl_variable.psd diff --git a/src/net/torvald/terrarum/AppLoader.java b/src/net/torvald/terrarum/AppLoader.java index eec8e6b2b..e47587f47 100644 --- a/src/net/torvald/terrarum/AppLoader.java +++ b/src/net/torvald/terrarum/AppLoader.java @@ -183,12 +183,6 @@ public class AppLoader implements ApplicationListener { public static TerrarumController gamepad = null; public static float gamepadDeadzone = 0.2f; - public static boolean inDeadzone(TerrarumController controller, int axis) { - float ax = controller.getAxis(axis); - float zero = (axis < 4) ? getConfigFloatArray("gamepadaxiszeropoints")[axis] : 0f; - - return Math.abs(ax - zero) < gamepadDeadzone; - } /** * For the events depends on rendering frame (e.g. flicker on post-hit invincibility) @@ -360,13 +354,17 @@ public class AppLoader implements ApplicationListener { environment = RunningEnvironment.CONSOLE; // calibrate the sticks - /*float[] axesZeroPoints = new float[]{ - gamepad.getAxis(0), - gamepad.getAxis(1), - gamepad.getAxis(2), - gamepad.getAxis(3) + printdbg(this, "Calibrating the gamepad..."); + float[] axesZeroPoints = new float[]{ + gamepad.getAxisRaw(0), + gamepad.getAxisRaw(1), + gamepad.getAxisRaw(2), + gamepad.getAxisRaw(3) }; - setConfig("gamepadaxiszeropoints", axesZeroPoints);*/ + setConfig("gamepadaxiszeropoints", axesZeroPoints); + for (int i = 0; i < 4; i++) { + printdbg(this, "Axis " + i + ": " + axesZeroPoints[i]); + } } else { diff --git a/src/net/torvald/terrarum/controller/GdxControllerAdapter.kt b/src/net/torvald/terrarum/controller/GdxControllerAdapter.kt index 2d63f7800..a1f466ace 100644 --- a/src/net/torvald/terrarum/controller/GdxControllerAdapter.kt +++ b/src/net/torvald/terrarum/controller/GdxControllerAdapter.kt @@ -12,7 +12,7 @@ class GdxControllerAdapter(val c: Controller): TerrarumController { return c.getButton(index) } - override fun getAxis(index: Int): Float { + override fun getAxisRaw(index: Int): Float { return c.getAxis(index) } diff --git a/src/net/torvald/terrarum/controller/TerrarumController.kt b/src/net/torvald/terrarum/controller/TerrarumController.kt index fb8b22854..ea7748c61 100644 --- a/src/net/torvald/terrarum/controller/TerrarumController.kt +++ b/src/net/torvald/terrarum/controller/TerrarumController.kt @@ -1,5 +1,8 @@ package net.torvald.terrarum.controller +import net.torvald.terrarum.AppLoader.gamepadDeadzone +import net.torvald.terrarum.AppLoader.getConfigFloatArray + /** * Created by minjaesong on 2019-02-09. */ @@ -40,7 +43,24 @@ interface TerrarumController { * * @return 0f..1f for the axis */ - fun getAxis(index: Int): Float + fun getAxisRaw(index: Int): Float + /** + * Returns deadzone-applied axis value. Deadzone must be stored in the app's config database as the IntArray gamepadaxiszeropoints + */ + fun getAxis(index:Int): Float { + val raw = getAxisRaw(index) + val zero = if (index < 4) getConfigFloatArray("gamepadaxiszeropoints")[index] else 0f + val inDeadzone = Math.abs(raw - zero) < gamepadDeadzone + + return if (inDeadzone) 0f else raw + } + + fun inDeadzone(axis: Int): Boolean { + val ax = getAxisRaw(axis) + val zero = if (axis < 4) getConfigFloatArray("gamepadaxiszeropoints")[axis] else 0f + + return Math.abs(ax - zero) < gamepadDeadzone + } /** * ``` diff --git a/src/net/torvald/terrarum/controller/XinputControllerAdapter.kt b/src/net/torvald/terrarum/controller/XinputControllerAdapter.kt index 116708331..7e3251f54 100644 --- a/src/net/torvald/terrarum/controller/XinputControllerAdapter.kt +++ b/src/net/torvald/terrarum/controller/XinputControllerAdapter.kt @@ -36,7 +36,7 @@ class XinputControllerAdapter(val c: XInputDevice): TerrarumController { return false } - override fun getAxis(index: Int): Float { + override fun getAxisRaw(index: Int): Float { if (c.poll()) { val axes = c.components.axes diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt index 17582c843..1ebdc073e 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt @@ -233,12 +233,6 @@ open class ActorHumanoid( axisRX = gamepad.getAxis(AppLoader.getConfigInt("gamepadaxisrx")) axisRY = gamepad.getAxis(AppLoader.getConfigInt("gamepadaxisry")) - // deadzonning - if (AppLoader.inDeadzone(gamepad, AppLoader.getConfigInt("gamepadaxislx"))) axisX = 0f - if (AppLoader.inDeadzone(gamepad, AppLoader.getConfigInt("gamepadaxisly"))) axisY = 0f - if (AppLoader.inDeadzone(gamepad, AppLoader.getConfigInt("gamepadaxisrx"))) axisRX = 0f - if (AppLoader.inDeadzone(gamepad, AppLoader.getConfigInt("gamepadaxisry"))) axisRY = 0f - isJumpDown = Gdx.input.isKeyPressed(AppLoader.getConfigInt("keyjump")) || gamepad.getButton(AppLoader.getConfigInt("gamepadltrigger")) } diff --git a/work_files/graphics/fonts/hebrew_rtl_variable.psd b/work_files/graphics/fonts/hebrew_rtl_variable.psd new file mode 100644 index 000000000..aefc91123 --- /dev/null +++ b/work_files/graphics/fonts/hebrew_rtl_variable.psd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14905a0377ee8f5d2bcc4c00e6816ffa2ce7b8e392b38d18d5ba4431cbb3ff3a +size 57146