From fb0357b5d68c00d0cc466f0fb36711151eae83dd Mon Sep 17 00:00:00 2001 From: minjaesong Date: Sun, 10 Feb 2019 03:44:42 +0900 Subject: [PATCH] pov for gdxcontrolleradapter (untested) --- assets/mods/basegame/default.json | 67 ------------------- src/net/torvald/terrarum/DefaultConfig.kt | 13 ++-- .../controller/GdxControllerAdapter.kt | 15 ++++- .../terrarum/controller/TerrarumController.kt | 6 ++ .../controller/XinputControllerAdapter.kt | 9 ++- .../gameactors/ActorHumanoid.kt | 8 +-- .../terrarum/ui/BasicDebugInfoWindow.kt | 4 +- 7 files changed, 40 insertions(+), 82 deletions(-) delete mode 100644 assets/mods/basegame/default.json diff --git a/assets/mods/basegame/default.json b/assets/mods/basegame/default.json deleted file mode 100644 index 8167663d2..000000000 --- a/assets/mods/basegame/default.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "displayfps": 0, - "usevsync": true, - - "imtooyoungtodie": false, - "language": "enUS", - "notificationshowuptime": 6500, - "multithread": true, - - - "gamepadkeyn": 4, - "gamepadkeyw": 1, - "gamepadkeys": 2, - "gamepadkeye": 3, - - "gamepadlup": 4, - "gamepadrup": 5, - "gamepadldown": 6, - "gamepadrdown": 7, - - "gamepadlstickx": 0, - "gamepadlsticky": 1, - "gamepadrstickx": 2, - "gamepadrsticky": 3, - - "gamepadlabelstyle": "msxb360", - - - "keyup": 33, - "keyleft": 47, - "keydown": 32, - "keyright": 34, - - "keymovementaux": 29, - "keyinventory": 45, - "keyinteract": 46, - "keyclose": 31, - - "keygamemenu": 61, - "keyquicksel": 59, - - "keyquickselalt": [4, 129, 73], - - "keyjump": 62, - - "keyquickbars": [145, 146, 147, 148, 149, 150, 151, 152, 153, 144], - - "mouseprimary": 0, - "mousesecondary": 1, - - - "pcgamepadenv": "console", - - "safetywarning": true, - - - "maxparticles": 768, - - - "fullframelightupdate": false, - - "useamericanunit": false, - - - "fxdither": true, - "fx3dlut": false -} \ No newline at end of file diff --git a/src/net/torvald/terrarum/DefaultConfig.kt b/src/net/torvald/terrarum/DefaultConfig.kt index 6fc043309..7427fd54b 100644 --- a/src/net/torvald/terrarum/DefaultConfig.kt +++ b/src/net/torvald/terrarum/DefaultConfig.kt @@ -42,13 +42,16 @@ object DefaultConfig { jsonObject.addProperty("gamepadltrigger", 8) jsonObject.addProperty("gamepadrtrigger", 9) + jsonObject.addProperty("gamepadlthumb", 10) + jsonObject.addProperty("gamepadrthumb", 11) - jsonObject.addProperty("gamepadlstickx", 1) - jsonObject.addProperty("gamepadlsticky", 0) - jsonObject.addProperty("gamepadrstickx", 3) - jsonObject.addProperty("gamepadrsticky", 2) // 0-1-2-3 but sometimes 3-2-1-0 ?! what the actual fuck? + + jsonObject.addProperty("gamepadaxislx", 1) + jsonObject.addProperty("gamepadaxisly", 0) + jsonObject.addProperty("gamepadaxisrx", 3) + jsonObject.addProperty("gamepadaxisry", 2) // 0-1-2-3 but sometimes 3-2-1-0 ?! what the actual fuck? jsonObject.addProperty("gamepadtriggeraxis", 4) // positive: LT, negative: RT (xbox pad) - + jsonObject.addProperty("gamepadtriggeraxis2", 5) // just in case... (RT) jsonObject.addProperty("gamepadlabelstyle", "msxb360") // "nwii", "logitech", "sonyps", "msxb360", "generic" diff --git a/src/net/torvald/terrarum/controller/GdxControllerAdapter.kt b/src/net/torvald/terrarum/controller/GdxControllerAdapter.kt index fc1b2cce2..2d63f7800 100644 --- a/src/net/torvald/terrarum/controller/GdxControllerAdapter.kt +++ b/src/net/torvald/terrarum/controller/GdxControllerAdapter.kt @@ -1,6 +1,7 @@ package net.torvald.terrarum.controller import com.badlogic.gdx.controllers.Controller +import com.badlogic.gdx.controllers.PovDirection /** * Created by minjaesong on 2019-02-09. @@ -16,11 +17,21 @@ class GdxControllerAdapter(val c: Controller): TerrarumController { } override fun getPov(): Int { - TODO() + return when(c.getPov(0)) { + PovDirection.north -> TerrarumController.POV_N + PovDirection.northEast -> TerrarumController.POV_NE + PovDirection.northWest -> TerrarumController.POV_NW + PovDirection.east -> TerrarumController.POV_E + PovDirection.west -> TerrarumController.POV_W + PovDirection.south -> TerrarumController.POV_S + PovDirection.southEast -> TerrarumController.POV_SE + PovDirection.southWest -> TerrarumController.POV_SW + else -> 0 + } } override fun getName(): String { - return c.name + return "DI:"+c.name } override fun setRumble(left: Float, right: Float) { diff --git a/src/net/torvald/terrarum/controller/TerrarumController.kt b/src/net/torvald/terrarum/controller/TerrarumController.kt index 7e99321b8..fb8b22854 100644 --- a/src/net/torvald/terrarum/controller/TerrarumController.kt +++ b/src/net/torvald/terrarum/controller/TerrarumController.kt @@ -14,6 +14,8 @@ interface TerrarumController { * * 8, 9 : L/R Trigger * + * 10, 11 : L/R Stick + * * DirectInput devices may need external Index-to-button mapping (just a config file) * */ @@ -50,6 +52,10 @@ interface TerrarumController { fun getPov(): Int fun getName(): String + /** + * @param left left rumble motor, 0f..1f + * @param right right rumble moter, 0f..1f + */ fun setRumble(left: Float, right: Float) companion object { diff --git a/src/net/torvald/terrarum/controller/XinputControllerAdapter.kt b/src/net/torvald/terrarum/controller/XinputControllerAdapter.kt index eec24281f..116708331 100644 --- a/src/net/torvald/terrarum/controller/XinputControllerAdapter.kt +++ b/src/net/torvald/terrarum/controller/XinputControllerAdapter.kt @@ -6,6 +6,9 @@ import net.torvald.terrarum.AppLoader import kotlin.math.roundToInt /** + * Note: XInput is a basically a XBOX 360 pad. XBOX One pad and any other compatible pads can be used, + * but any additional features (e.g. Impulse Trigger on XBOne) cannot be supported. + * * Created by minjaesong on 2019-02-09. */ class XinputControllerAdapter(val c: XInputDevice): TerrarumController { @@ -25,6 +28,8 @@ class XinputControllerAdapter(val c: XInputDevice): TerrarumController { 7 -> button.start 8 -> getAxis(4) >= AppLoader.gamepadDeadzone 9 -> getAxis(5) >= AppLoader.gamepadDeadzone + 10 -> button.lThumb + 11 -> button.rThumb else -> throw UnsupportedOperationException("Unknown button: $index") } } @@ -62,14 +67,14 @@ class XinputControllerAdapter(val c: XInputDevice): TerrarumController { XInputAxes.DPAD_DOWN -> TerrarumController.POV_S XInputAxes.DPAD_DOWN_LEFT -> TerrarumController.POV_SW XInputAxes.DPAD_LEFT -> TerrarumController.POV_W - else -> throw UnsupportedOperationException("Unknown pov: ${axes.dpad}") + else -> 0//throw UnsupportedOperationException("Unknown pov: ${axes.dpad}") } } return -1 } override fun getName(): String { - return "(XInput Compatible)" + return "(XB360 Compatible)" } override fun setRumble(left: Float, right: Float) { diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt index 5c6f200bf..d4bd0fc66 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt @@ -228,10 +228,10 @@ open class ActorHumanoid( val gamepad = (Terrarum.ingame as Ingame).ingameController.gamepad if (gamepad != null) { - axisX = gamepad.getAxis(AppLoader.getConfigInt("gamepadlstickx")) - axisY = gamepad.getAxis(AppLoader.getConfigInt("gamepadlsticky")) - axisRX = gamepad.getAxis(AppLoader.getConfigInt("gamepadrstickx")) - axisRY = gamepad.getAxis(AppLoader.getConfigInt("gamepadrsticky")) + axisX = gamepad.getAxis(AppLoader.getConfigInt("gamepadaxislx")) + axisY = gamepad.getAxis(AppLoader.getConfigInt("gamepadaxisly")) + axisRX = gamepad.getAxis(AppLoader.getConfigInt("gamepadaxisrx")) + axisRY = gamepad.getAxis(AppLoader.getConfigInt("gamepadaxisry")) // deadzonning if (Math.abs(axisX) < AppLoader.gamepadDeadzone) axisX = 0f diff --git a/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt b/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt index 6c1cfcdad..6dda614e9 100644 --- a/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt +++ b/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt @@ -195,8 +195,8 @@ class BasicDebugInfoWindow : UICanvas() { val gamepad = (Terrarum.ingame as? Ingame)?.ingameController?.gamepad if (gamepad != null) { drawGamepadAxis(gamepad, batch, - gamepad.getAxis(AppLoader.getConfigInt("gamepadlstickx")), - gamepad.getAxis(AppLoader.getConfigInt("gamepadlsticky")), + gamepad.getAxis(AppLoader.getConfigInt("gamepadaxislx")), + gamepad.getAxis(AppLoader.getConfigInt("gamepadaxisly")), Terrarum.WIDTH - 135, 40 )