factor/extra/game-input/game-input.factor

40 lines
1.2 KiB
Factor
Raw Normal View History

2008-07-19 14:04:07 -04:00
USING: arrays accessors continuations kernel symbols ;
IN: game-input
SYMBOL: game-input-backend
HOOK: open-game-input game-input-backend ( -- )
HOOK: close-game-input game-input-backend ( -- )
: with-game-input ( quot -- )
open-game-input [ close-game-input ] [ ] cleanup ;
TUPLE: controller handle ;
TUPLE: controller-state x y z rx ry rz slider pov buttons ;
M: controller-state clone
call-next-method dup buttons>> clone >>buttons ;
SYMBOLS:
pov-neutral
pov-up pov-up-left pov-left pov-down-left
pov-down pov-down-right pov-right pov-up-right ;
HOOK: get-controllers game-input-backend ( -- sequence )
HOOK: manufacturer game-input-backend ( controller -- string )
HOOK: product game-input-backend ( controller -- string )
HOOK: vendor-id game-input-backend ( controller -- integer )
HOOK: product-id game-input-backend ( controller -- integer )
HOOK: location-id game-input-backend ( controller -- integer )
HOOK: read-controller game-input-backend ( controller -- controller-state )
HOOK: calibrate-controller game-input-backend ( controller -- )
TUPLE: keyboard-state keys ;
M: keyboard-state clone
call-next-method dup keys>> clone >>keys ;
HOOK: read-keyboard game-input-backend ( -- keyboard-state )