mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-11-10 04:57:26 +01:00
parent
97039ff714
commit
a6f6fdbfb7
@ -18,6 +18,7 @@
|
|||||||
package gamepad
|
package gamepad
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"time"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
"golang.org/x/sys/windows"
|
"golang.org/x/sys/windows"
|
||||||
@ -29,17 +30,6 @@ type nativeGamepadsXbox struct {
|
|||||||
token _GameInputCallbackToken
|
token _GameInputCallbackToken
|
||||||
}
|
}
|
||||||
|
|
||||||
func xboxDeviceCallback(
|
|
||||||
callbackToken _GameInputCallbackToken,
|
|
||||||
context unsafe.Pointer,
|
|
||||||
device *_IGameInputDevice,
|
|
||||||
timestamp uint64,
|
|
||||||
currentStatus _GameInputDeviceStatus,
|
|
||||||
previousStatus _GameInputDeviceStatus) uintptr {
|
|
||||||
// TODO: Implement this.
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (n *nativeGamepadsXbox) init(gamepads *gamepads) error {
|
func (n *nativeGamepadsXbox) init(gamepads *gamepads) error {
|
||||||
g, err := _GameInputCreate()
|
g, err := _GameInputCreate()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -47,14 +37,14 @@ func (n *nativeGamepadsXbox) init(gamepads *gamepads) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
n.gameInput = g
|
n.gameInput = g
|
||||||
n.deviceCallbackPtr = windows.NewCallbackCDecl(xboxDeviceCallback)
|
n.deviceCallbackPtr = windows.NewCallbackCDecl(n.deviceCallback)
|
||||||
|
|
||||||
if err := n.gameInput.RegisterDeviceCallback(
|
if err := n.gameInput.RegisterDeviceCallback(
|
||||||
nil,
|
nil,
|
||||||
_GameInputKindGamepad,
|
_GameInputKindAny,
|
||||||
_GameInputDeviceConnected,
|
_GameInputDeviceConnected,
|
||||||
_GameInputBlockingEnumeration,
|
_GameInputBlockingEnumeration,
|
||||||
nil,
|
unsafe.Pointer(gamepads),
|
||||||
n.deviceCallbackPtr,
|
n.deviceCallbackPtr,
|
||||||
&n.token,
|
&n.token,
|
||||||
); err != nil {
|
); err != nil {
|
||||||
@ -66,3 +56,67 @@ func (n *nativeGamepadsXbox) init(gamepads *gamepads) error {
|
|||||||
func (n *nativeGamepadsXbox) update(gamepads *gamepads) error {
|
func (n *nativeGamepadsXbox) update(gamepads *gamepads) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (n *nativeGamepadsXbox) deviceCallback(callbackToken _GameInputCallbackToken, context unsafe.Pointer, device *_IGameInputDevice, timestamp uint64, currentStatus _GameInputDeviceStatus, previousStatus _GameInputDeviceStatus) uintptr {
|
||||||
|
gps := (*gamepads)(context)
|
||||||
|
|
||||||
|
// Connected.
|
||||||
|
if currentStatus&_GameInputDeviceConnected != 0 {
|
||||||
|
// TODO: Give a good name and a SDL ID.
|
||||||
|
gp := gps.add("", "00000000000000000000000000000000")
|
||||||
|
gp.native = &nativeGamepadXbox{
|
||||||
|
gameInputDevice: device,
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// Disconnected.
|
||||||
|
gps.remove(func(gamepad *Gamepad) bool {
|
||||||
|
return gamepad.native.(*nativeGamepadXbox).gameInputDevice == device
|
||||||
|
})
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
type nativeGamepadXbox struct {
|
||||||
|
gameInputDevice *_IGameInputDevice
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *nativeGamepadXbox) update(gamepads *gamepads) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *nativeGamepadXbox) hasOwnStandardLayoutMapping() bool {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *nativeGamepadXbox) axisCount() int {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *nativeGamepadXbox) buttonCount() int {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *nativeGamepadXbox) hatCount() int {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *nativeGamepadXbox) axisValue(axis int) float64 {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *nativeGamepadXbox) buttonValue(button int) float64 {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *nativeGamepadXbox) isButtonPressed(button int) bool {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *nativeGamepadXbox) hatState(hat int) int {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *nativeGamepadXbox) vibrate(duration time.Duration, strongMagnitude float64, weakMagnitude float64) {
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user