From 92c321848da27c1dd1197ae94f0abb2e2d522fea Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Tue, 17 Apr 2018 03:48:02 +0300 Subject: [PATCH] Adapt input code to newer engine --- engine/client/in_joy.c | 67 +++++++++++----------- engine/client/in_touch.c | 116 +++++++++++++++++++-------------------- engine/common/input.h | 1 + engine/common/keys.c | 15 +++++ 4 files changed, 107 insertions(+), 92 deletions(-) diff --git a/engine/client/in_joy.c b/engine/client/in_joy.c index 5351861d..ab6d620e 100644 --- a/engine/client/in_joy.c +++ b/engine/client/in_joy.c @@ -19,7 +19,6 @@ GNU General Public License for more details. #include "common.h" #include "input.h" #include "keydefs.h" -#include "joyinput.h" #include "client.h" #include "gl_local.h" @@ -149,11 +148,11 @@ void Joy_ProcessTrigger( const engineAxis_t engineAxis, short value ) { case JOY_AXIS_RT: trigButton = K_JOY2; - trigThreshold = joy_rt_threshold->integer; + trigThreshold = joy_rt_threshold->value; break; case JOY_AXIS_LT: trigButton = K_JOY1; - trigThreshold = joy_lt_threshold->integer; + trigThreshold = joy_lt_threshold->value; break; default: MsgDev( D_ERROR, "Joy_ProcessTrigger: invalid axis = %i", engineAxis ); @@ -183,12 +182,12 @@ int Joy_GetHatValueForAxis( const engineAxis_t engineAxis ) switch( engineAxis ) { case JOY_AXIS_SIDE: - threshold = joy_side_key_threshold->integer; + threshold = joy_side_key_threshold->value; negative = JOY_HAT_LEFT; positive = JOY_HAT_RIGHT; break; case JOY_AXIS_FWD: - threshold = joy_side_key_threshold->integer; + threshold = joy_side_key_threshold->value; negative = JOY_HAT_UP; positive = JOY_HAT_DOWN; break; @@ -222,10 +221,10 @@ void Joy_ProcessStick( const engineAxis_t engineAxis, short value ) switch( engineAxis ) { - case JOY_AXIS_FWD: deadzone = joy_forward_deadzone->integer; break; - case JOY_AXIS_SIDE: deadzone = joy_side_deadzone->integer; break; - case JOY_AXIS_PITCH: deadzone = joy_pitch_deadzone->integer; break; - case JOY_AXIS_YAW: deadzone = joy_yaw_deadzone->integer; break; + case JOY_AXIS_FWD: deadzone = joy_forward_deadzone->value; break; + case JOY_AXIS_SIDE: deadzone = joy_side_deadzone->value; break; + case JOY_AXIS_PITCH: deadzone = joy_pitch_deadzone->value; break; + case JOY_AXIS_YAW: deadzone = joy_yaw_deadzone->value; break; default: MsgDev( D_ERROR, "Joy_ProcessStick: invalid axis = %i", engineAxis ); break; @@ -332,8 +331,8 @@ Called when joystick is removed. For future expansion */ void Joy_RemoveEvent( int id ) { - if( !forcedisable && initialized && joy_found->integer ) - Cvar_SetFloat("joy_found", joy_found->value - 1.0f); + if( !forcedisable && initialized && joy_found->value ) + Cvar_SetValue("joy_found", joy_found->value - 1.0f); } /* @@ -350,7 +349,7 @@ void Joy_AddEvent( int id ) initialized = true; - Cvar_SetFloat("joy_found", joy_found->value + 1.0f); + Cvar_SetValue("joy_found", joy_found->value + 1.0f); } /* @@ -362,10 +361,10 @@ Append movement from axis. Called everyframe */ void Joy_FinalizeMove( float *fw, float *side, float *dpitch, float *dyaw ) { - if( !initialized || !joy_enable->integer ) + if( !initialized || !joy_enable->value ) return; - if( joy_axis_binding->modified ) + if( FBitSet( joy_axis_binding->flags, FCVAR_CHANGED ) ) { char bind[7] = { 0 }; // fill it with zeros size_t i; @@ -384,7 +383,7 @@ void Joy_FinalizeMove( float *fw, float *side, float *dpitch, float *dyaw ) default : joyaxesmap[i] = JOY_AXIS_NULL; break; } } - joy_axis_binding->modified = false; + ClearBits( joy_axis_binding->flags, FCVAR_CHANGED ); } *fw -= joy_forward->value * (float)joyaxis[JOY_AXIS_FWD ].val/(float)SHRT_MAX; // must be form -1.0 to 1.0 @@ -408,32 +407,32 @@ Main init procedure */ void Joy_Init( void ) { - joy_pitch = Cvar_Get( "joy_pitch", "100.0", CVAR_ARCHIVE, "joystick pitch sensitivity" ); - joy_yaw = Cvar_Get( "joy_yaw", "100.0", CVAR_ARCHIVE, "joystick yaw sensitivity" ); - joy_side = Cvar_Get( "joy_side", "1.0", CVAR_ARCHIVE, "joystick side sensitivity. Values from -1.0 to 1.0" ); - joy_forward = Cvar_Get( "joy_forward", "1.0", CVAR_ARCHIVE, "joystick forward sensitivity. Values from -1.0 to 1.0" ); + joy_pitch = Cvar_Get( "joy_pitch", "100.0", FCVAR_ARCHIVE, "joystick pitch sensitivity" ); + joy_yaw = Cvar_Get( "joy_yaw", "100.0", FCVAR_ARCHIVE, "joystick yaw sensitivity" ); + joy_side = Cvar_Get( "joy_side", "1.0", FCVAR_ARCHIVE, "joystick side sensitivity. Values from -1.0 to 1.0" ); + joy_forward = Cvar_Get( "joy_forward", "1.0", FCVAR_ARCHIVE, "joystick forward sensitivity. Values from -1.0 to 1.0" ); - joy_lt_threshold = Cvar_Get( "joy_lt_threshold", "-16384", CVAR_ARCHIVE, "left trigger threshold. Value from -32768 to 32767"); - joy_rt_threshold = Cvar_Get( "joy_rt_threshold", "-16384", CVAR_ARCHIVE, "right trigger threshold. Value from -32768 to 32767" ); + joy_lt_threshold = Cvar_Get( "joy_lt_threshold", "-16384", FCVAR_ARCHIVE, "left trigger threshold. Value from -32768 to 32767"); + joy_rt_threshold = Cvar_Get( "joy_rt_threshold", "-16384", FCVAR_ARCHIVE, "right trigger threshold. Value from -32768 to 32767" ); // emit a key event at 75% axis move - joy_side_key_threshold = Cvar_Get( "joy_side_key_threshold", "24576", CVAR_ARCHIVE, "side axis key event emit threshold. Value from 0 to 32767" ); - joy_forward_key_threshold = Cvar_Get( "joy_forward_key_threshold", "24576", CVAR_ARCHIVE, "forward axis key event emit threshold. Value from 0 to 32767"); + joy_side_key_threshold = Cvar_Get( "joy_side_key_threshold", "24576", FCVAR_ARCHIVE, "side axis key event emit threshold. Value from 0 to 32767" ); + joy_forward_key_threshold = Cvar_Get( "joy_forward_key_threshold", "24576", FCVAR_ARCHIVE, "forward axis key event emit threshold. Value from 0 to 32767"); // by default, we rely on deadzone detection come from system, but some glitchy devices report false deadzones - joy_side_deadzone = Cvar_Get( "joy_side_deadzone", "0", CVAR_ARCHIVE, "side axis deadzone. Value from 0 to 32767" ); - joy_forward_deadzone = Cvar_Get( "joy_forward_deadzone", "0", CVAR_ARCHIVE, "forward axis deadzone. Value from 0 to 32767"); - joy_pitch_deadzone = Cvar_Get( "joy_pitch_deadzone", "0", CVAR_ARCHIVE, "pitch axis deadzone. Value from 0 to 32767"); - joy_yaw_deadzone = Cvar_Get( "joy_yaw_deadzone", "0", CVAR_ARCHIVE, "yaw axis deadzone. Value from 0 to 32767" ); + joy_side_deadzone = Cvar_Get( "joy_side_deadzone", "0", FCVAR_ARCHIVE, "side axis deadzone. Value from 0 to 32767" ); + joy_forward_deadzone = Cvar_Get( "joy_forward_deadzone", "0", FCVAR_ARCHIVE, "forward axis deadzone. Value from 0 to 32767"); + joy_pitch_deadzone = Cvar_Get( "joy_pitch_deadzone", "0", FCVAR_ARCHIVE, "pitch axis deadzone. Value from 0 to 32767"); + joy_yaw_deadzone = Cvar_Get( "joy_yaw_deadzone", "0", FCVAR_ARCHIVE, "yaw axis deadzone. Value from 0 to 32767" ); - joy_axis_binding = Cvar_Get( "joy_axis_binding", "sfpyrl", CVAR_ARCHIVE, "axis hardware id to engine inner axis binding, " + joy_axis_binding = Cvar_Get( "joy_axis_binding", "sfpyrl", FCVAR_ARCHIVE, "axis hardware id to engine inner axis binding, " "s - side, f - forward, y - yaw, p - pitch, r - left trigger, l - right trigger" ); - joy_found = Cvar_Get( "joy_found", "0", CVAR_READ_ONLY, "total num of connected joysticks" ); + joy_found = Cvar_Get( "joy_found", "0", FCVAR_READ_ONLY, "total num of connected joysticks" ); // we doesn't loaded config.cfg yet, so this cvar is not archive. // change by +set joy_index in cmdline - joy_index = Cvar_Get( "joy_index", "0", CVAR_READ_ONLY, "current active joystick" ); + joy_index = Cvar_Get( "joy_index", "0", FCVAR_READ_ONLY, "current active joystick" ); - joy_enable = Cvar_Get( "joy_enable", "1", CVAR_ARCHIVE, "enable joystick" ); + joy_enable = Cvar_Get( "joy_enable", "1", FCVAR_ARCHIVE, "enable joystick" ); if( Sys_CheckParm("-nojoy" ) ) { @@ -443,14 +442,14 @@ void Joy_Init( void ) #if defined(XASH_SDL) // SDL can tell us about connected joysticks - Cvar_SetFloat( "joy_found", SDLash_JoyInit( joy_index->integer ) ); + Cvar_SetValue( "joy_found", SDLash_JoyInit( joy_index->value ) ); #elif defined(ANDROID) // Initalized after first Joy_AddEvent #else #warning "Any platform must implement platform-dependent JoyInit, start event system. Otherwise no joystick support" #endif - if( joy_found->integer > 0 ) + if( joy_found->value > 0 ) initialized = true; else initialized = false; @@ -465,7 +464,7 @@ Shutdown joystick code */ void Joy_Shutdown( void ) { - Cvar_SetFloat( "joy_found", 0 ); + Cvar_SetValue( "joy_found", 0 ); initialized = false; } diff --git a/engine/client/in_touch.c b/engine/client/in_touch.c index e9167fab..fef5104c 100644 --- a/engine/client/in_touch.c +++ b/engine/client/in_touch.c @@ -17,13 +17,12 @@ GNU General Public License for more details. #include "common.h" #include "gl_local.h" #include "input.h" +#include "mobility_int.h" #include "client.h" -#include "touch.h" #include "math.h" #include "vgui_draw.h" #ifdef XASH_SDL -#include -#include +#include #endif typedef enum @@ -154,10 +153,11 @@ convar_t *touch_joy_texture; // code looks smaller with it #define B(x) button->x -#define SCR_W (scr_width->value) -#define SCR_H (scr_height->value) -#define TO_SCRN_Y(x) (scr_height->integer * (x)) -#define TO_SCRN_X(x) (scr_width->integer * (x)) +#define SCR_W ((float)glState.width) +#define SCR_H ((float)glState.height) +#define TO_SCRN_Y(x) (glState.height * (x)) +#define TO_SCRN_X(x) (glState.width * (x)) + int pfnDrawCharacter( int x, int y, int number, int r, int g, int b ); static void IN_TouchCheckCoords( float *x1, float *y1, float *x2, float *y2 ); @@ -193,12 +193,12 @@ void IN_TouchWriteConfig( void ) FS_Printf( f, "touch_yaw \"%f\"\n", touch_yaw->value ); FS_Printf( f, "touch_forwardzone \"%f\"\n", touch_forwardzone->value ); FS_Printf( f, "touch_sidezone \"%f\"\n", touch_sidezone->value ); - FS_Printf( f, "touch_nonlinear_look \"%d\"\n", touch_nonlinear_look->integer ); + FS_Printf( f, "touch_nonlinear_look \"%d\"\n", (int)touch_nonlinear_look->value ); FS_Printf( f, "touch_pow_factor \"%f\"\n", touch_pow_factor->value ); FS_Printf( f, "touch_pow_mult \"%f\"\n", touch_pow_mult->value ); FS_Printf( f, "touch_exp_mult \"%f\"\n", touch_exp_mult->value ); FS_Printf( f, "\n// grid settings\n" ); - FS_Printf( f, "touch_grid_count \"%d\"\n", touch_grid_count->integer ); - FS_Printf( f, "touch_grid_enable \"%d\"\n", touch_grid_enable->integer ); + FS_Printf( f, "touch_grid_count \"%d\"\n", (int)touch_grid_count->value ); + FS_Printf( f, "touch_grid_enable \"%d\"\n", (int)touch_grid_enable->value ); FS_Printf( f, "\n// global overstroke (width, r, g, b, a)\n" ); FS_Printf( f, "touch_set_stroke %d %d %d %d %d\n", touch.swidth, touch.scolor[0], touch.scolor[1], touch.scolor[2], touch.scolor[3] ); FS_Printf( f, "\n// highlight when pressed\n" ); @@ -212,7 +212,7 @@ void IN_TouchWriteConfig( void ) FS_Printf( f, "\n// how much slowdown when Precise Look button pressed\n" ); FS_Printf( f, "touch_precise_amount \"%f\"\n", touch_precise_amount->value ); FS_Printf( f, "\n// enable/disable move indicator\n" ); - FS_Printf( f, "touch_move_indicator \"%d\"\n", touch_move_indicator->integer ); + FS_Printf( f, "touch_move_indicator \"%d\"\n", (int)touch_move_indicator->value ); FS_Printf( f, "\n// reset menu state when execing config\n" ); FS_Printf( f, "touch_setclientonly 0\n" ); @@ -267,7 +267,7 @@ void IN_TouchExportConfig_f( void ) touchbutton2_t *button; if( Q_strstr( name, "touch_presets/" ) ) { - FS_FileBase( name, profilebase ); + COM_FileBase( name, profilebase ); Q_snprintf( profilename, 256, "touch_profiles/%s (copy).cfg", profilebase ); } else Q_strncpy( profilename, name, 256 ); @@ -282,13 +282,13 @@ void IN_TouchExportConfig_f( void ) FS_Printf( f, "touch_yaw \"%f\"\n", touch_yaw->value ); FS_Printf( f, "touch_forwardzone \"%f\"\n", touch_forwardzone->value ); FS_Printf( f, "touch_sidezone \"%f\"\n", touch_sidezone->value ); - FS_Printf( f, "touch_nonlinear_look \"%d\"\n", touch_nonlinear_look->integer ); + FS_Printf( f, "touch_nonlinear_look \"%d\"\n", (int)touch_nonlinear_look->value ); FS_Printf( f, "touch_pow_factor \"%f\"\n", touch_pow_factor->value ); FS_Printf( f, "touch_pow_mult \"%f\"\n", touch_pow_mult->value ); FS_Printf( f, "touch_exp_mult \"%f\"\n", touch_exp_mult->value ); FS_Printf( f, "\n// grid settings\n" ); - FS_Printf( f, "touch_grid_count \"%d\"\n", touch_grid_count->integer ); - FS_Printf( f, "touch_grid_enable \"%d\"\n", touch_grid_enable->integer ); + FS_Printf( f, "touch_grid_count \"%d\"\n", (int)touch_grid_count->value ); + FS_Printf( f, "touch_grid_enable \"%d\"\n", (int)touch_grid_enable->value ); FS_Printf( f, "\n// global overstroke (width, r, g, b, a)\n" ); FS_Printf( f, "touch_set_stroke %d %d %d %d %d\n", touch.swidth, touch.scolor[0], touch.scolor[1], touch.scolor[2], touch.scolor[3] ); FS_Printf( f, "\n// highlight when pressed\n" ); @@ -302,7 +302,7 @@ void IN_TouchExportConfig_f( void ) FS_Printf( f, "\n// how much slowdown when Precise Look button pressed\n" ); FS_Printf( f, "touch_precise_amount \"%f\"\n", touch_precise_amount->value ); FS_Printf( f, "\n// enable/disable move indicator\n" ); - FS_Printf( f, "touch_move_indicator \"%d\"\n", touch_move_indicator->integer ); + FS_Printf( f, "touch_move_indicator \"%d\"\n", (int)touch_move_indicator->value ); FS_Printf( f, "\n// reset menu state when execing config\n" ); FS_Printf( f, "touch_setclientonly 0\n" ); @@ -358,10 +358,10 @@ void IN_TouchGenetateCode_f( void ) flags |= TOUCH_FL_HIDE; aspect = ( B(y2) - B(y1) ) / ( ( B(x2) - B(x1) ) /(SCR_H/SCR_W) ); - if( Q_memcmp( &c, &B(color), sizeof( rgba_t ) ) ) + if( memcmp( &c, &B(color), sizeof( rgba_t ) ) ) { Msg( "MakeRGBA( color, %d, %d, %d, %d );\n", B(color[0]), B(color[1]), B(color[2]), B(color[3]) ); - Q_memcpy( &c, &B(color), sizeof( rgba_t ) ); + memcpy( &c, &B(color), sizeof( rgba_t ) ); } Msg( "TOUCH_ADDDEFAULT( \"%s\", \"%s\", \"%s\", %f, %f, %f, %f, color, %d, %f, %d );\n", B(name), B(texturefile), B(command), @@ -894,7 +894,7 @@ void IN_TouchInit( void ) // touch.cfg touch_grid_count = Cvar_Get( "touch_grid_count", "50", 0, "touch grid count" ); touch_grid_enable = Cvar_Get( "touch_grid_enable", "1", 0, "enable touch grid" ); - touch_config_file = Cvar_Get( "touch_config_file", "touch.cfg", CVAR_ARCHIVE, "current touch profile file" ); + touch_config_file = Cvar_Get( "touch_config_file", "touch.cfg", FCVAR_ARCHIVE, "current touch profile file" ); touch_precise_amount = Cvar_Get( "touch_precise_amount", "0.5", 0, "sensitivity multiplier for precise-look" ); touch_highlight_r = Cvar_Get( "touch_highlight_r", "1.0", 0, "highlight r color" ); touch_highlight_g = Cvar_Get( "touch_highlight_g", "1.0", 0, "highlight g color" ); @@ -906,28 +906,28 @@ void IN_TouchInit( void ) touch_joy_texture = Cvar_Get( "touch_joy_texture", "touch_default/joy.tga", 0, "texture for move indicator"); // input devices cvar - touch_enable = Cvar_Get( "touch_enable", DEFAULT_TOUCH_ENABLE, CVAR_ARCHIVE, "enable touch controls" ); + touch_enable = Cvar_Get( "touch_enable", DEFAULT_TOUCH_ENABLE, FCVAR_ARCHIVE, "enable touch controls" ); #if defined(XASH_SDL) && defined(__ANDROID__) SDL_SetHint( SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH, "1" ); #endif touch.initialized = true; } -int pfnGetScreenInfo( SCREENINFO *pscrinfo ); + // must be called after executing config.cfg void IN_TouchInitConfig( void ) { if( !touch.initialized ) return; - pfnGetScreenInfo( NULL ); //HACK: update hud screen parameters like iHeight + CL_GetScreenInfo( NULL ); //HACK: update hud screen parameters like iHeight if( FS_FileExists( touch_config_file->string, true ) ) Cbuf_AddText( va( "exec \"%s\"\n", touch_config_file->string ) ); else IN_TouchLoadDefaults_f( ); - touch.closetexture = GL_LoadTexture( "touch_default/edit_close.tga", NULL, 0, TF_NOPICMIP, NULL ); - touch.hidetexture = GL_LoadTexture( "touch_default/edit_hide.tga", NULL, 0, TF_NOPICMIP, NULL ); - touch.showtexture = GL_LoadTexture( "touch_default/edit_show.tga", NULL, 0, TF_NOPICMIP, NULL ); - touch.resettexture = GL_LoadTexture( "touch_default/edit_reset.tga", NULL, 0, TF_NOPICMIP, NULL ); - touch.joytexture = GL_LoadTexture( touch_joy_texture->string, NULL, 0, TF_NOPICMIP, NULL ); + touch.closetexture = GL_LoadTexture( "touch_default/edit_close.tga", NULL, 0, TF_NOMIPMAP, NULL ); + touch.hidetexture = GL_LoadTexture( "touch_default/edit_hide.tga", NULL, 0, TF_NOMIPMAP, NULL ); + touch.showtexture = GL_LoadTexture( "touch_default/edit_show.tga", NULL, 0, TF_NOMIPMAP, NULL ); + touch.resettexture = GL_LoadTexture( "touch_default/edit_reset.tga", NULL, 0, TF_NOMIPMAP, NULL ); + touch.joytexture = GL_LoadTexture( touch_joy_texture->string, NULL, 0, TF_NOMIPMAP, NULL ); touch.configchanged = false; } qboolean IN_TouchIsVisible( touchbutton2_t *button ) @@ -983,8 +983,8 @@ static __inline int round(float f) } #endif -#define GRID_COUNT_X (touch_grid_count->integer) -#define GRID_COUNT_Y (touch_grid_count->integer * SCR_H / SCR_W) +#define GRID_COUNT_X (touch_grid_count->value) +#define GRID_COUNT_Y (touch_grid_count->value * SCR_H / SCR_W) #define GRID_X (1.0/GRID_COUNT_X) #define GRID_Y (SCR_W/SCR_H/GRID_COUNT_X) #define GRID_ROUND_X(x) ((float)round( x * GRID_COUNT_X ) / GRID_COUNT_X) @@ -1005,7 +1005,7 @@ static void IN_TouchCheckCoords( float *x1, float *y1, float *x2, float *y2 ) *y1 -= *y2 - 1, *y2 = 1; if( *x2 > 1 ) *x1 -= *x2 - 1, *x2 = 1; - if ( touch_grid_enable->integer ) + if ( touch_grid_enable->value ) { *x1 = GRID_ROUND_X( *x1 ); *x2 = GRID_ROUND_X( *x2 ); @@ -1115,7 +1115,7 @@ void Touch_DrawButtons( touchbuttonlist_t *list ) { if( button->texture == -1 ) { - button->texture = GL_LoadTexture( button->texturefile, NULL, 0, TF_NOPICMIP, NULL ); + button->texture = GL_LoadTexture( button->texturefile, NULL, 0, TF_NOMIPMAP, NULL ); } if( B(flags) & TOUCH_FL_DRAW_ADDITIVE ) @@ -1132,22 +1132,22 @@ void Touch_DrawButtons( touchbuttonlist_t *list ) TO_SCRN_Y(B(y1)), touch.swidth, TO_SCRN_Y(B(y2)-B(y1)) - touch.swidth, - 0, 0, 1, 1, cls.fillImage ); + 0, 0, 1, 1, tr.whiteTexture ); R_DrawStretchPic( TO_SCRN_X(B(x1)) + touch.swidth, TO_SCRN_Y(B(y1)), TO_SCRN_X(B(x2)-B(x1)) - touch.swidth, touch.swidth, - 0, 0, 1, 1, cls.fillImage ); + 0, 0, 1, 1, tr.whiteTexture ); R_DrawStretchPic( TO_SCRN_X(B(x2))-touch.swidth, TO_SCRN_Y(B(y1)) + touch.swidth, touch.swidth, TO_SCRN_Y(B(y2)-B(y1)) - touch.swidth, - 0, 0, 1, 1, cls.fillImage ); + 0, 0, 1, 1, tr.whiteTexture ); R_DrawStretchPic( TO_SCRN_X(B(x1)), TO_SCRN_Y(B(y2))-touch.swidth, TO_SCRN_X(B(x2)-B(x1)) - touch.swidth, touch.swidth, - 0, 0, 1, 1, cls.fillImage ); + 0, 0, 1, 1, tr.whiteTexture ); pglColor4ub( 255, 255, 255, 255 ); } } @@ -1155,9 +1155,9 @@ void Touch_DrawButtons( touchbuttonlist_t *list ) { rgba_t color; if( !( button->flags & TOUCH_FL_HIDE ) ) - Touch_DrawTexture( B(x1), B(y1), B(x2), B(y2), cls.fillImage, 255, 255, 0, 32 ); + Touch_DrawTexture( B(x1), B(y1), B(x2), B(y2), tr.whiteTexture, 255, 255, 0, 32 ); else - Touch_DrawTexture( B(x1), B(y1), B(x2), B(y2), cls.fillImage, 128, 128, 128, 128 ); + Touch_DrawTexture( B(x1), B(y1), B(x2), B(y2), tr.whiteTexture, 128, 128, 128, 128 ); MakeRGBA( color, 255, 255,127, 255 ); Con_DrawString( TO_SCRN_X( B(x1) ), TO_SCRN_Y( B(y1) ), B(name), color ); } @@ -1169,34 +1169,34 @@ void IN_TouchDraw( void ) { touchbutton2_t *button; - if( !touch.initialized || (!touch_enable->integer && !touch.clientonly) ) + if( !touch.initialized || (!touch_enable->value && !touch.clientonly) ) return; - if( cls.key_dest != key_game && touch_in_menu->integer == 0 ) + if( cls.key_dest != key_game && touch_in_menu->value == 0.0f ) return; GL_SetRenderMode( kRenderTransTexture ); - if( touch.state >= state_edit && touch_grid_enable->integer ) + if( touch.state >= state_edit && touch_grid_enable->value ) { float x; - if( touch_in_menu->integer ) - Touch_DrawTexture( 0, 0, 1, 1, cls.fillImage, 32, 32, 32, 255 ); + if( touch_in_menu->value ) + Touch_DrawTexture( 0, 0, 1, 1, tr.whiteTexture, 32, 32, 32, 255 ); else - Touch_DrawTexture( 0, 0, 1, 1, cls.fillImage, 0, 0, 0, 112 ); + Touch_DrawTexture( 0, 0, 1, 1, tr.whiteTexture, 0, 0, 0, 112 ); pglColor4ub( 0, 224, 224, 112 ); for ( x = 0; x < 1 ; x += GRID_X ) R_DrawStretchPic( TO_SCRN_X(x), 0, 1, TO_SCRN_Y(1), - 0, 0, 1, 1, cls.fillImage ); + 0, 0, 1, 1, tr.whiteTexture ); for ( x = 0; x < 1 ; x += GRID_Y ) R_DrawStretchPic( 0, TO_SCRN_Y(x), TO_SCRN_X(1), 1, - 0, 0, 1, 1, cls.fillImage ); + 0, 0, 1, 1, tr.whiteTexture ); } Touch_DrawButtons( &touch.list_user ); @@ -1212,13 +1212,13 @@ void IN_TouchDraw( void ) x2 = touch.edit->x2, y2 = touch.edit->y2; IN_TouchCheckCoords( &x1, &y1, &x2, &y2 ); - Touch_DrawTexture( x1, y1, x2, y2, cls.fillImage, 0, 255, 0, 32 ); + Touch_DrawTexture( x1, y1, x2, y2, tr.whiteTexture, 0, 255, 0, 32 ); } - Touch_DrawTexture( 0, 0, GRID_X, GRID_Y, cls.fillImage, 255, 255, 255, 64 ); + Touch_DrawTexture( 0, 0, GRID_X, GRID_Y, tr.whiteTexture, 255, 255, 255, 64 ); if( touch.selection ) { button = touch.selection; - Touch_DrawTexture( B(x1), B(y1), B(x2), B(y2), cls.fillImage, 255, 0, 0, 64 ); + Touch_DrawTexture( B(x1), B(y1), B(x2), B(y2), tr.whiteTexture, 255, 0, 0, 64 ); if( touch.showbuttons ) { if( button->flags & TOUCH_FL_HIDE ) @@ -1257,10 +1257,10 @@ void IN_TouchDraw( void ) { float width; float height; - if( touch_joy_texture->modified ) + if( FBitSet( touch_joy_texture->flags, FCVAR_CHANGED ) ) { - touch_joy_texture->modified = false; - touch.joytexture = GL_LoadTexture( touch_joy_texture->string, NULL, 0, TF_NOPICMIP, NULL ); + ClearBits( touch_joy_texture->flags, FCVAR_CHANGED ); + touch.joytexture = GL_LoadTexture( touch_joy_texture->string, NULL, 0, TF_NOMIPMAP, NULL ); } if( touch.move->type == touch_move ) { @@ -1354,9 +1354,9 @@ static void Touch_Motion( touchEventType type, int fingerID, float x, float y, f { // check bounds if( touch_forwardzone->value <= 0 ) - Cvar_SetFloat( "touch_forwardzone", 0.5 ); + Cvar_SetValue( "touch_forwardzone", 0.5 ); if( touch_sidezone->value <= 0 ) - Cvar_SetFloat( "touch_sidezone", 0.3 ); + Cvar_SetValue( "touch_sidezone", 0.3 ); if( !touch.move || touch.move->type == touch_move ) { @@ -1387,7 +1387,7 @@ static void Touch_Motion( touchEventType type, int fingerID, float x, float y, f if( touch.precision ) dx *= touch_precise_amount->value, dy *= touch_precise_amount->value; - if( touch_nonlinear_look->integer ); + if( touch_nonlinear_look->value ); { // save angle, modify only velocity float dabs = sqrt( dx*dx+dy*dy ); @@ -1548,7 +1548,7 @@ static qboolean Touch_ButtonEdit( touchEventType type, int fingerID, float x, fl if( ( y > GRID_Y * 2 ) && ( y < GRID_Y * 4 ) ) // close button { IN_TouchDisableEdit_f(); - if( touch_in_menu->integer ) + if( touch_in_menu->value ) { Cvar_Set( "touch_in_menu", "0" ); } @@ -1639,7 +1639,7 @@ int IN_TouchEvent( touchEventType type, int fingerID, float x, float y, float dx { // simulate menu mouse click - if( cls.key_dest != key_game && !touch_in_menu->integer ) + if( cls.key_dest != key_game && !touch_in_menu->value ) { touch.move_finger = touch.resize_finger = touch.look_finger = -1; // Hack for keyboard, hope it help @@ -1690,7 +1690,7 @@ int IN_TouchEvent( touchEventType type, int fingerID, float x, float y, float dx return 0; } - if( !touch.initialized || (!touch_enable->integer && !touch.clientonly) ) + if( !touch.initialized || (!touch_enable->value && !touch.clientonly) ) { #if 0 if( type == event_down ) @@ -1722,7 +1722,7 @@ void IN_TouchKeyEvent( int key, int down ) int xi, yi; float x, y; - if( touch_enable->integer ) + if( touch_enable->value ) return; if( !touch.clientonly ) diff --git a/engine/common/input.h b/engine/common/input.h index acd8a0d8..2dba7c2c 100644 --- a/engine/common/input.h +++ b/engine/common/input.h @@ -29,6 +29,7 @@ INPUT // // input.c // +extern qboolean in_mouseinitialized; void IN_Init( void ); void Host_InputFrame( void ); void IN_Shutdown( void ); diff --git a/engine/common/keys.c b/engine/common/keys.c index 84b68c09..75739a80 100644 --- a/engine/common/keys.c +++ b/engine/common/keys.c @@ -17,6 +17,9 @@ GNU General Public License for more details. #include "input.h" #include "client.h" #include "vgui_draw.h" +#ifdef XASH_SDL +#include "platform/sdl/events.h" +#endif // XASH_SDL typedef struct { @@ -681,6 +684,18 @@ void Key_Event( int key, qboolean down ) } } +void Key_EnableTextInput( qboolean enable, qboolean force ) +{ +#if XASH_INPUT == INPUT_SDL + SDLash_EnableTextInput( enable, force ); +#elif XASH_INPUT == INPUT_ANDROID + Android_EnableTextInput( enable, force ); +#endif +#if 0 + Joy_EnableTextInput( enable, force ); +#endif +} + /* ========= Key_SetKeyDest