本文整理汇总了C++中Cvar_SetValue函数的典型用法代码示例。如果您正苦于以下问题:C++ Cvar_SetValue函数的具体用法?C++ Cvar_SetValue怎么用?C++ Cvar_SetValue使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Cvar_SetValue函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CL_UISystemCalls
/*
====================
CL_UISystemCalls
The ui module is making a system call
====================
*/
int CL_UISystemCalls( int *args ) {
switch( args[0] ) {
case UI_ERROR:
Com_Error( ERR_DROP, "%s", VMA(1) );
return 0;
case UI_PRINT:
Com_Printf( "%s", VMA(1) );
return 0;
case UI_MILLISECONDS:
return Sys_Milliseconds();
case UI_CVAR_REGISTER:
Cvar_Register( VMA(1), VMA(2), VMA(3), args[4] );
return 0;
case UI_CVAR_UPDATE:
Cvar_Update( VMA(1) );
return 0;
case UI_CVAR_SET:
Cvar_Set( VMA(1), VMA(2) );
return 0;
case UI_CVAR_VARIABLEVALUE:
return FloatAsInt( Cvar_VariableValue( VMA(1) ) );
case UI_CVAR_VARIABLESTRINGBUFFER:
Cvar_VariableStringBuffer( VMA(1), VMA(2), args[3] );
return 0;
case UI_CVAR_SETVALUE:
Cvar_SetValue( VMA(1), VMF(2) );
return 0;
case UI_CVAR_RESET:
Cvar_Reset( VMA(1) );
return 0;
case UI_CVAR_CREATE:
Cvar_Get( VMA(1), VMA(2), args[3] );
return 0;
case UI_CVAR_INFOSTRINGBUFFER:
Cvar_InfoStringBuffer( args[1], VMA(2), args[3] );
return 0;
case UI_ARGC:
return Cmd_Argc();
case UI_ARGV:
Cmd_ArgvBuffer( args[1], VMA(2), args[3] );
return 0;
case UI_CMD_EXECUTETEXT:
Cbuf_ExecuteText( args[1], VMA(2) );
return 0;
case UI_FS_FOPENFILE:
return FS_FOpenFileByMode( VMA(1), VMA(2), args[3] );
case UI_FS_READ:
FS_Read2( VMA(1), args[2], args[3] );
return 0;
case UI_FS_WRITE:
FS_Write( VMA(1), args[2], args[3] );
return 0;
case UI_FS_FCLOSEFILE:
FS_FCloseFile( args[1] );
return 0;
case UI_FS_GETFILELIST:
return FS_GetFileList( VMA(1), VMA(2), VMA(3), args[4] );
case UI_FS_SEEK:
return FS_Seek( args[1], args[2], args[3] );
case UI_R_REGISTERMODEL:
return re.RegisterModel( VMA(1) );
case UI_R_REGISTERSKIN:
return re.RegisterSkin( VMA(1) );
case UI_R_REGISTERSHADERNOMIP:
return re.RegisterShaderNoMip( VMA(1) );
case UI_R_CLEARSCENE:
re.ClearScene();
return 0;
//.........这里部分代码省略.........
示例2: MainWndProc
//.........这里部分代码省略.........
{
int fActive, fMinimized;
// KJB: Watch this for problems in fullscreen modes with Alt-tabbing.
fActive = LOWORD(wParam);
fMinimized = (BOOL) HIWORD(wParam);
AppActivate( fActive != WA_INACTIVE, fMinimized);
if ( reflib_active )
re.AppActivate( !( fActive == WA_INACTIVE ) );
}
return DefWindowProc (hWnd, uMsg, wParam, lParam);
case WM_MOVE:
{
int xPos, yPos;
RECT r;
int style;
if (!vid_fullscreen->value)
{
xPos = (short) LOWORD(lParam); // horizontal position
yPos = (short) HIWORD(lParam); // vertical position
r.left = 0;
r.top = 0;
r.right = 1;
r.bottom = 1;
style = GetWindowLong( hWnd, GWL_STYLE );
AdjustWindowRect( &r, style, FALSE );
Cvar_SetValue( "vid_xpos", xPos + r.left);
Cvar_SetValue( "vid_ypos", yPos + r.top);
vid_xpos->modified = false;
vid_ypos->modified = false;
if (ActiveApp)
IN_Activate (true);
}
}
return DefWindowProc (hWnd, uMsg, wParam, lParam);
// this is complicated because Win32 seems to pack multiple mouse events into
// one update sometimes, so we always check all states and look for events
case WM_LBUTTONDOWN:
case WM_LBUTTONUP:
case WM_RBUTTONDOWN:
case WM_RBUTTONUP:
case WM_MBUTTONDOWN:
case WM_MBUTTONUP:
case WM_MOUSEMOVE:
{
int temp;
temp = 0;
if (wParam & MK_LBUTTON)
temp |= 1;
if (wParam & MK_RBUTTON)
temp |= 2;
if (wParam & MK_MBUTTON)
temp |= 4;
示例3: SCR_SizeUp_f
/*
* Keybinding command
*/
void
SCR_SizeUp_f(void)
{
Cvar_SetValue("viewsize", (float)scr_viewsize->value + 10);
}
示例4: AC_UpdateMenu
/**
* @brief Updates the alienscont menu.
*/
static void AC_UpdateMenu (const base_t *base)
{
Cvar_Set("mn_al_alientype", "");
Cvar_Set("mn_al_alienimage", "");
Cvar_SetValue("mn_al_dead", 0);
Cvar_SetValue("mn_al_alive", 0);
Cvar_SetValue("mn_al_capacity", CAP_GetCurrent(base, CAP_ALIENS));
Cvar_SetValue("mn_al_capacity_max", CAP_GetMax(base, CAP_ALIENS));
/* Reset list. */
cgi->UI_ExecuteConfunc("aliencont_clear");
if (B_GetBuildingStatus(base, B_ALIEN_CONTAINMENT)) {
const aliensCont_t *containment = base->alienscont;
int i, j;
for (i = 0, j = 0; i < ccs.numAliensTD; i++) {
if (j < MAX_AC_MENU_ENTRIES) {
if (containment[i].teamDef) {
const technology_t *tech = containment[i].tech;
if (!tech) {
Com_Printf("AC_UpdateMenu: Tech entry for containment %i not set!\n", i);
/* to let the click function still work */
continue;
}
if (!aliencontCurrent) {
aliencontCurrent = &containment[i];
}
if (containment[i].amountAlive > 0 || containment[i].amountDead > 0) {
/* Generate a list entry. */
if (RS_IsResearched_ptr(tech)) {
Cvar_Set(va("mn_ac_statusstr%i", j), _("Researched"));
} else {
Cvar_Set(va("mn_ac_statusstr%i", j), _("Awaiting autopsy"));
if (!containment[i].amountDead) {
cgi->UI_ExecuteConfunc("aliencontkill %i", j);
} else {
cgi->UI_ExecuteConfunc("aliencontneedautopsy %i", j);
}
}
Cvar_SetValue(va("mn_ac_progress%i", j), (1 - tech->time / tech->overallTime) * 100);
/* Display name in the correct list-entry. */
Cvar_Set(va("mn_ac_name%i", j), _(containment[i].teamDef->name));
/* Display amount of dead aliens in the correct list-entry. */
Cvar_SetValue(va("mn_ac_dead%i", j), containment[i].amountDead);
/* Display number of live aliens in the correct list-entry. */
Cvar_SetValue(va("mn_ac_alive%i", j), containment[i].amountAlive);
j++;
}
}
}
}
numAliensOnList = j;
for (; j < MAX_AC_MENU_ENTRIES; j++) {
Cvar_Set(va("mn_ac_statusstr%i", j), _("Free slot"));
Cvar_Set(va("mn_ac_name%i", j), _("None"));
Cvar_Set(va("mn_ac_dead%i", j), "");
Cvar_Set(va("mn_ac_alive%i", j), "");
Cvar_SetValue(va("mn_ac_progress%i", j), 0);
}
}
/** @todo Select the containment we (maybe) just clicked again */
AC_AlienClick(base, 0);
}
示例5: SCR_SizeDown_f
/*
=================
SCR_SizeDown_f
Keybinding command
=================
*/
void
SCR_SizeDown_f(void)
{
Cvar_SetValue("viewsize", scr_viewsize.value - 10);
vid.recalc_refdef = 1;
}
示例6: Key_Event
/*
===================
Key_Event
Called by the system between frames for both key up and key down events
Should NOT be called during an interrupt!
===================
*/
void Key_Event (int key, qboolean down, uint32 time)
{
char *kb;
char cmd[1024];
// hack for modal presses
/*if (key_waiting == -1)
{
if (down)
key_waiting = key;
return;
}*/
//Com_Printf ("%d is %d for %u\n", LOG_GENERAL, key, down, time);
// update auto-repeat status
if (down)
{
key_repeats[key]++;
if (cls.key_dest != key_console && key != K_BACKSPACE && key != K_DEL && key != K_LEFTARROW && key != K_RIGHTARROW
&& key != K_PAUSE
&& key != K_PGUP
&& key != K_KP_PGUP
&& key != K_PGDN
&& key != K_KP_PGDN
&& key_repeats[key] > 1)
return; // ignore most autorepeats
if (key >= 200 && !keybindings[key])
Com_Printf ("%s is unbound, hit F4 to set.\n", LOG_CLIENT, Key_KeynumToString (key) );
}
else
{
key_repeats[key] = 0;
}
//for dinput
if (down && keydown[K_ALT])
{
if (key == K_ENTER)
{
Com_Printf ("ALT+Enter, setting fullscreen %d.\n", LOG_CLIENT, !vid_fullscreen->intvalue);
Cvar_SetValue( "vid_fullscreen", (float)!vid_fullscreen->intvalue );
return;
}
else if (key == K_TAB)
{
//prevent executing action on alt+tab
return;
}
}
if (key == K_SHIFT)
shift_down = down;
// console key is hardcoded, so the user can never unbind it
if ((key == '`' || key == '~') && !shift_down)
{
if (!down)
return;
Con_ToggleConsole_f ();
return;
}
// any key during the attract mode will bring up the menu
/*if (cl.attractloop && cls.key_dest != key_menu &&
!(key >= K_F1 && key <= K_F12))
key = K_ESCAPE;*/
// menu key is hardcoded, so the user can never unbind it
if (key == K_ESCAPE)
{
if (!down)
return;
if (cl.frame.playerstate.stats[STAT_LAYOUTS] && cls.key_dest == key_game)
{ // put away help computer / inventory
Cbuf_AddText ("cmd putaway\n");
return;
}
switch (cls.key_dest)
{
case key_message:
Key_Message (key);
break;
case key_menu:
M_Keydown (key);
break;
case key_game:
case key_console:
M_Menu_Main_f ();
break;
//.........这里部分代码省略.........
示例7: IN_ProcessEvents
//.........这里部分代码省略.........
if( e.jaxis.which == JOY_SDL_GYROSCOPE && e.jaxis.axis >= 5 && e.jaxis.axis <= 7 ) // joy 1 axes 5-7 = accelerometer
Com_QueueEvent( 0, SE_ACCELEROMETER, e.jaxis.axis - 5, e.jaxis.value, 0, NULL );
if( e.jaxis.which == JOY_SDL_GAMEPAD && e.jaxis.axis < 6 ) // joy 2-5 = gamepad
{
Com_QueueEvent( 0, SE_JOYSTICK_AXIS, e.jaxis.axis + JOY_AXIS_GAMEPADLEFT_X, e.jaxis.value, 0, NULL );
if ( !hideScreenKeys && e.jaxis.axis == JOY_AXIS_GAMEPADRIGHT_X - JOY_AXIS_GAMEPADLEFT_X && abs(e.jaxis.value) > 20000 )
{
hideScreenKeys = qtrue;
#ifdef __ANDROID__
SDL_Rect rect;
rect.x = rect.y = rect.w = rect.h = 0;
SDL_ANDROID_SetScreenKeyboardButtonPos(SDL_ANDROID_SCREENKEYBOARD_BUTTON_DPAD, &rect);
SDL_ANDROID_SetScreenKeyboardButtonPos(SDL_ANDROID_SCREENKEYBOARD_BUTTON_0, &rect);
SDL_ANDROID_SetScreenKeyboardButtonPos(SDL_ANDROID_SCREENKEYBOARD_BUTTON_1, &rect);
SDL_ANDROID_SetScreenKeyboardButtonPos(SDL_ANDROID_SCREENKEYBOARD_BUTTON_2, &rect);
SDL_ANDROID_SetScreenKeyboardButtonPos(SDL_ANDROID_SCREENKEYBOARD_BUTTON_3, &rect);
SDL_ANDROID_SetScreenKeyboardButtonPos(SDL_ANDROID_SCREENKEYBOARD_BUTTON_4, &rect);
SDL_ANDROID_SetScreenKeyboardButtonPos(SDL_ANDROID_SCREENKEYBOARD_BUTTON_5, &rect);
// Do not hide text input, we don't have gamepad key to invoke it
rect.w = rect.h = cls.glconfig.vidHeight / 10;
rect.x = rect.y = 0;
SDL_ANDROID_SetScreenKeyboardButtonPos(SDL_ANDROID_SCREENKEYBOARD_BUTTON_TEXT, &rect);
#endif
}
}
}
break;
case SDL_JOYBUTTONDOWN: // Android multitouch
case SDL_JOYBUTTONUP:
{
if( e.jbutton.which == JOY_SDL_TOUCHSCREEN && e.jbutton.button < MAX_POINTERS )
{
touchPointers[e.jbutton.button].pressed = (e.jbutton.state == SDL_PRESSED);
IN_ProcessTouchPoints();
}
}
break;
case SDL_JOYBALLMOTION: // Android multitouch
{
if( e.jaxis.which == JOY_SDL_TOUCHSCREEN && e.jball.ball < MAX_POINTERS )
{
int i;
touchPointers[e.jball.ball].x = e.jball.xrel;
touchPointers[e.jball.ball].y = e.jball.yrel;
if (cl_runningOnOuya->integer)
{
touchPointers[e.jball.ball].x = touchPointers[e.jball.ball].x * cls.glconfig.vidWidth / (cls.glconfig.vidWidth - cls.glconfig.vidWidth * OUYA_BORDER / 100 * 3 / 2) - cls.glconfig.vidWidth * OUYA_BORDER / 100;
touchPointers[e.jball.ball].y = touchPointers[e.jball.ball].y * cls.glconfig.vidHeight / (cls.glconfig.vidHeight - cls.glconfig.vidHeight * OUYA_BORDER / 100 * 3 / 2) - cls.glconfig.vidHeight * OUYA_BORDER / 100;
}
if( e.jball.ball == filteredTouch[0].idx )
Com_QueueEvent( 0, SE_MOUSE, touchPointers[e.jball.ball].x, touchPointers[e.jball.ball].y, 0, NULL );
if( e.jball.ball == filteredTouch[1].idx )
Com_QueueEvent( 0, SE_MOUSE2, touchPointers[e.jball.ball].x, touchPointers[e.jball.ball].y, 0, NULL );
}
}
break;
case SDL_QUIT:
Cbuf_ExecuteText(EXEC_NOW, "quit Closed window\n");
break;
case SDL_VIDEORESIZE:
{
char width[32], height[32];
Com_sprintf( width, sizeof(width), "%d", e.resize.w );
Com_sprintf( height, sizeof(height), "%d", e.resize.h );
Cvar_Set( "r_customwidth", width );
Cvar_Set( "r_customheight", height );
Cvar_Set( "r_mode", "-1" );
/* wait until user stops dragging for 1 second, so
we aren't constantly recreating the GL context while
he tries to drag...*/
vidRestartTime = Sys_Milliseconds() + 1000;
#ifdef __ANDROID__
vidRestartTime = Sys_Milliseconds();
#endif
}
break;
case SDL_ACTIVEEVENT:
if (e.active.state & SDL_APPINPUTFOCUS) {
Cvar_SetValue( "com_unfocused", !e.active.gain);
}
if (e.active.state & SDL_APPACTIVE) {
Cvar_SetValue( "com_minimized", !e.active.gain);
}
break;
default:
break;
}
}
if( deferredTouch > 0 )
{
deferredTouch --;
if( !deferredTouch )
Com_QueueEvent( 0, SE_KEY, K_MOUSE1, qtrue, 0, NULL );
}
}
示例8: IN_HandleEvents
static void IN_HandleEvents( void )
{
Uint16 *wtext = NULL;
SDL_PumpEvents();
SDL_Event event;
while( SDL_PollEvent( &event ) ) {
switch( event.type ) {
case SDL_KEYDOWN:
key_event( &event.key, true );
// Emulate copy/paste
#if defined( __APPLE__ )
#define KEYBOARD_COPY_PASTE_MODIFIER KMOD_GUI
#else
#define KEYBOARD_COPY_PASTE_MODIFIER KMOD_CTRL
#endif
if( event.key.keysym.sym == SDLK_c ) {
if( event.key.keysym.mod & KEYBOARD_COPY_PASTE_MODIFIER ) {
Key_CharEvent( KC_CTRLC, KC_CTRLC );
}
}
else if( event.key.keysym.sym == SDLK_v ) {
if( event.key.keysym.mod & KEYBOARD_COPY_PASTE_MODIFIER ) {
Key_CharEvent( KC_CTRLV, KC_CTRLV );
}
}
break;
case SDL_KEYUP:
key_event( &event.key, false );
break;
case SDL_TEXTINPUT:
// SDL_iconv_utf8_ucs2 uses "UCS-2-INTERNAL" as tocode and fails to convert text on Linux
// where SDL_iconv uses system iconv. So we force needed encoding directly
#if SDL_BYTEORDER == SDL_LIL_ENDIAN
#define UCS_2_INTERNAL "UCS-2LE"
#else
#define UCS_2_INTERNAL "UCS-2BE"
#endif
wtext = (Uint16 *)SDL_iconv_string( UCS_2_INTERNAL, "UTF-8", event.text.text, SDL_strlen( event.text.text ) + 1 );
if( wtext ) {
wchar_t charkey = wtext[0];
int key = ( charkey <= 255 ) ? charkey : 0;
Key_CharEvent( key, charkey );
SDL_free( wtext );
}
break;
case SDL_MOUSEMOTION:
mouse_motion_event( &event.motion );
break;
case SDL_MOUSEBUTTONDOWN:
mouse_button_event( &event.button, true );
break;
case SDL_MOUSEBUTTONUP:
mouse_button_event( &event.button, false );
break;
case SDL_MOUSEWHEEL:
mouse_wheel_event( &event.wheel );
break;
case SDL_QUIT:
Cbuf_ExecuteText( EXEC_NOW, "quit" );
break;
case SDL_WINDOWEVENT:
switch( event.window.event ) {
case SDL_WINDOWEVENT_SHOWN:
AppActivate( true );
break;
case SDL_WINDOWEVENT_HIDDEN:
AppActivate( false );
break;
case SDL_WINDOWEVENT_CLOSE:
break;
case SDL_WINDOWEVENT_FOCUS_GAINED:
input_focus = true;
break;
case SDL_WINDOWEVENT_FOCUS_LOST:
input_focus = false;
break;
case SDL_WINDOWEVENT_MOVED:
// FIXME: move this somewhere else
Cvar_SetValue( "vid_xpos", event.window.data1 );
Cvar_SetValue( "vid_ypos", event.window.data2 );
vid_xpos->modified = false;
vid_ypos->modified = false;
break;
}
break;
}
//.........这里部分代码省略.........
示例9: ApplyChanges
static void
ApplyChanges(void *unused)
{
qboolean restart = false;
/* custom mode */
if (s_mode_list.curvalue != CUSTOM_MODE)
{
/* Restarts automatically */
Cvar_SetValue("gl_mode", s_mode_list.curvalue);
}
else
{
/* Restarts automatically */
Cvar_SetValue("gl_mode", -1);
}
/* horplus */
if (s_aspect_list.curvalue == 0)
{
if (horplus->value != 1)
{
Cvar_SetValue("horplus", 1);
}
}
else
{
if (horplus->value != 0)
{
Cvar_SetValue("horplus", 0);
}
}
/* fov */
if (s_aspect_list.curvalue == 0 || s_aspect_list.curvalue == 1)
{
if (fov->value != 90)
{
/* Restarts automatically */
Cvar_SetValue("fov", 90);
}
}
else if (s_aspect_list.curvalue == 2)
{
if (fov->value != 86)
{
/* Restarts automatically */
Cvar_SetValue("fov", 86);
}
}
else if (s_aspect_list.curvalue == 3)
{
if (fov->value != 100)
{
/* Restarts automatically */
Cvar_SetValue("fov", 100);
}
}
else if (s_aspect_list.curvalue == 4)
{
if (fov->value != 106)
{
/* Restarts automatically */
Cvar_SetValue("fov", 106);
}
}
/* Restarts automatically */
Cvar_SetValue("vid_fullscreen", s_fs_box.curvalue);
/* vertical sync */
if (gl_swapinterval->value != s_vsync_list.curvalue)
{
Cvar_SetValue("gl_swapinterval", s_vsync_list.curvalue);
restart = true;
}
/* multisample anti-aliasing */
if (s_msaa_list.curvalue == 0)
{
if (gl_msaa_samples->value != 0)
{
Cvar_SetValue("gl_msaa_samples", 0);
restart = true;
}
}
else
{
if (gl_msaa_samples->value != pow(2, s_msaa_list.curvalue))
{
Cvar_SetValue("gl_msaa_samples", pow(2, s_msaa_list.curvalue));
restart = true;
}
}
if (restart)
{
Cbuf_AddText("vid_restart\n");
}
//.........这里部分代码省略.........
示例10: SCR_CalcRefdef
/*
SCR_CalcRefdef
Must be called whenever vid changes
Internal use only
*/
static void
SCR_CalcRefdef (void)
{
vrect_t vrect;
float size;
int h;
qboolean full = false;
scr_fullupdate = 0; // force a background redraw
vid.recalc_refdef = 0;
// force the status bar to redraw
Sbar_Changed ();
//========================================
// bound viewsize
Cvar_SetValue (scr_viewsize, bound (30, scr_viewsize->int_val, 120));
// bound field of view
Cvar_SetValue (scr_fov, bound (10, scr_fov->value, 170));
if (scr_viewsize->int_val >= 120)
sb_lines = 0; // no status bar at all
else if (scr_viewsize->int_val >= 110)
sb_lines = 24; // no inventory
else
sb_lines = 24 + 16 + 8;
if (scr_viewsize->int_val >= 100) {
full = true;
size = 100.0;
} else {
size = scr_viewsize->int_val;
}
// intermission is always full screen
if (cl.intermission) {
full = true;
size = 100.0;
sb_lines = 0;
}
size /= 100.0;
if (!cl_sbar->int_val && full)
h = vid.height;
else
h = vid.height - sb_lines;
r_refdef.vrect.width = vid.width * size + 0.5;
if (r_refdef.vrect.width < 96) {
size = 96.0 / r_refdef.vrect.width;
r_refdef.vrect.width = 96; // min for icons
}
r_refdef.vrect.height = vid.height * size + 0.5;
if (cl_sbar->int_val || !full) {
if (r_refdef.vrect.height > vid.height - sb_lines)
r_refdef.vrect.height = vid.height - sb_lines;
} else if (r_refdef.vrect.height > vid.height)
r_refdef.vrect.height = vid.height;
r_refdef.vrect.x = (vid.width - r_refdef.vrect.width) / 2;
if (full)
r_refdef.vrect.y = 0;
else
r_refdef.vrect.y = (h - r_refdef.vrect.height) / 2;
r_refdef.fov_x = scr_fov->int_val;
r_refdef.fov_y =
CalcFov (r_refdef.fov_x, r_refdef.vrect.width, r_refdef.vrect.height);
scr_vrect = r_refdef.vrect;
// these calculations mirror those in R_Init() for r_refdef, but take no
// account of water warping
vrect.x = 0;
vrect.y = 0;
vrect.width = vid.width;
vrect.height = vid.height;
R_SetVrect (&vrect, &scr_vrect, sb_lines);
// guard against going from one mode to another that's less than half the
// vertical resolution
if (scr_con_current > vid.height)
scr_con_current = vid.height;
// notify the refresh of the change
R_ViewChanged (&vrect, sb_lines, vid.aspect);
}
示例11: SCR_SizeDown_f
/*
SCR_SizeDown_f
Keybinding command
*/
void
SCR_SizeDown_f (void)
{
Cvar_SetValue (scr_viewsize, scr_viewsize->int_val - 10);
vid.recalc_refdef = 1;
}
示例12: CL_Frame
void CL_Frame ( int msec,float fractionMsec ) {
if ( !com_cl_running->integer ) {
return;
}
// load the ref / cgame if needed
CL_StartHunkUsers();
if ( cls.state == CA_DISCONNECTED && !( Key_GetCatcher( ) & KEYCATCH_UI )
&& !com_sv_running->integer ) {
// if disconnected, bring up the menu
if (!CL_CheckPendingCinematic()) // this avoid having the menu flash for one frame before pending cinematics
{
UI_SetActiveMenu( "mainMenu",NULL );
}
}
// if recording an avi, lock to a fixed fps
if ( cl_avidemo->integer ) {
// save the current screen
if ( cls.state == CA_ACTIVE ) {
if (cl_avidemo->integer > 0) {
Cbuf_ExecuteText( EXEC_NOW, "screenshot silent\n" );
} else {
Cbuf_ExecuteText( EXEC_NOW, "screenshot_tga silent\n" );
}
}
// fixed time for next frame
if (cl_avidemo->integer > 0) {
msec = 1000 / cl_avidemo->integer;
} else {
msec = 1000 / -cl_avidemo->integer;
}
}
// save the msec before checking pause
cls.realFrametime = msec;
// decide the simulation time
cls.frametime = msec;
if(cl_framerate->integer)
{
avgFrametime+=msec;
char mess[256];
if(!(frameCount&0x1f))
{
sprintf(mess,"Frame rate=%f\n\n",1000.0f*(1.0/(avgFrametime/32.0f)));
// OutputDebugString(mess);
Com_Printf(mess);
avgFrametime=0.0f;
}
frameCount++;
}
cls.frametimeFraction=fractionMsec;
cls.realtime += msec;
cls.realtimeFraction+=fractionMsec;
if (cls.realtimeFraction>=1.0f)
{
if (cl_newClock&&cl_newClock->integer)
{
cls.realtime++;
}
cls.realtimeFraction-=1.0f;
}
if ( cl_timegraph->integer ) {
SCR_DebugGraph ( cls.realFrametime * 0.25, 0 );
}
// see if we need to update any userinfo
CL_CheckUserinfo();
// if we haven't gotten a packet in a long time,
// drop the connection
CL_CheckTimeout();
// send intentions now
CL_SendCmd();
// resend a connection request if necessary
CL_CheckForResend();
// decide on the serverTime to render
CL_SetCGameTime();
if (cl_pano->integer && cls.state == CA_ACTIVE) { //grab some panoramic shots
int i = 1;
int pref = cl_pano->integer;
int oldnoprint = cl_noprint->integer;
Con_Close();
cl_noprint->integer = 1; //hide the screen shot msgs
for (; i <= cl_panoNumShots->integer; i++) {
Cvar_SetValue( "pano", i );
SCR_UpdateScreen();// update the screen
Cbuf_ExecuteText( EXEC_NOW, va("screenshot %dpano%02d\n", pref, i) ); //grab this screen
}
Cvar_SetValue( "pano", 0 ); //done
cl_noprint->integer = oldnoprint;
}
//.........这里部分代码省略.........
示例13: IN_ProcessEvents
//.........这里部分代码省略.........
}
if( utf32 != 0 )
{
if( IN_IsConsoleKey( 0, utf32 ) )
{
Com_QueueEvent( 0, SE_KEY, K_CONSOLE, qtrue, 0, NULL );
Com_QueueEvent( 0, SE_KEY, K_CONSOLE, qfalse, 0, NULL );
}
else
Com_QueueEvent( 0, SE_CHAR, utf32, 0, 0, NULL );
}
}
}
break;
case SDL_MOUSEMOTION:
if( mouseActive )
{
if( !e.motion.xrel && !e.motion.yrel )
break;
Com_QueueEvent( 0, SE_MOUSE, e.motion.xrel, e.motion.yrel, 0, NULL );
}
break;
case SDL_MOUSEBUTTONDOWN:
case SDL_MOUSEBUTTONUP:
{
int b;
switch( e.button.button )
{
case SDL_BUTTON_LEFT: b = K_MOUSE1; break;
case SDL_BUTTON_MIDDLE: b = K_MOUSE3; break;
case SDL_BUTTON_RIGHT: b = K_MOUSE2; break;
case SDL_BUTTON_X1: b = K_MOUSE4; break;
case SDL_BUTTON_X2: b = K_MOUSE5; break;
default: b = K_AUX1 + ( e.button.button - SDL_BUTTON_X2 + 1 ) % 16; break;
}
Com_QueueEvent( 0, SE_KEY, b,
( e.type == SDL_MOUSEBUTTONDOWN ? qtrue : qfalse ), 0, NULL );
}
break;
case SDL_MOUSEWHEEL:
if( e.wheel.y > 0 )
{
Com_QueueEvent( 0, SE_KEY, K_MWHEELUP, qtrue, 0, NULL );
Com_QueueEvent( 0, SE_KEY, K_MWHEELUP, qfalse, 0, NULL );
}
else if( e.wheel.y < 0 )
{
Com_QueueEvent( 0, SE_KEY, K_MWHEELDOWN, qtrue, 0, NULL );
Com_QueueEvent( 0, SE_KEY, K_MWHEELDOWN, qfalse, 0, NULL );
}
break;
case SDL_QUIT:
Cbuf_ExecuteText(EXEC_NOW, "quit Closed window\n");
break;
case SDL_WINDOWEVENT:
switch( e.window.event )
{
case SDL_WINDOWEVENT_RESIZED:
{
int width, height;
width = e.window.data1;
height = e.window.data2;
// check if size actually changed
if( cls.glconfig.vidWidth == width && cls.glconfig.vidHeight == height )
{
break;
}
Cvar_SetValue( "r_customwidth", width );
Cvar_SetValue( "r_customheight", height );
Cvar_Set( "r_mode", "-1" );
// Wait until user stops dragging for 1 second, so
// we aren't constantly recreating the GL context while
// he tries to drag...
vidRestartTime = Sys_Milliseconds( ) + 1000;
}
break;
case SDL_WINDOWEVENT_MINIMIZED: Cvar_SetValue( "com_minimized", 1 ); break;
case SDL_WINDOWEVENT_RESTORED:
case SDL_WINDOWEVENT_MAXIMIZED: Cvar_SetValue( "com_minimized", 0 ); break;
case SDL_WINDOWEVENT_FOCUS_LOST: Cvar_SetValue( "com_unfocused", 1 ); break;
case SDL_WINDOWEVENT_FOCUS_GAINED: Cvar_SetValue( "com_unfocused", 0 ); break;
}
break;
default:
break;
}
}
}
示例14: Cvar_SetValue
//-----------------------------------------------------------------------------
// Name: CommunicatorStatusUpdate
// Desc: XHV Callback - called when the engine detects that the status of a
// communicator has changed. May not be called if a communicator
// is quickly removed and re-inserted, but in that case there is
// nothing the game has to do.
//-----------------------------------------------------------------------------
HRESULT CVoiceManager::CommunicatorStatusUpdate( DWORD dwPort, XHV_VOICE_COMMUNICATOR_STATUS status )
{
// If we're not initialized, then do nothing
if( !m_bInitialized )
return S_OK;
if( status == XHV_VOICE_COMMUNICATOR_STATUS_INSERTED )
{ // Got a new headset:
// Let the UI know that we have a headset, so it can enable things!
Cvar_SetValue( "ui_headset", 1 );
// Awful UI hack. If we're on the online options screen, move off any item
// that just became disabled.
menuDef_t *menu = Menu_GetFocused();
if( menu && !Q_stricmp(menu->window.name, "xbl_onlineoptions") )
{
VM_Call( uivm, UI_KEY_EVENT, A_CURSOR_DOWN, qtrue ); // Send a "move the cursor down"
// Also, if we had "Speakers" selected, switch it to "Enabled"
if( Cvar_VariableIntegerValue( "ui_voiceMode" ) == 1 )
Cvar_SetValue( "ui_voiceMode", 2 );
}
// Always re-route voice to headset
m_XHVVoiceManager.SetVoiceThroughSpeakers( FALSE );
// Don't do anything else if banned, or voice is disabled:
if( m_bVoiceDisabled ||
(logged_on && !XOnlineIsUserVoiceAllowed( XBLLoggedOnUsers[ IN_GetMainController() ].xuid.dwUserFlags ) ) )
return S_OK;
// If we're logged onto live, update our voice flag
if( logged_on )
XBL_F_SetState( XONLINE_FRIENDSTATE_FLAG_VOICE, true );
// Finally, if we're in a session, update our status and tell everyone:
if( m_bRunning )
{
xbOnlineInfo.xbPlayerList[xbOnlineInfo.localIndex].flags |= VOICE_CAN_RECV;
xbOnlineInfo.xbPlayerList[xbOnlineInfo.localIndex].flags |= VOICE_CAN_SEND;
SendVoiceInfo( VOICEINFO_HAVEVOICE, NULL );
}
}
else if( status == XHV_VOICE_COMMUNICATOR_STATUS_REMOVED )
{ // Lost a headset:
// Let the UI know that we don't have a headset, so it can disable things!
Cvar_SetValue( "ui_headset", 0 );
// Awful UI hack. If we're on the online options screen, move off any item
// that just became disabled.
menuDef_t *menu = Menu_GetFocused();
if( menu && !Q_stricmp(menu->window.name, "xbl_onlineoptions") )
{
VM_Call( uivm, UI_KEY_EVENT, A_CURSOR_UP, qtrue ); // Send a "move the cursor up"
// Also, if we had "Enabled" selected, that's no longer valid. Change ui_voiceMode:
if( Cvar_VariableIntegerValue( "ui_voiceMode" ) == 2 )
Cvar_SetValue( "ui_voiceMode", 1 );
}
// If the user pulls the headset and it was set to "speakers" or "enabled",
// then change to "speakers"
m_XHVVoiceManager.SetVoiceThroughSpeakers( !m_bVoiceDisabled );
// Don't do anything else if banned, or voice is disabled:
if( m_bVoiceDisabled ||
(logged_on && !XOnlineIsUserVoiceAllowed( XBLLoggedOnUsers[ IN_GetMainController() ].xuid.dwUserFlags ) ) )
return S_OK;
// If we're logged onto live, update our voice flag
if( logged_on )
XBL_F_SetState( XONLINE_FRIENDSTATE_FLAG_VOICE, false );
// Finally, if we're in a session, update our status and tell everyone:
if( m_bRunning )
{
xbOnlineInfo.xbPlayerList[xbOnlineInfo.localIndex].flags |= VOICE_CAN_RECV;
xbOnlineInfo.xbPlayerList[xbOnlineInfo.localIndex].flags &= ~VOICE_CAN_SEND;
SendVoiceInfo( VOICEINFO_SPEAKERS, NULL );
}
}
return S_OK;
}
示例15: WalkFunc
static void WalkFunc (void *unused )
{
float temp = s_options_vr_walkspeed_slider.curvalue / 10.0;
temp += 0.5;
Cvar_SetValue("vr_walkspeed",temp);
}