这篇教程C++ Cvar_SetValue函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中Cvar_SetValue函数的典型用法代码示例。如果您正苦于以下问题:C++ Cvar_SetValue函数的具体用法?C++ Cvar_SetValue怎么用?C++ Cvar_SetValue使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了Cvar_SetValue函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: CL_UISystemCalls/*====================CL_UISystemCallsThe 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;//.........这里部分代码省略.........
开发者ID:DaveHogan,项目名称:FQuake3,代码行数:101,
示例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;
开发者ID:qbism,项目名称:Quake2-colored-refsoft,代码行数:66,
示例3: SCR_SizeUp_f/* * Keybinding command */voidSCR_SizeUp_f(void){ Cvar_SetValue("viewsize", (float)scr_viewsize->value + 10);}
开发者ID:smcv,项目名称:yquake2,代码行数:8,
示例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);}
开发者ID:MyWifeRules,项目名称:ufoai-1,代码行数:69,
示例5: SCR_SizeDown_f/*=================SCR_SizeDown_fKeybinding command=================*/voidSCR_SizeDown_f(void){ Cvar_SetValue("viewsize", scr_viewsize.value - 10); vid.recalc_refdef = 1;}
开发者ID:AidHamza,项目名称:eviltoys,代码行数:13,
示例6: Key_Event/*===================Key_EventCalled by the system between frames for both key up and key down eventsShould 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;//.........这里部分代码省略.........
开发者ID:Slipyx,项目名称:r1q2,代码行数:101,
示例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 ); }}
开发者ID:MrLoick,项目名称:openarena-engine,代码行数:101,
示例8: IN_HandleEventsstatic 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; }//.........这里部分代码省略.........
开发者ID:Clever-Boy,项目名称:qfusion,代码行数:101,
示例9: ApplyChangesstatic voidApplyChanges(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"); }//.........这里部分代码省略.........
开发者ID:Jenco420,项目名称:yquake2,代码行数:101,
示例10: SCR_CalcRefdef/* SCR_CalcRefdef Must be called whenever vid changes Internal use only*/static voidSCR_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);}
开发者ID:luaman,项目名称:qforge-newtree,代码行数:95,
示例11: SCR_SizeDown_f/* SCR_SizeDown_f Keybinding command*/voidSCR_SizeDown_f (void){ Cvar_SetValue (scr_viewsize, scr_viewsize->int_val - 10); vid.recalc_refdef = 1;}
开发者ID:luaman,项目名称:qforge-newtree,代码行数:11,
示例12: CL_Framevoid 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; }//.........这里部分代码省略.........
开发者ID:Indie-Jones,项目名称:OpenJK,代码行数:101,
示例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; } }}
开发者ID:xycaleth,项目名称:ioq3,代码行数:101,
示例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;}
开发者ID:3ddy,项目名称:Jedi-Academy,代码行数:91,
示例15: WalkFuncstatic void WalkFunc (void *unused ){ float temp = s_options_vr_walkspeed_slider.curvalue / 10.0; temp += 0.5; Cvar_SetValue("vr_walkspeed",temp);}
开发者ID:Nephatrine,项目名称:nephq2,代码行数:6,
示例16: SV_LoadGame_fvoid SV_LoadGame_f (void) { extern cvar_t sv_progtype; char name[MAX_OSPATH], mapname[MAX_QPATH], str[32 * 1024], *start; FILE *f; float time, tfloat, spawn_parms[NUM_SPAWN_PARMS]; edict_t *ent; int entnum, version, r; unsigned int i; if (Cmd_Argc() != 2) { Com_Printf ("Usage: %s <savename> : load a game/n", Cmd_Argv(0)); return; } snprintf (name, sizeof (name), "%s/save/%s", com_gamedir, Cmd_Argv(1)); COM_DefaultExtension (name, ".sav"); Com_Printf ("Loading game from %s.../n", name); if (!(f = fopen (name, "rb"))) { Com_Printf ("ERROR: couldn't open./n"); return; } if (fscanf (f, "%i/n", &version) != 1) { fclose (f); Com_Printf ("Error reading savegame data/n"); return; } if (version != SAVEGAME_VERSION) { fclose (f); Com_Printf ("Savegame is version %i, not %i/n", version, SAVEGAME_VERSION); return; } if (fscanf (f, "%s/n", str) != 1) { fclose (f); Com_Printf ("Error reading savegame data/n"); return; } for (i = 0; i < NUM_SPAWN_PARMS; i++) { if (fscanf (f, "%f/n", &spawn_parms[i]) != 1) { fclose (f); Com_Printf ("Error reading savegame data/n"); return; } } // this silliness is so we can load 1.06 save files, which have float skill values if (fscanf (f, "%f/n", &tfloat) != 1) { fclose (f); Com_Printf ("Error reading savegame data/n"); return; } current_skill = (int)(tfloat + 0.1); Cvar_Set (&skill, va("%i", current_skill)); Cvar_SetValue (&deathmatch, 0); Cvar_SetValue (&coop, 0); Cvar_SetValue (&teamplay, 0); Cvar_SetValue (&maxclients, 1); Cvar_Set (&sv_progsname, "spprogs"); // force progsname#ifdef USE_PR2 Cvar_Set (&sv_progtype, "0"); // force .dat#endif if (fscanf (f, "%s/n", mapname) != 1) { fclose (f); Com_Printf ("Error reading savegame data/n"); return; } if (fscanf (f, "%f/n", &time) != 1) { fclose (f); Com_Printf ("Error reading savegame data/n"); return; } Host_EndGame(); CL_BeginLocalConnection (); SV_SpawnServer (mapname, false); if (sv.state != ss_active) { Com_Printf ("Couldn't load map/n"); fclose (f); return; } // load the light styles for (i = 0; i < MAX_LIGHTSTYLES; i++) { if (fscanf (f, "%s/n", str) != 1) { Com_Printf("Couldn't read lightstyles/n"); fclose (f); return; } sv.lightstyles[i] = (char *) Hunk_Alloc (strlen(str) + 1); strlcpy (sv.lightstyles[i], str, strlen(str) + 1); }//.........这里部分代码省略.........
开发者ID:AAS,项目名称:ezquake-source,代码行数:101,
示例17: SNDDMA_Initqboolean SNDDMA_Init(void){ ALconfig ac = NULL; ALpv pvbuf[2]; s_loadas8bit = Cvar_Get("s_loadas8bit", "16", CVAR_ARCHIVE); if ((int)s_loadas8bit->value) dma.samplebits = 8; else dma.samplebits = 16; if (dma.samplebits != 16) { Com_Printf("Don't currently support %i-bit data. Forcing 16-bit./n", dma.samplebits); dma.samplebits = 16; Cvar_SetValue( "s_loadas8bit", false ); } s_khz = Cvar_Get("s_khz", "0", CVAR_ARCHIVE); switch ((int)s_khz->value) { case 48: dma.speed = AL_RATE_48000; break; case 44: dma.speed = AL_RATE_44100; break; case 32: dma.speed = AL_RATE_32000; break; case 22: dma.speed = AL_RATE_22050; break; case 16: dma.speed = AL_RATE_16000; break; case 11: dma.speed = AL_RATE_11025; break; case 8: dma.speed = AL_RATE_8000; break; default: dma.speed = AL_RATE_22050; Com_Printf("Don't currently support %i kHz sample rate. Using %i./n", (int)s_khz->value, (int)(dma.speed/1000)); } sndchannels = Cvar_Get("sndchannels", "2", CVAR_ARCHIVE); dma.channels = (int)sndchannels->value; if (dma.channels != 2) Com_Printf("Don't currently support %i sound channels. Try 2./n", sndchannels); /***********************/ ac = alNewConfig(); alSetChannels( ac, AL_STEREO ); alSetSampFmt( ac, AL_SAMPFMT_TWOSCOMP ); alSetQueueSize( ac, QSND_BUFFER_FRAMES ); if (dma.samplebits == 8) alSetWidth( ac, AL_SAMPLE_8 ); else alSetWidth( ac, AL_SAMPLE_16 ); sgisnd_aport = alOpenPort( "Quake", "w", ac ); if (!sgisnd_aport) { printf( "failed to open audio port!/n" ); } // set desired sample rate pvbuf[0].param = AL_MASTER_CLOCK; pvbuf[0].value.i = AL_CRYSTAL_MCLK_TYPE; pvbuf[1].param = AL_RATE; pvbuf[1].value.ll = alIntToFixed( dma.speed ); alSetParams( alGetResource( sgisnd_aport ), pvbuf, 2 ); if (pvbuf[1].sizeOut < 0) printf( "illegal sample rate %d/n", dma.speed ); sgisnd_frames_per_ns = dma.speed * 1.0e-9; dma.samples = sizeof(dma_buffer)/(dma.samplebits/8); dma.submission_chunk = 1; dma.buffer = (unsigned char *)dma_buffer; dma.samplepos = 0; alFreeConfig( ac ); return true;}
开发者ID:AkBKukU,项目名称:Quake-2,代码行数:91,
示例18: IN_Init/*===============IN_Init===============*/void IN_Init( void ){ int appState; if( !SDL_WasInit( SDL_INIT_VIDEO ) ) { Com_Error( ERR_FATAL, "IN_Init called before SDL_Init( SDL_INIT_VIDEO )" ); return; } Com_DPrintf( "/n------- Input Initialization -------/n" ); in_keyboardDebug = Cvar_Get( "in_keyboardDebug", "0", CVAR_ARCHIVE ); // mouse variables in_mouse = Cvar_Get( "in_mouse", "1", CVAR_ARCHIVE ); in_nograb = Cvar_Get( "in_nograb", "0", CVAR_ARCHIVE ); in_joystick = Cvar_Get( "in_joystick", "0", CVAR_ARCHIVE|CVAR_LATCH ); in_joystickDebug = Cvar_Get( "in_joystickDebug", "0", CVAR_TEMP ); in_joystickThreshold = Cvar_Get( "joy_threshold", "0.15", CVAR_ARCHIVE ); cg_touchscreenControls = Cvar_Get ("cg_touchscreenControls", "0", CVAR_ARCHIVE); in_gyroscope = Cvar_Get ("in_gyroscope", "1", CVAR_ARCHIVE);#ifdef MACOS_X_ACCELERATION_HACK in_disablemacosxmouseaccel = Cvar_Get( "in_disablemacosxmouseaccel", "1", CVAR_ARCHIVE );#endif SDL_EnableUNICODE( 1 ); SDL_EnableKeyRepeat( SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL ); keyRepeatEnabled = qtrue; mouseAvailable = ( in_mouse->value != 0 ); IN_DeactivateMouse( ); appState = SDL_GetAppState( ); Cvar_SetValue( "com_unfocused", !( appState & SDL_APPINPUTFOCUS ) ); Cvar_SetValue( "com_minimized", !( appState & SDL_APPACTIVE ) ); IN_InitKeyLockStates( ); IN_InitJoystick( ); #ifdef __ANDROID__ hideScreenKeys = cl_runningOnOuya->integer; if (hideScreenKeys) { // Hide everything 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); SDL_ANDROID_SetScreenKeyboardButtonPos(SDL_ANDROID_SCREENKEYBOARD_BUTTON_TEXT, &rect); } #endif Com_DPrintf( "------------------------------------/n" );}
开发者ID:MrLoick,项目名称:openarena-engine,代码行数:66,
示例19: IN_ProcessEvents//.........这里部分代码省略......... IN_TranslateSDLToQ3Key( &e.key.keysym, &key, qfalse ); if ( key ) { Com_QueueEvent( 0, SE_KEY, key, qfalse, 0, NULL ); } break; case SDL_MOUSEMOTION: if ( mouseActive ) { Com_QueueEvent( 0, SE_MOUSE, e.motion.xrel, e.motion.yrel, 0, NULL ); } break; case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONUP: { unsigned char b; switch ( e.button.button ) { case 1: b = K_MOUSE1; break; case 2: b = K_MOUSE3; break; case 3: b = K_MOUSE2; break; case 4: b = K_MWHEELUP; break; case 5: b = K_MWHEELDOWN; break; case 6: b = K_MOUSE4; break; case 7: b = K_MOUSE5; break; default: b = K_AUX1 + ( e.button.button - 8 ) % 16; break; } Com_QueueEvent( 0, SE_KEY, b, ( e.type == SDL_MOUSEBUTTONDOWN ? qtrue : qfalse ), 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; } 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; } }}
开发者ID:SHOVELL,项目名称:Unvanquished,代码行数:101,
示例20: GLimp_InitGL//.........这里部分代码省略......... if ( ( pixelformat = ChoosePixelFormat( glw_state.hDC, &pfd)) == 0 ) { VID_Printf (PRINT_ALL, "GLimp_Init() - ChoosePixelFormat failed/n"); return false; } if ( SetPixelFormat( glw_state.hDC, pixelformat, &pfd) == FALSE ) { VID_Printf (PRINT_ALL, "GLimp_Init() - SetPixelFormat failed/n"); return false; } DescribePixelFormat( glw_state.hDC, pixelformat, sizeof( pfd ), &pfd ); if ( !( pfd.dwFlags & PFD_GENERIC_ACCELERATED ) ) { extern cvar_t *gl_allow_software; if ( gl_allow_software->value ) glw_state.mcd_accelerated = true; else glw_state.mcd_accelerated = false; } else { glw_state.mcd_accelerated = true; } } /* ** report if stereo is desired but unavailable */ if ( !( pfd.dwFlags & PFD_STEREO ) && ( stereo->value != 0 ) ) { VID_Printf( PRINT_ALL, "...failed to select stereo pixel format/n" ); Cvar_SetValue( "cl_stereo", 0 ); gl_state.stereo_enabled = false; } /* ** startup the OpenGL subsystem by creating a context and making ** it current */ if ( ( glw_state.hGLRC = qwglCreateContext( glw_state.hDC ) ) == 0 ) { VID_Printf (PRINT_ALL, "GLimp_Init() - qwglCreateContext failed/n"); goto fail; } if ( !qwglMakeCurrent( glw_state.hDC, glw_state.hGLRC ) ) { VID_Printf (PRINT_ALL, "GLimp_Init() - qwglMakeCurrent failed/n"); goto fail; } if ( !VerifyDriver() ) { VID_Printf( PRINT_ALL, "GLimp_Init() - no hardware acceleration detected./nPlease install drivers provided by your video card/GPU vendor./n" ); goto fail; } /* ** print out PFD specifics */ VID_Printf( PRINT_ALL, "PIXELFORMAT: color(%d-bits) Z(%d-bit)/n", ( int ) pfd.cColorBits, ( int ) pfd.cDepthBits );
开发者ID:AimHere,项目名称:thirty-flights-of-linux,代码行数:66,
示例21: UI_NodeSetProperty/** * @brief Set node property */bool UI_NodeSetProperty (uiNode_t* node, const value_t* property, const char* value){ const int specialType = property->type & V_UI_MASK; int result; size_t bytes; switch (specialType) { case V_NOT_UI: /* common type */ result = Com_ParseValue(node, value, property->type, property->ofs, property->size, &bytes); if (result != RESULT_OK) { Com_Printf("UI_NodeSetProperty: Invalid value for property '%s': %s/n", property->string, Com_GetLastParseError()); return false; } UI_Node_PropertyChanged(node, property); return true; case V_UI_CVAR: /* cvar */ switch ((int)property->type) { case V_UI_CVAR: if (Q_strstart(value, "*cvar:")) { char*& b = Com_GetValue<char*>(node, property); UI_FreeStringProperty(b); b = Mem_PoolStrDup(value, ui_dynStringPool, 0); UI_Node_PropertyChanged(node, property); return true; } break; case V_CVAR_OR_FLOAT: { float f; if (Q_strstart(value, "*cvar:")) { char*& b = Com_GetValue<char*>(node, property); UI_FreeStringProperty(b); b = Mem_PoolStrDup(value, ui_dynStringPool, 0); UI_Node_PropertyChanged(node, property); return true; } result = Com_ParseValue(&f, value, V_FLOAT, 0, sizeof(f), &bytes); if (result != RESULT_OK) { Com_Printf("UI_NodeSetProperty: Invalid value for property '%s': %s/n", property->string, Com_GetLastParseError()); return false; } void* const b = Com_GetValue<void*>(node, property); if (char const* const cvar = Q_strstart((char const*)b, "*cvar:")) Cvar_SetValue(cvar, f); else *(float*) b = f; UI_Node_PropertyChanged(node, property); return true; } case V_CVAR_OR_LONGSTRING: case V_CVAR_OR_STRING: { char*& b = Com_GetValue<char*>(node, property); UI_FreeStringProperty(b); b = Mem_PoolStrDup(value, ui_dynStringPool, 0); UI_Node_PropertyChanged(node, property); return true; } } break; case V_UI: switch ((int)property->type) { case V_UI_SPRITEREF: { uiSprite_t* sprite = UI_GetSpriteByName(value); Com_GetValue<uiSprite_t const*>(node, property) = sprite; UI_Node_PropertyChanged(node, property); return true; } } break; } Com_Printf("UI_NodeSetProperty: Unimplemented type for property '%[email C++ Cvar_Update函数代码示例 C++ Cvar_Set2函数代码示例
|