| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287 |
- #include "std.h"
- #include "bbsys.h"
- gxInput *gx_input;
- gxDevice *gx_mouse;
- gxDevice *gx_keyboard;
- vector<gxDevice*> gx_joysticks;
- static int mouse_x,mouse_y,mouse_z;
- static const float JLT=-1.0f/3.0f;
- static const float JHT=1.0f/3.0f;
- bool input_create(){
- if( gx_input=gx_runtime->openInput( 0 ) ){
- if( gx_keyboard=gx_input->getKeyboard() ){
- if( gx_mouse=gx_input->getMouse() ){
- gx_joysticks.clear();
- for( int k=0;k<gx_input->numJoysticks();++k ){
- gx_joysticks.push_back( gx_input->getJoystick(k) );
- }
- mouse_x=mouse_y=mouse_z=0;
- return true;
- }
- }
- gx_runtime->closeInput( gx_input );
- gx_input=0;
- }
- return false;
- }
- bool input_destroy(){
- gx_joysticks.clear();
- gx_runtime->closeInput( gx_input );
- gx_input=0;
- return true;
- }
- int bbKeyDown( int n ){
- return gx_keyboard->keyDown( n );
- }
- int bbKeyHit( int n ){
- return gx_keyboard->keyHit( n );
- }
- int bbGetKey(){
- return gx_input->toAscii( gx_keyboard->getKey() );
- }
- int bbWaitKey(){
- for(;;){
- if( !gx_runtime->idle() ) RTEX( 0 );
- if( int key=gx_keyboard->getKey( ) ){
- if( key=gx_input->toAscii( key ) ) return key;
- }
- gx_runtime->delay( 20 );
- }
- }
- void bbFlushKeys(){
- gx_keyboard->flush();
- }
- int bbMouseDown( int n ){
- return gx_mouse->keyDown( n );
- }
- int bbMouseHit( int n ){
- return gx_mouse->keyHit( n );
- }
- int bbGetMouse(){
- return gx_mouse->getKey();
- }
- int bbWaitMouse(){
- for(;;){
- if( !gx_runtime->idle() ) RTEX( 0 );
- if( int key=gx_mouse->getKey() ) return key;
- gx_runtime->delay( 20 );
- }
- }
- int bbMouseWait(){
- return bbWaitMouse();
- }
- int bbMouseX(){
- return gx_mouse->getAxisState( 0 );
- }
- int bbMouseY(){
- return gx_mouse->getAxisState( 1 );
- }
- int bbMouseZ(){
- return gx_mouse->getAxisState( 2 )/120;
- }
- int bbMouseXSpeed(){
- int dx=bbMouseX()-mouse_x;
- mouse_x+=dx;
- return dx;
- }
- int bbMouseYSpeed(){
- int dy=bbMouseY()-mouse_y;
- mouse_y+=dy;
- return dy;
- }
- int bbMouseZSpeed(){
- int dz=bbMouseZ()-mouse_z;
- mouse_z+=dz;
- return dz;
- }
- void bbFlushMouse(){
- gx_mouse->flush();
- }
- void bbMoveMouse( int x,int y ){
- gx_input->moveMouse( mouse_x=x,mouse_y=y );
- }
- int bbJoyType( int port ){
- return gx_input->getJoystickType( port );
- }
- int bbJoyDown( int n,int port ){
- if( port<0 || port>=gx_joysticks.size() ) return 0;
- return gx_joysticks[port]->keyDown( n );
- }
- int bbJoyHit( int n,int port ){
- if( port<0 || port>=gx_joysticks.size() ) return 0;
- return gx_joysticks[port]->keyHit( n );
- }
- int bbGetJoy( int port ){
- if( port<0 || port>=gx_joysticks.size() ) return 0;
- return gx_joysticks[port]->getKey();
- }
- int bbWaitJoy( int port ){
- if( port<0 || port>=gx_joysticks.size() ) return 0;
- for(;;){
- if( !gx_runtime->idle() ) RTEX( 0 );
- if( int key=gx_joysticks[port]->getKey() ) return key;
- gx_runtime->delay( 20 );
- }
- }
- float bbJoyX( int port ){
- if( port<0 || port>=gx_joysticks.size() ) return 0;
- return gx_joysticks[port]->getAxisState(0);
- }
- float bbJoyY( int port ){
- if( port<0 || port>=gx_joysticks.size() ) return 0;
- return gx_joysticks[port]->getAxisState(1);
- }
- float bbJoyZ( int port ){
- if( port<0 || port>=gx_joysticks.size() ) return 0;
- return gx_joysticks[port]->getAxisState(2);
- }
- float bbJoyU( int port ){
- if( port<0 || port>=gx_joysticks.size() ) return 0;
- return gx_joysticks[port]->getAxisState(3);
- }
- float bbJoyV( int port ){
- if( port<0 || port>=gx_joysticks.size() ) return 0;
- return gx_joysticks[port]->getAxisState(4);
- }
- float bbJoyPitch( int port ){
- if( port<0 || port>=gx_joysticks.size() ) return 0;
- return gx_joysticks[port]->getAxisState(5)*180;
- }
- float bbJoyYaw( int port ){
- if( port<0 || port>=gx_joysticks.size() ) return 0;
- return gx_joysticks[port]->getAxisState(6)*180;
- }
- float bbJoyRoll( int port ){
- if( port<0 || port>=gx_joysticks.size() ) return 0;
- return gx_joysticks[port]->getAxisState(7)*180;
- }
- int bbJoyHat( int port ){
- if( port<0 || port>=gx_joysticks.size() ) return 0;
- return gx_joysticks[port]->getAxisState(8);
- }
- int bbJoyXDir( int port ){
- if( port<0 || port>=gx_joysticks.size() ) return 0;
- float t=gx_joysticks[port]->getAxisState(0);
- return t<JLT ? -1 : ( t>JHT ? 1 : 0 );
- }
- int bbJoyYDir( int port ){
- if( port<0 || port>=gx_joysticks.size() ) return 0;
- float t=gx_joysticks[port]->getAxisState(1);
- return t<JLT ? -1 : ( t>JHT ? 1 : 0 );
- }
- int bbJoyZDir( int port ){
- if( port<0 || port>=gx_joysticks.size() ) return 0;
- float t=gx_joysticks[port]->getAxisState(2);
- return t<JLT ? -1 : ( t>JHT ? 1 : 0 );
- }
- int bbJoyUDir( int port ){
- if( port<0 || port>=gx_joysticks.size() ) return 0;
- float t=gx_joysticks[port]->getAxisState(3);
- return t<JLT ? -1 : ( t>JHT ? 1 : 0 );
- }
- int bbJoyVDir( int port ){
- if( port<0 || port>=gx_joysticks.size() ) return 0;
- float t=gx_joysticks[port]->getAxisState(4);
- return t<JLT ? -1 : ( t>JHT ? 1 : 0 );
- }
- void bbFlushJoy(){
- for( int k=0;k<gx_joysticks.size();++k ) gx_joysticks[k]->flush();
- }
- void bbEnableDirectInput( int enable ){
- gx_runtime->enableDirectInput( !!enable );
- }
- int bbDirectInputEnabled(){
- return gx_runtime->directInputEnabled();
- }
- void input_link( void (*rtSym)( const char *sym,void *pc ) ){
- rtSym( "%KeyDown%key",bbKeyDown );
- rtSym( "%KeyHit%key",bbKeyHit );
- rtSym( "%GetKey",bbGetKey );
- rtSym( "%WaitKey",bbWaitKey );
- rtSym( "FlushKeys",bbFlushKeys );
- rtSym( "%MouseDown%button",bbMouseDown );
- rtSym( "%MouseHit%button",bbMouseHit );
- rtSym( "%GetMouse",bbGetMouse );
- rtSym( "%WaitMouse",bbWaitMouse );
- rtSym( "%MouseWait",bbWaitMouse );
- rtSym( "%MouseX",bbMouseX );
- rtSym( "%MouseY",bbMouseY );
- rtSym( "%MouseZ",bbMouseZ );
- rtSym( "%MouseXSpeed",bbMouseXSpeed );
- rtSym( "%MouseYSpeed",bbMouseYSpeed );
- rtSym( "%MouseZSpeed",bbMouseZSpeed );
- rtSym( "FlushMouse",bbFlushMouse );
- rtSym( "MoveMouse%x%y",bbMoveMouse );
- rtSym( "%JoyType%port=0",bbJoyType );
- rtSym( "%JoyDown%button%port=0",bbJoyDown );
- rtSym( "%JoyHit%button%port=0",bbJoyHit );
- rtSym( "%GetJoy%port=0",bbGetJoy );
- rtSym( "%WaitJoy%port=0",bbWaitJoy );
- rtSym( "%JoyWait%port=0",bbWaitJoy );
- rtSym( "#JoyX%port=0",bbJoyX );
- rtSym( "#JoyY%port=0",bbJoyY );
- rtSym( "#JoyZ%port=0",bbJoyZ );
- rtSym( "#JoyU%port=0",bbJoyU );
- rtSym( "#JoyV%port=0",bbJoyV );
- rtSym( "#JoyPitch%port=0",bbJoyPitch );
- rtSym( "#JoyYaw%port=0",bbJoyYaw );
- rtSym( "#JoyRoll%port=0",bbJoyRoll );
- rtSym( "%JoyHat%port=0",bbJoyHat );
- rtSym( "%JoyXDir%port=0",bbJoyXDir );
- rtSym( "%JoyYDir%port=0",bbJoyYDir );
- rtSym( "%JoyZDir%port=0",bbJoyZDir );
- rtSym( "%JoyUDir%port=0",bbJoyUDir );
- rtSym( "%JoyVDir%port=0",bbJoyVDir );
- rtSym( "FlushJoy",bbFlushJoy );
- rtSym( "EnableDirectInput%enable",bbEnableDirectInput );
- rtSym( "%DirectInputEnabled",bbDirectInputEnabled );
- }
|