needlessly rice game.input backends further by using set/get-global everywhere
parent
4159cfcc7b
commit
2e4ebc0182
|
@ -30,15 +30,15 @@ SYMBOLS: +dinput+ +keyboard-device+ +keyboard-state+
|
|||
+dinput+ [ com-release f ] change-global ;
|
||||
|
||||
: device-for-guid ( guid -- device )
|
||||
+dinput+ get swap f <void*>
|
||||
+dinput+ get-global swap f <void*>
|
||||
[ f IDirectInput8W::CreateDevice ole32-error ] keep *void* ;
|
||||
|
||||
: set-coop-level ( device -- )
|
||||
+device-change-window+ get DISCL_BACKGROUND DISCL_NONEXCLUSIVE bitor
|
||||
IDirectInputDevice8W::SetCooperativeLevel ole32-error ;
|
||||
+device-change-window+ get-global DISCL_BACKGROUND DISCL_NONEXCLUSIVE bitor
|
||||
IDirectInputDevice8W::SetCooperativeLevel ole32-error ; inline
|
||||
|
||||
: set-data-format ( device format-symbol -- )
|
||||
get IDirectInputDevice8W::SetDataFormat ole32-error ;
|
||||
get-global IDirectInputDevice8W::SetDataFormat ole32-error ; inline
|
||||
|
||||
: <buffer-size-diprop> ( size -- DIPROPDWORD )
|
||||
DIPROPDWORD <struct> [
|
||||
|
@ -93,7 +93,7 @@ SYMBOLS: +dinput+ +keyboard-device+ +keyboard-state+
|
|||
IDirectInput8W::GetDeviceStatus S_OK = ;
|
||||
|
||||
: (find-device-axes-callback) ( lpddoi pvRef -- BOOL )
|
||||
+controller-devices+ get at
|
||||
+controller-devices+ get-global at
|
||||
swap guidType>> {
|
||||
{ [ dup GUID_XAxis = ] [ drop 0.0 >>x ] }
|
||||
{ [ dup GUID_YAxis = ] [ drop 0.0 >>y ] }
|
||||
|
@ -110,7 +110,7 @@ SYMBOLS: +dinput+ +keyboard-device+ +keyboard-state+
|
|||
[ (find-device-axes-callback) ] LPDIENUMDEVICEOBJECTSCALLBACKW ;
|
||||
|
||||
: find-device-axes ( device controller-state -- controller-state )
|
||||
swap [ +controller-devices+ get set-at ] 2keep
|
||||
swap [ +controller-devices+ get-global set-at ] 2keep
|
||||
find-device-axes-callback over DIDFT_AXIS
|
||||
IDirectInputDevice8W::EnumObjects ole32-error ;
|
||||
|
||||
|
@ -122,22 +122,22 @@ SYMBOLS: +dinput+ +keyboard-device+ +keyboard-state+
|
|||
find-device-axes ;
|
||||
|
||||
: device-known? ( guid -- ? )
|
||||
+controller-guids+ get key? ; inline
|
||||
+controller-guids+ get-global key? ; inline
|
||||
|
||||
: (add-controller) ( guid -- )
|
||||
device-for-guid {
|
||||
[ configure-controller ]
|
||||
[ controller-state-template ]
|
||||
[ dup device-guid clone +controller-guids+ get set-at ]
|
||||
[ +controller-devices+ get set-at ]
|
||||
[ dup device-guid clone +controller-guids+ get-global set-at ]
|
||||
[ +controller-devices+ get-global set-at ]
|
||||
} cleave ;
|
||||
|
||||
: add-controller ( guid -- )
|
||||
dup device-known? [ drop ] [ (add-controller) ] if ;
|
||||
|
||||
: remove-controller ( device -- )
|
||||
[ +controller-devices+ get delete-at ]
|
||||
[ device-guid +controller-guids+ get delete-at ]
|
||||
[ +controller-devices+ get-global delete-at ]
|
||||
[ device-guid +controller-guids+ get-global delete-at ]
|
||||
[ com-release ] tri ;
|
||||
|
||||
: (find-controller-callback) ( lpddi pvRef -- BOOL )
|
||||
|
@ -148,7 +148,7 @@ SYMBOLS: +dinput+ +keyboard-device+ +keyboard-state+
|
|||
[ (find-controller-callback) ] LPDIENUMDEVICESCALLBACKW ;
|
||||
|
||||
: find-controllers ( -- )
|
||||
+dinput+ get DI8DEVCLASS_GAMECTRL find-controller-callback
|
||||
+dinput+ get-global DI8DEVCLASS_GAMECTRL find-controller-callback
|
||||
f DIEDFL_ATTACHEDONLY IDirectInput8W::EnumDevices ole32-error ;
|
||||
|
||||
: set-up-controllers ( -- )
|
||||
|
@ -157,7 +157,7 @@ SYMBOLS: +dinput+ +keyboard-device+ +keyboard-state+
|
|||
find-controllers ;
|
||||
|
||||
: find-and-remove-detached-devices ( -- )
|
||||
+controller-devices+ get keys
|
||||
+controller-devices+ get-global keys
|
||||
[ device-attached? not ] filter
|
||||
[ remove-controller ] each ;
|
||||
|
||||
|
@ -253,7 +253,7 @@ M: dinput-game-input-backend (reset-game-input)
|
|||
] bind ;
|
||||
|
||||
M: dinput-game-input-backend get-controllers
|
||||
+controller-devices+ get
|
||||
+controller-devices+ get-global
|
||||
[ drop controller boa ] { } assoc>map ;
|
||||
|
||||
M: dinput-game-input-backend product-string
|
||||
|
@ -315,7 +315,7 @@ CONSTANT: pov-values
|
|||
} case ;
|
||||
|
||||
: fill-mouse-state ( buffer count -- state )
|
||||
iota [ +mouse-state+ get ] 2dip swap [ nth (fill-mouse-state) ] curry each ;
|
||||
iota [ +mouse-state+ get-global ] 2dip swap [ nth (fill-mouse-state) ] curry each ;
|
||||
|
||||
: get-device-state ( device DIJOYSTATE2 -- )
|
||||
[ dup IDirectInputDevice8W::Poll ole32-error ] dip
|
||||
|
@ -327,25 +327,25 @@ CONSTANT: pov-values
|
|||
[ fill-controller-state ] [ drop f ] with-acquisition ;
|
||||
|
||||
M: dinput-game-input-backend read-controller
|
||||
handle>> dup +controller-devices+ get at
|
||||
handle>> dup +controller-devices+ get-global at
|
||||
[ (read-controller) ] [ drop f ] if* ;
|
||||
|
||||
M: dinput-game-input-backend calibrate-controller
|
||||
handle>> f 0 IDirectInputDevice8W::RunControlPanel ole32-error ;
|
||||
|
||||
M: dinput-game-input-backend read-keyboard
|
||||
+keyboard-device+ get
|
||||
[ +keyboard-state+ get [ keys>> underlying>> get-device-state ] keep ]
|
||||
+keyboard-device+ get-global
|
||||
[ +keyboard-state+ get-global [ keys>> underlying>> get-device-state ] keep ]
|
||||
[ ] [ f ] with-acquisition ;
|
||||
|
||||
M: dinput-game-input-backend read-mouse
|
||||
+mouse-device+ get [ +mouse-buffer+ get MOUSE-BUFFER-SIZE read-device-buffer ]
|
||||
+mouse-device+ get-global [ +mouse-buffer+ get-global MOUSE-BUFFER-SIZE read-device-buffer ]
|
||||
[ fill-mouse-state ] [ f ] with-acquisition ;
|
||||
|
||||
M: dinput-game-input-backend reset-mouse
|
||||
+mouse-device+ get [ f MOUSE-BUFFER-SIZE read-device-buffer ]
|
||||
+mouse-device+ get-global [ f MOUSE-BUFFER-SIZE read-device-buffer ]
|
||||
[ 2drop ] [ ] with-acquisition
|
||||
+mouse-state+ get
|
||||
+mouse-state+ get-global
|
||||
0 >>dx
|
||||
0 >>dy
|
||||
0 >>scroll-dx
|
||||
|
|
|
@ -203,10 +203,10 @@ HINTS: record-keyboard { bit-array alien } ;
|
|||
HINTS: record-mouse { mouse-state alien } ;
|
||||
|
||||
M: iokit-game-input-backend read-mouse
|
||||
+mouse-state+ get ;
|
||||
+mouse-state+ get-global ;
|
||||
|
||||
M: iokit-game-input-backend reset-mouse
|
||||
+mouse-state+ get
|
||||
+mouse-state+ get-global
|
||||
0 >>dx
|
||||
0 >>dy
|
||||
0 >>scroll-dx
|
||||
|
@ -247,7 +247,7 @@ M: iokit-game-input-backend reset-mouse
|
|||
} cleave controller-state boa ;
|
||||
|
||||
: ?add-mouse-buttons ( device -- )
|
||||
button-count +mouse-state+ get buttons>>
|
||||
button-count +mouse-state+ get-global buttons>>
|
||||
2dup length >
|
||||
[ set-length ] [ 2drop ] if ;
|
||||
|
||||
|
@ -256,7 +256,7 @@ M: iokit-game-input-backend reset-mouse
|
|||
{ [ device mouse-device? ] [ device ?add-mouse-buttons ] }
|
||||
{ [ device controller-device? ] [
|
||||
device <device-controller-state>
|
||||
device +controller-states+ get set-at
|
||||
device +controller-states+ get-global set-at
|
||||
] }
|
||||
[ ]
|
||||
} cond ;
|
||||
|
@ -265,18 +265,18 @@ M: iokit-game-input-backend reset-mouse
|
|||
[ (device-matched-callback) ] IOHIDDeviceCallback ;
|
||||
|
||||
:: (device-removed-callback) ( context result sender device -- )
|
||||
device +controller-states+ get delete-at ;
|
||||
device +controller-states+ get-global delete-at ;
|
||||
|
||||
: device-removed-callback ( -- alien )
|
||||
[ (device-removed-callback) ] IOHIDDeviceCallback ;
|
||||
|
||||
:: (device-input-callback) ( context result sender value -- )
|
||||
{
|
||||
{ [ sender mouse-device? ] [ +mouse-state+ get value record-mouse ] }
|
||||
{ [ sender mouse-device? ] [ +mouse-state+ get-global value record-mouse ] }
|
||||
{ [ sender controller-device? ] [
|
||||
sender +controller-states+ get at value record-controller
|
||||
sender +controller-states+ get-global at value record-controller
|
||||
] }
|
||||
[ +keyboard-state+ get value record-keyboard ]
|
||||
[ +keyboard-state+ get-global value record-keyboard ]
|
||||
} cond ;
|
||||
|
||||
: device-input-callback ( -- alien )
|
||||
|
@ -324,7 +324,7 @@ M: iokit-game-input-backend (close-game-input)
|
|||
] when ;
|
||||
|
||||
M: iokit-game-input-backend get-controllers ( -- sequence )
|
||||
+controller-states+ get keys [ controller boa ] map ;
|
||||
+controller-states+ get-global keys [ controller boa ] map ;
|
||||
|
||||
: ?join ( pre post sep -- string )
|
||||
2over start [ swap 2nip ] [ [ 2array ] dip join ] if ;
|
||||
|
@ -341,10 +341,10 @@ M: iokit-game-input-backend instance-id ( controller -- integer )
|
|||
handle>> kIOHIDLocationIDKey device-property ;
|
||||
|
||||
M: iokit-game-input-backend read-controller ( controller -- controller-state )
|
||||
handle>> +controller-states+ get at clone ;
|
||||
handle>> +controller-states+ get-global at clone ;
|
||||
|
||||
M: iokit-game-input-backend read-keyboard ( -- keyboard-state )
|
||||
+keyboard-state+ get clone keyboard-state boa ;
|
||||
+keyboard-state+ get-global clone keyboard-state boa ;
|
||||
|
||||
M: iokit-game-input-backend calibrate-controller ( controller -- )
|
||||
drop ;
|
||||
|
|
Loading…
Reference in New Issue