pov for gdxcontrolleradapter (untested)

This commit is contained in:
minjaesong
2019-02-10 03:44:42 +09:00
parent 1730ebd0d7
commit fb0357b5d6
7 changed files with 40 additions and 82 deletions

View File

@@ -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) {

View File

@@ -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 {

View File

@@ -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) {