/* ================ Message_Key In game talk message ================ */ void Message_Key( int key ) { char buffer[MAX_STRING_CHARS]; if (key == K_ESCAPE) { Key_SetCatcher( Key_GetCatcher( ) & ~KEYCATCH_MESSAGE ); Field_Clear( &chatField ); return; } if ( key == K_ENTER || key == K_KP_ENTER ) { if ( chatField.buffer[0] && cls.state == CA_ACTIVE ) { if (chat_playerNum != -1 ) Com_sprintf( buffer, sizeof( buffer ), "tell %i \"%s\"\n", chat_playerNum, chatField.buffer ); else if (chat_team) Com_sprintf( buffer, sizeof( buffer ), "say_team \"%s\"\n", chatField.buffer ); else Com_sprintf( buffer, sizeof( buffer ), "say \"%s\"\n", chatField.buffer ); CL_AddReliableCommand( buffer, qfalse ); } Key_SetCatcher( Key_GetCatcher( ) & ~KEYCATCH_MESSAGE ); Field_Clear( &chatField ); return; } Field_KeyDownEvent( &chatField, key ); }
/* =================== CL_CharEvent Normal keyboard characters, already shifted / capslocked / etc =================== */ void CL_CharEvent( int key ) { // delete is not a printable character and is // otherwise handled by Field_KeyDownEvent if ( key == 127 ) { return; } // distribute the key down event to the apropriate handler if ( Key_GetCatcher( ) & KEYCATCH_CONSOLE ) { Field_CharEvent( &g_consoleField, key ); } else if ( Key_GetCatcher( ) & KEYCATCH_UI ) { VM_Call( uivm, UI_KEY_EVENT, key | K_CHAR_FLAG, qtrue ); } else if ( Key_GetCatcher( ) & KEYCATCH_MESSAGE ) { Field_CharEvent( &chatField, key ); } else if ( cls.state == CA_DISCONNECTED ) { Field_CharEvent( &g_consoleField, key ); } }
/* ============== CL_CmdButtons ============== */ void CL_CmdButtons( usercmd_t *cmd ) { int i; // // figure button bits // send a button bit even if the key was pressed and released in // less than a frame // for (i = 0 ; i < MAX_KBUTTONS ; i++) { if ( in_buttons[i].active || in_buttons[i].wasPressed ) { cmd->buttons |= 1 << i; } in_buttons[i].wasPressed = qfalse; } if (cmd->buttons & BUTTON_FORCEPOWER) { //check for transferring a use force to a use inventory... if ((cmd->buttons & BUTTON_USE) || CL_NoUseableForce()) { //it's pushed, remap it! cmd->buttons &= ~BUTTON_FORCEPOWER; cmd->buttons |= BUTTON_USE_HOLDABLE; } } if ( Key_GetCatcher( ) ) { cmd->buttons |= BUTTON_TALK; } // allow the game to know if any key at all is // currently pressed, even if it isn't bound to anything if ( kg.anykeydown && Key_GetCatcher( ) == 0 ) { cmd->buttons |= BUTTON_ANY; } }
void Rocket_RocketDebug_f() { static bool init = false; if ( !init ) { Rocket::Debugger::Initialise(menuContext); init = true; } Rocket::Debugger::SetVisible( !Rocket::Debugger::IsVisible() ); if ( Rocket::Debugger::IsVisible() ) { if ( !Q_stricmp( Cmd_Argv( 1 ), "hud" ) ) { Rocket::Debugger::SetContext( hudContext ); } else { Rocket::Debugger::SetContext( menuContext ); } Key_SetCatcher( Key_GetCatcher() | KEYCATCH_UI ); } else { Key_SetCatcher( Key_GetCatcher() & ~KEYCATCH_UI ); } }
/* =================== CL_KeyUpEvent Called by CL_KeyEvent to handle a keyrelease =================== */ void CL_KeyUpEvent( int key, unsigned time ) { keys[key].repeats = 0; keys[key].down = qfalse; anykeydown--; if (anykeydown < 0) { anykeydown = 0; } // don't process key-up events for the console key if ( key == K_CONSOLE || ( key == K_ESCAPE && keys[K_SHIFT].down ) ) return; // // key up events only perform actions if the game key binding is // a button command (leading + sign). These will be processed even in // console mode and menu mode, to keep the character from continuing // an action started before a mode switch. // if( cls.state != CA_DISCONNECTED ) Key_ParseBinding( key, qfalse, time ); if ( Key_GetCatcher( ) & KEYCATCH_UI && uivm ) { VM_Call( uivm, UI_KEY_EVENT, key, qfalse ); } else if ( Key_GetCatcher( ) & KEYCATCH_CGAME && cgvm ) { VM_Call( cgvm, CG_KEY_EVENT, key, qfalse ); } }
/* ============== CL_CmdButtons ============== */ static void CL_CmdButtons( usercmd_t *cmd ) { int i; // // figure button bits // send a button bit even if the key was pressed and released in // less than a frame // for (i = 0 ; i < 15 ; i++) { if ( in_buttons[i].active || in_buttons[i].wasPressed ) { cmd->buttons |= 1 << i; } in_buttons[i].wasPressed = qfalse; } if ( Key_GetCatcher( ) ) { cmd->buttons |= BUTTON_TALK; } // allow the game to know if any key at all is // currently pressed, even if it isn't bound to anything if ( anykeydown && Key_GetCatcher( ) == 0 ) { cmd->buttons |= BUTTON_ANY; } }
int PortableInMenu(void){ if ((Key_GetCatcher( ) & KEYCATCH_UI) || (Key_GetCatcher( ) & KEYCATCH_CONSOLE) ) return 1; else return 0; }
void CL_MouseEvent( int dx, int dy, int time ) { if ( Key_GetCatcher( ) & KEYCATCH_UI ) { ui->MouseEvent( dx, dy ); } else if (Key_GetCatcher( ) & KEYCATCH_CGAME) { cgame->MouseEvent( dx, dy ); } else { cl.mouseDx[cl.mouseIndex] += dx; cl.mouseDy[cl.mouseIndex] += dy; } }
/* ================= CL_MouseEvent ================= */ void CL_MouseEvent( int dx, int dy, int time ) { if ( Key_GetCatcher( ) & KEYCATCH_UI ) { VM_Call( uivm, UI_MOUSE_EVENT, dx, dy ); } else if (Key_GetCatcher( ) & KEYCATCH_CGAME) { VM_Call (cgvm, CG_MOUSE_EVENT, dx, dy); } else { cl.mouseDx[cl.mouseIndex] += dx; cl.mouseDy[cl.mouseIndex] += dy; } }
void CG_Draw_IGME() { int i; usercmd_t cmd; int cmdNum; IGME_vehicle_t* veh; // check for selections cmdNum = CL_GetCurrentCmdNumber(); CL_GetUserCmd( cmdNum, &cmd ); if( Key_IsDown(K_MOUSE1) && !Key_GetCatcher() ) { if( (cgs.IGME.waypointmode && cgs.IGME.numWptSelections) || (!cgs.IGME.waypointmode && cgs.IGME.numSelections) ) { Key_SetCatcher( KEYCATCH_CGAME ); cgs.IGME.dragmode = true; } } else if( (Key_IsDown(K_MOUSE3) || Key_IsDown(K_SPACE)) && cg.time >= cgs.IGME.selectionTime ) { ME_CheckForSelection(); cgs.IGME.selectionTime = cg.time + 250; } else if( Key_IsDown(K_BACKSPACE) && !Key_GetCatcher() && cg.time >= cgs.IGME.selectionTime ) { ME_DeleteSelection(); cgs.IGME.selectionTime = cg.time + 250; } else if( (cmd.buttons & BUTTON_GEAR) && cg.time >= cgs.IGME.selectionTime ) { ME_ToggleWaypointMode(); cgs.IGME.selectionTime = cg.time + 250; } else if( (cmd.buttons & BUTTON_INCREASE) && cgs.IGME.waypointmode && cg.time >= cgs.IGME.selectionTime ) { ME_SpawnWaypoint(); cgs.IGME.selectionTime = cg.time + 250; } else if( (cmd.buttons & BUTTON_DECREASE) && cgs.IGME.waypointmode && cg.time >= cgs.IGME.selectionTime ) { ME_ToggleWaypointDisplay(); cgs.IGME.selectionTime = cg.time + 250; } else if( !cgs.IGME.dragmode && Key_IsDown(K_CTRL) && Key_IsDown('c') && cg.time >= cgs.IGME.selectionTime ) { ME_CopySelection(); cgs.IGME.selectionTime = cg.time + 500; } else if( !cgs.IGME.dragmode && Key_IsDown(K_CTRL) && Key_IsDown('v') && cg.time >= cgs.IGME.selectionTime ) { ME_PasteSelection(); cgs.IGME.selectionTime = cg.time + 500; } // draw vehicles for( i = 0; i < IGME_MAX_VEHICLES; ++i ) { veh = &cgs.IGME.vehicles[i]; if( !veh->active ) continue; ME_DrawVehicle(veh); } }
/* ================ Con_ToggleConsole_f ================ */ void Con_ToggleConsole_f (void) { // closing a full screen console restarts the demo loop if ( cls.state == CA_DISCONNECTED && Key_GetCatcher( ) == KEYCATCH_CONSOLE ) { CL_StartDemoLoop(); return; } if( con_autoclear->integer ) Field_Clear( &g_consoleField ); g_consoleField.widthInChars = g_console_field_width; Con_ClearNotify (); Key_SetCatcher( Key_GetCatcher( ) ^ KEYCATCH_CONSOLE ); }
/* ================ CG_MessageMode_f ================ */ void CG_MessageMode_f( void ) { Q_strncpyz( cg.messageCommand, "say", sizeof (cg.messageCommand) ); Q_strncpyz( cg.messagePrompt, "Say:", sizeof (cg.messagePrompt) ); MField_Clear( &cg.messageField ); cg.messageField.widthInChars = 30; Key_SetCatcher( Key_GetCatcher( ) ^ KEYCATCH_MESSAGE ); }
/* =============== IN_Frame =============== */ void IN_Frame( void ) { qboolean loading; IN_JoyMove( ); IN_ProcessEvents( ); // If not DISCONNECTED (main menu) or ACTIVE (in game), we're loading loading = !!( cls.state != CA_DISCONNECTED && cls.state != CA_ACTIVE ); if( !r_fullscreen->integer && ( Key_GetCatcher( ) & KEYCATCH_CONSOLE ) ) { // Console is down in windowed mode IN_DeactivateMouse( ); } else if( !r_fullscreen->integer && loading ) { // Loading in windowed mode IN_DeactivateMouse( ); } else if( !( SDL_GetAppState() & SDL_APPINPUTFOCUS ) ) { // Window not got focus IN_DeactivateMouse( ); } else IN_ActivateMouse( ); }
/* =============== IN_Frame =============== */ void IN_Frame( void ) { qboolean loading; IN_JoyMove( ); IN_ProcessEvents( ); // If not DISCONNECTED (main menu) or ACTIVE (in game), we're loading loading = ( clc.state != CA_DISCONNECTED && clc.state != CA_ACTIVE ); if( !Cvar_VariableIntegerValue("r_fullscreen") && ( Key_GetCatcher( ) & KEYCATCH_CONSOLE ) ) { // Console is down in windowed mode IN_DeactivateMouse( ); } else if( !Cvar_VariableIntegerValue("r_fullscreen") && loading ) { // Loading in windowed mode IN_DeactivateMouse( ); } else if( !( SDL_GetAppState() & SDL_APPINPUTFOCUS ) ) { // Window not got focus IN_DeactivateMouse( ); } else IN_ActivateMouse( ); /* in case we had to delay actual restart of video system... */ if ( (vidRestartTime != 0) && (vidRestartTime < Sys_Milliseconds()) ) { vidRestartTime = 0; Cbuf_AddText( "vid_restart\n" ); } }
void ME_KeyEvent(int key, bool down) { if( key == K_MOUSE1 && !down ) { Key_SetCatcher( Key_GetCatcher() & ~KEYCATCH_CGAME ); cgs.IGME.dragmode = false; } }
void IN_Frame(void) { qbool loading; IN_JoyMove( ); IN_ProcessEvents( ); /* If not DISCONNECTED (main menu) or ACTIVE (in game), we're loading */ loading = !!(clc.state != CA_DISCONNECTED && clc.state != CA_ACTIVE); if(!cvargeti("r_fullscreen") && (Key_GetCatcher( ) & KEYCATCH_CONSOLE)){ /* Console is down in windowed mode */ IN_DeactivateMouse( ); }else if(!cvargeti("r_fullscreen") && loading){ /* Loading in windowed mode */ IN_DeactivateMouse( ); }else if(!(SDL_GetAppState() & SDL_APPINPUTFOCUS)){ /* Window not got focus */ IN_DeactivateMouse( ); }else IN_ActivateMouse( ); /* in case we had to delay actual restart of video system... */ if((vidRestartTime != 0) && (vidRestartTime < sysmillisecs())){ vidRestartTime = 0; cbufaddstr("vid_restart"); } }
void SCR_PrecacheScreenshot() { // No screenshots unless connected to single player local server... // // char *psInfo = cl.gameState.stringData + cl.gameState.stringOffsets[ CS_SERVERINFO ]; // int iMaxClients = atoi(Info_ValueForKey( psInfo, "sv_maxclients" )); // (no need to check single-player status in voyager, this code base is all singleplayer) if ( cls.state != CA_ACTIVE ) { return; } if (!Key_GetCatcher( )) { // in-game... // // SCR_UnprecacheScreenshot(); // pbScreenData = (byte *)Z_Malloc(SG_SCR_WIDTH * SG_SCR_HEIGHT * 4); S_ClearSoundBuffer(); // clear DMA etc because the following glReadPixels() call can take ages re.GetScreenShot( (byte *) &bScreenData, SG_SCR_WIDTH, SG_SCR_HEIGHT); screenDataValid = qtrue; } }
void IN_Frame (void) { qboolean loading; IN_JoyMove( ); // If not DISCONNECTED (main menu) or ACTIVE (in game), we're loading loading = (qboolean)( cls.state != CA_DISCONNECTED && cls.state != CA_ACTIVE ); if( !cls.glconfig.isFullscreen && ( Key_GetCatcher( ) & KEYCATCH_CONSOLE ) ) { // Console is down in windowed mode IN_DeactivateMouse( ); } else if( !cls.glconfig.isFullscreen && loading ) { // Loading in windowed mode IN_DeactivateMouse( ); } else if( !( SDL_GetWindowFlags( SDL_window ) & SDL_WINDOW_INPUT_FOCUS ) ) { // Window not got focus IN_DeactivateMouse( ); } else IN_ActivateMouse( ); IN_ProcessEvents( ); }
void IN_VoiceChat (void) { if ( !( Key_GetCatcher( ) & KEYCATCH_UI ) ) { if ( clc.state == CA_ACTIVE && !clc.demoplaying ) { VM_Call( uivm, UI_SET_ACTIVE_MENU, UIMENU_VOICECHAT ); } } }
void IN_Frame(void) { qboolean loading; qboolean fullscreen = qtrue; IN_JoyMove(); IN_ProcessEvents(); // If not DISCONNECTED (main menu) or ACTIVE (in game), we're loading loading = !!(cls.state != CA_DISCONNECTED && cls.state != CA_ACTIVE); if (!fullscreen && ( (Key_GetCatcher() & KEYCATCH_CONSOLE) || loading || !SDL_GetWindowGrab(SDLvidscreen) )) { if (mouseActive) IN_DeactivateMouse(); } else { if (!mouseActive) IN_ActivateMouse(); } /* in case we had to delay actual restart of video system... */ if ((vidRestartTime != 0) && (vidRestartTime < Sys_Milliseconds())) { vidRestartTime = 0; Cbuf_AddText("vid_restart"); } }
/* =============== IN_Frame =============== */ void IN_Frame(void) { qboolean loading; IN_JoyMove(); IN_ProcessEvents(); // If not DISCONNECTED (main menu) or ACTIVE (in game), we're loading loading = (cls.state != CA_DISCONNECTED && cls.state != CA_ACTIVE); if(!cls.glconfig.isFullscreen && (Key_GetCatcher() & KEYCATCH_CONSOLE)) { // Console is down in windowed mode IN_DeactivateMouse(); } else if(!cls.glconfig.isFullscreen && loading) { // Loading in windowed mode IN_DeactivateMouse(); } else if(!( SDL_GetWindowFlags(SDL_window) & SDL_WINDOW_INPUT_FOCUS)) { // Window not got focus IN_DeactivateMouse(); } else IN_ActivateMouse(); // In case we had to delay actual restart of video system if( ( vidRestartTime != 0 ) && ( vidRestartTime < Sys_Milliseconds( ) ) ) { vidRestartTime = 0; Cbuf_AddText( "vid_restart\n" ); } }
/* =============== IN_Frame =============== */ void IN_Frame( void ) { qboolean loading; qboolean cursorShowing; IN_JoyMove( ); IN_ProcessEvents( ); // If not DISCONNECTED (main menu) or ACTIVE (in game), we're loading loading = !!( cls.state != CA_DISCONNECTED && cls.state != CA_ACTIVE ); cursorShowing = Key_GetCatcher( ) & KEYCATCH_UI; if( !r_fullscreen->integer && ( Key_GetCatcher( ) & KEYCATCH_CONSOLE ) ) { // Console is down in windowed mode IN_DeactivateMouse( ); } else if( !r_fullscreen->integer && loading ) { // Loading in windowed mode IN_DeactivateMouse( ); } /* else if( !r_fullscreen->integer && cursorShowing ) { // Use WM cursor when not fullscreen IN_DeactivateMouse( ); } */ else if( !( SDL_GetAppState() & SDL_APPINPUTFOCUS ) ) { // Window not got focus if( ( ( Key_GetCatcher( ) & KEYCATCH_CONSOLE ) && !r_fullscreen->integer ) || com_minimized->integer ) IN_DeactivateMouse( ); } else IN_ActivateMouse( ); /* if( !mouseActive ) { SDL_GetMouseState( &x, &y ); IN_SetUIMousePosition( x, y ); } */ }
/* ================= CL_MouseEvent ================= */ void CL_MouseEvent(int dx, int dy, int time) { if (g_clAutoMapMode && cgvm) { //automap input autoMapInput_t *data = (autoMapInput_t *)cl.mSharedMemory; g_clAutoMapInput.yaw = dx; g_clAutoMapInput.pitch = dy; memcpy(data, &g_clAutoMapInput, sizeof(autoMapInput_t)); VM_Call(cgvm, CG_AUTOMAP_INPUT, 1); g_clAutoMapInput.yaw = 0.0f; g_clAutoMapInput.pitch = 0.0f; } else if (Key_GetCatcher() & KEYCATCH_UI) { VM_Call(uivm, UI_MOUSE_EVENT, dx, dy); } else if (Key_GetCatcher() & KEYCATCH_CGAME) { VM_Call (cgvm, CG_MOUSE_EVENT, dx, dy); } else { cl.mouseDx[cl.mouseIndex] += dx; cl.mouseDy[cl.mouseIndex] += dy; } }
/* ==================== CL_ShutdonwCGame ==================== */ void CL_ShutdownCGame( void ) { Key_SetCatcher( Key_GetCatcher( ) & ~KEYCATCH_CGAME ); cls.cgameStarted = false; if ( !cls.cgame ) { return; } cls.cgame->Call( CG_SHUTDOWN ); delete cls.cgame; cls.cgame = nullptr; }
/* ==================== CL_ShutdonwCGame ==================== */ void CL_ShutdownCGame( void ) { Key_SetCatcher( Key_GetCatcher( ) & ~KEYCATCH_CGAME ); cls.cgameStarted = qfalse; if ( !cgvm ) { return; } VM_Call( cgvm, CG_SHUTDOWN ); VM_Free( cgvm ); cgvm = NULL; }
/* ==================== CL_ShutdownUI ==================== */ void CL_ShutdownUI( void ) { Key_SetCatcher( Key_GetCatcher( ) & ~KEYCATCH_UI ); cls.uiStarted = qfalse; if ( !uivm ) { return; } VM_Call( uivm, UI_SHUTDOWN ); VM_Free( uivm ); uivm = NULL; }
/* ==================== CL_ShutdownUI ==================== */ void CL_ShutdownUI( void ) { Key_SetCatcher( Key_GetCatcher( ) & ~KEYCATCH_UI ); if ( !cls.uiStarted ) return; cls.uiStarted = qfalse; CL_UnbindUI(); }
/* =============== IN_DeactivateMouse =============== */ void IN_DeactivateMouse( void ) { if( !SDL_WasInit( SDL_INIT_VIDEO ) ) return; // Always show the cursor when the mouse is disabled, // but not when fullscreen if( !r_fullscreen->integer ) { if( ( Key_GetCatcher( ) == KEYCATCH_UI ) && ( SDL_GetAppState( ) & (SDL_APPMOUSEFOCUS|SDL_APPINPUTFOCUS) ) == (SDL_APPMOUSEFOCUS|SDL_APPINPUTFOCUS) ) SDL_ShowCursor( 0 ); else SDL_ShowCursor( 1 ); } if( !mouseAvailable ) return; #ifdef MACOS_X_ACCELERATION_HACK if (mouseActive) // mac os x mouse accel hack { if(originalMouseSpeed != -1.0) { io_connect_t mouseDev = IN_GetIOHandle(); if(mouseDev != 0) { Com_Printf("restoring mouse acceleration to: %f\n", originalMouseSpeed); if(IOHIDSetAccelerationWithKey(mouseDev, CFSTR(kIOHIDMouseAccelerationType), originalMouseSpeed) != kIOReturnSuccess) Com_Printf("Could not re-enable mouse acceleration (failed at IOHIDSetAccelerationWithKey).\n"); IOServiceClose(mouseDev); } else Com_Printf("Could not re-enable mouse acceleration (failed at IO_GetIOHandle).\n"); } } #endif if( mouseActive ) { IN_GobbleMotionEvents( ); SDL_WM_GrabInput( SDL_GRAB_OFF ); // Don't warp the mouse unless the cursor is within the window if( SDL_GetAppState( ) & SDL_APPMOUSEFOCUS ) { int x, y; x = glConfig.vidWidth / 2, y = glConfig.vidHeight / 2; SDL_WarpMouse( x, y ); } mouseActive = qfalse; } }
/********** IN_CommonUpdate Updates thumbstick events based on _padInfo and ui_thumbStickMode **********/ void IN_CommonUpdate() { extern int Key_GetCatcher( void ); _UIRunning = Key_GetCatcher() == KEYCATCH_UI; // if the UI is running, then let all gamepad sticks work, else only main controller if(_UIRunning) Sys_QueEvent( 0, SE_MOUSE, _padInfo.joyInfo[1].x * 4.0f, _padInfo.joyInfo[1].y * -4.0f, 0, NULL ); else if(_padInfo.padId == IN_GetMainController()) { // Find out how to configure the thumbsticks //int thumbStickMode = Cvar_Get("ui_thumbStickMode", "0" , 0)->integer; int thumbStickMode = cl_thumbStickMode->integer; switch(thumbStickMode) { case 0: // Configure left thumbstick to move forward/back & strafe left/right Sys_QueEvent( 0, SE_JOYSTICK_AXIS, AXIS_SIDE, _padInfo.joyInfo[0].x * 127.0f, 0, NULL ); Sys_QueEvent( 0, SE_JOYSTICK_AXIS, AXIS_FORWARD, _padInfo.joyInfo[0].y * 127.0f, 0, NULL ); // Configure right thumbstick for freelook Sys_QueEvent( 0, SE_MOUSE, _padInfo.joyInfo[1].x * 48.0f, _padInfo.joyInfo[1].y * 48.0f, 0, NULL ); break; case 1: // Configure left thumbstick for freelook Sys_QueEvent( 0, SE_MOUSE, _padInfo.joyInfo[0].x * 48.0f, _padInfo.joyInfo[0].y * 48.0f, 0, NULL ); // Configure right thumbstick to move forward/back & strafe left/right Sys_QueEvent( 0, SE_JOYSTICK_AXIS, AXIS_SIDE, _padInfo.joyInfo[1].x * 127.0f, 0, NULL ); Sys_QueEvent( 0, SE_JOYSTICK_AXIS, AXIS_FORWARD, _padInfo.joyInfo[1].y * 127.0f, 0, NULL ); break; case 2: // Configure left thumbstick to move forward/back & turn left/right Sys_QueEvent( 0, SE_JOYSTICK_AXIS, AXIS_FORWARD, _padInfo.joyInfo[0].y * 127.0f, 0, NULL ); Sys_QueEvent( 0, SE_MOUSE, _padInfo.joyInfo[0].x * 48.0f, 0.0f, 0, NULL ); // Configure right thumbstick to look up/down & strafe left/right Sys_QueEvent( 0, SE_JOYSTICK_AXIS, AXIS_SIDE, _padInfo.joyInfo[1].x * 127.f, 0, NULL ); Sys_QueEvent( 0, SE_MOUSE, 0.0f, _padInfo.joyInfo[1].y * 48.0f, 0, NULL ); break; case 3: // Configure left thumbstick to look up/down & strafe left/right Sys_QueEvent( 0, SE_JOYSTICK_AXIS, AXIS_SIDE, _padInfo.joyInfo[0].x * 127.f, 0, NULL ); Sys_QueEvent( 0, SE_MOUSE, 0.0f, _padInfo.joyInfo[0].y * 48.0f, 0, NULL ); // Configure right thumbstick to move forward/back & turn left/right Sys_QueEvent( 0, SE_JOYSTICK_AXIS, AXIS_FORWARD, _padInfo.joyInfo[1].y * 127.0f, 0, NULL ); Sys_QueEvent( 0, SE_MOUSE, _padInfo.joyInfo[1].x * 48.0f, 0.0f, 0, NULL ); break; default: break; } } }
/* ================ CG_MessageMode4_f ================ */ void CG_MessageMode4_f( void ) { int playerNum = CG_LastAttacker( 0 ); if ( playerNum < 0 || playerNum >= MAX_CLIENTS ) { return; } Com_sprintf( cg.messageCommand, sizeof (cg.messageCommand), "tell %d", playerNum ); Com_sprintf( cg.messagePrompt, sizeof (cg.messagePrompt), "Tell %s:", cgs.playerinfo[ playerNum ].name ); MField_Clear( &cg.messageField ); cg.messageField.widthInChars = 30; Key_SetCatcher( Key_GetCatcher( ) ^ KEYCATCH_MESSAGE ); }