mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-09 10:04:05 +09:00
pov for gdxcontrolleradapter (untested)
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user