这篇教程C++ Com_Error函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中Com_Error函数的典型用法代码示例。如果您正苦于以下问题:C++ Com_Error函数的具体用法?C++ Com_Error怎么用?C++ Com_Error使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了Com_Error函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: RE_BeginFrame/*====================RE_BeginFrameIf running in stereo, RE_BeginFrame will be called twicefor each RE_EndFrame====================*/void RE_BeginFrame( stereoFrame_t stereoFrame ) { drawBufferCommand_t *cmd; if ( !tr.registered ) { return; } glState.finishCalled = qfalse; tr.frameCount++; tr.frameSceneNum = 0; // // do overdraw measurement // if ( r_measureOverdraw->integer ) { if ( glConfig.stencilBits < 4 ) { Com_Printf ("Warning: not enough stencil bits to measure overdraw: %d/n", glConfig.stencilBits ); ri.Cvar_Set( "r_measureOverdraw", "0" ); r_measureOverdraw->modified = qfalse; } else if ( r_shadows->integer == 2 ) { Com_Printf ("Warning: stencil shadows and overdraw measurement are mutually exclusive/n" ); ri.Cvar_Set( "r_measureOverdraw", "0" ); r_measureOverdraw->modified = qfalse; } else { R_SyncRenderThread(); qglEnable( GL_STENCIL_TEST ); qglStencilMask( ~0U ); qglClearStencil( 0U ); qglStencilFunc( GL_ALWAYS, 0U, ~0U ); qglStencilOp( GL_KEEP, GL_INCR, GL_INCR ); } r_measureOverdraw->modified = qfalse; } else { // this is only reached if it was on and is now off if ( r_measureOverdraw->modified ) { R_SyncRenderThread(); qglDisable( GL_STENCIL_TEST ); } r_measureOverdraw->modified = qfalse; } // // texturemode stuff // if ( r_textureMode->modified || r_ext_texture_filter_anisotropic->modified) { R_SyncRenderThread(); GL_TextureMode( r_textureMode->string ); r_textureMode->modified = qfalse; r_ext_texture_filter_anisotropic->modified = qfalse; } // // gamma stuff // if ( r_gamma->modified ) { r_gamma->modified = qfalse; R_SyncRenderThread(); R_SetColorMappings(); } // check for errors if ( !r_ignoreGLErrors->integer ) { int err; R_SyncRenderThread(); if ( ( err = qglGetError() ) != GL_NO_ERROR ) { Com_Error( ERR_FATAL, "RE_BeginFrame() - glGetError() failed (0x%x)!/n", err ); } } // // draw buffer stuff // cmd = (drawBufferCommand_t *) R_GetCommandBuffer( sizeof( *cmd ) ); if ( !cmd ) { return; } cmd->commandId = RC_DRAW_BUFFER; if ( glConfig.stereoEnabled ) { if ( stereoFrame == STEREO_LEFT ) { cmd->buffer = (int)GL_BACK_LEFT; } else if ( stereoFrame == STEREO_RIGHT ) {//.........这里部分代码省略.........
开发者ID:Ichimoto,项目名称:OpenJK,代码行数:101,
示例2: BG_SiegeGetPairedValueint BG_SiegeGetPairedValue(char *buf, char *key, char *outbuf){ int i = 0; int j; int k; char checkKey[4096]; while (buf[i]) { if (buf[i] != ' ' && buf[i] != '{' && buf[i] != '}' && buf[i] != '/n' && buf[i] != '/r') { //we're on a valid character if (buf[i] == '/' && buf[i+1] == '/') { //this is a comment, so skip over it while (buf[i] && buf[i] != '/n' && buf[i] != '/r') { i++; } } else { //parse to the next space/endline/eos and check this value against our key value. j = 0; while (buf[i] != ' ' && buf[i] != '/n' && buf[i] != '/r' && buf[i] != SIEGECHAR_TAB && buf[i]) { if (buf[i] == '/' && buf[i+1] == '/') { //hit a comment, break out. break; } checkKey[j] = buf[i]; j++; i++; } checkKey[j] = 0; k = i; while (buf[k] && (buf[k] == ' ' || buf[k] == '/n' || buf[k] == '/r')) { k++; } if (buf[k] == '{') { //this is not the start of a value but rather of a group. We don't want to look in subgroups so skip over the whole thing. int openB = 0; while (buf[i] && (buf[i] != '}' || openB)) { if (buf[i] == '{') { openB++; } else if (buf[i] == '}') { openB--; } if (openB < 0) { Com_Error(ERR_DROP, "Unexpected closing bracket (too many) while parsing to end of group '%s'", checkKey); } if (buf[i] == '}' && !openB) { //this is the end of the group break; } i++; } if (buf[i] == '}') { i++; } } else { //Is this the one we want? if (buf[i] != '/' || buf[i+1] != '/') { //make sure we didn't stop on a comment, if we did then this is considered an error in the file. if (!Q_stricmp(checkKey, key)) { //guess so. Parse along to the next valid character, then put that into the output buffer and return 1. while ((buf[i] == ' ' || buf[i] == '/n' || buf[i] == '/r' || buf[i] == SIEGECHAR_TAB) && buf[i]) { i++; } if (buf[i]) { //We're at the start of the value now. qboolean parseToQuote = qfalse; if (buf[i] == '/"') { //if the value is in quotes, then stop at the next quote instead of ' ' i++; parseToQuote = qtrue; } j = 0; while ( ((!parseToQuote && buf[i] != ' ' && buf[i] != '/n' && buf[i] != '/r') || (parseToQuote && buf[i] != '/"')) ) {//.........这里部分代码省略.........
开发者ID:BSzili,项目名称:OpenJK,代码行数:101,
示例3: ClipSkyPolygon/*================ClipSkyPolygon================*/static void ClipSkyPolygon (int nump, vec3_t vecs, int stage) { float *norm; float *v; qboolean front, back; float d, e; float dists[MAX_CLIP_VERTS]; int sides[MAX_CLIP_VERTS]; vec3_t newv[2][MAX_CLIP_VERTS]; int newc[2]; int i, j; if (nump > MAX_CLIP_VERTS-2) Com_Error (ERR_DROP, "ClipSkyPolygon: MAX_CLIP_VERTS"); if (stage == 6) { // fully clipped, so draw it AddSkyPolygon (nump, vecs); return; } front = back = qfalse; norm = sky_clip[stage]; for (i=0, v = vecs ; i<nump ; i++, v+=3) { d = DotProduct (v, norm); if (d > ON_EPSILON) { front = qtrue; sides[i] = SIDE_FRONT; } else if (d < -ON_EPSILON) { back = qtrue; sides[i] = SIDE_BACK; } else sides[i] = SIDE_ON; dists[i] = d; } if (!front || !back) { // not clipped ClipSkyPolygon (nump, vecs, stage+1); return; } // clip it sides[i] = sides[0]; dists[i] = dists[0]; VectorCopy (vecs, (vecs+(i*3)) ); newc[0] = newc[1] = 0; for (i=0, v = vecs ; i<nump ; i++, v+=3) { switch (sides[i]) { case SIDE_FRONT: VectorCopy (v, newv[0][newc[0]]); newc[0]++; break; case SIDE_BACK: VectorCopy (v, newv[1][newc[1]]); newc[1]++; break; case SIDE_ON: VectorCopy (v, newv[0][newc[0]]); newc[0]++; VectorCopy (v, newv[1][newc[1]]); newc[1]++; break; } if (sides[i] == SIDE_ON || sides[i+1] == SIDE_ON || sides[i+1] == sides[i]) continue; d = dists[i] / (dists[i] - dists[i+1]); for (j=0 ; j<3 ; j++) { e = v[j] + d*(v[j+3] - v[j]); newv[0][newc[0]][j] = e; newv[1][newc[1]][j] = e; } newc[0]++; newc[1]++; } // continue ClipSkyPolygon (newc[0], newv[0][0], stage+1); ClipSkyPolygon (newc[1], newv[1][0], stage+1);}
开发者ID:3ddy,项目名称:Jedi-Academy,代码行数:95,
示例4: VID_LoadRefresh/*==============VID_LoadRefresh==============*/qboolean VID_LoadRefresh( char *name ){ refimport_t ri;#ifndef REF_HARD_LINKED GetRefAPI_t GetRefAPI;#endif if ( reflib_active ) { re.Shutdown(); VID_FreeReflib (); } Com_Printf( "------- Loading %s -------/n", name );#ifndef REF_HARD_LINKED if ( ( reflib_library = LoadLibrary( name ) ) == NULL ) { Com_Printf( "LoadLibrary(/"%s/") failed/n", name ); return false; }#endif ri.Cmd_AddCommand = Cmd_AddCommand; ri.Cmd_RemoveCommand = Cmd_RemoveCommand; ri.Cmd_Argc = Cmd_Argc; ri.Cmd_Argv = Cmd_Argv; ri.Cmd_ExecuteText = Cbuf_ExecuteText; ri.Con_Printf = VID_Printf; ri.Sys_Error = VID_Error; ri.FS_LoadFile = FS_LoadFile; ri.FS_FreeFile = FS_FreeFile; ri.FS_Gamedir = FS_Gamedir; ri.Cvar_Get = Cvar_Get; ri.Cvar_Set = Cvar_Set; ri.Cvar_SetValue = Cvar_SetValue; ri.Vid_GetModeInfo = VID_GetModeInfo; ri.Vid_MenuInit = VID_MenuInit; ri.Vid_NewWindow = VID_NewWindow;#ifndef REF_HARD_LINKED if ( ( GetRefAPI = (void *) GetProcAddress( reflib_library, "GetRefAPI" ) ) == NULL ) Com_Error( ERR_FATAL, "GetProcAddress failed on %s", name );#endif re = GetRefAPI( ri ); if (re.api_version != API_VERSION) { VID_FreeReflib (); Com_Error (ERR_FATAL, "%s has incompatible api_version", name); } if ( re.Init( global_hInstance, MainWndProc ) == -1 ) { re.Shutdown(); VID_FreeReflib (); return false; } Com_Printf( "------------------------------------/n"); reflib_active = true;//======//PGM vidref_val = VIDREF_OTHER; if(vid_ref) { if(!strcmp (vid_ref->string, "gl")) vidref_val = VIDREF_GL; else if(!strcmp(vid_ref->string, "soft")) vidref_val = VIDREF_SOFT; }//PGM//====== return true;}
开发者ID:basecq,项目名称:q2dos,代码行数:83,
示例5: BG_SiegeParseTeamFilevoid BG_SiegeParseTeamFile(const char *filename){ fileHandle_t f; int len; char teamInfo[2048]; char parseBuf[1024]; char lookString[256]; int i = 1; qboolean success = qtrue; len = trap->FS_Open(filename, &f, FS_READ); if (!f || len >= 2048) { return; } trap->FS_Read( teamInfo, len, f ); trap->FS_Close( f ); teamInfo[len] = 0; if (BG_SiegeGetPairedValue(teamInfo, "name", parseBuf)) { Q_strncpyz(bgSiegeTeams[bgNumSiegeTeams].name, parseBuf, sizeof(bgSiegeTeams[0].name)); } else { Com_Error(ERR_DROP, "Siege team with no name definition"); } //I don't entirely like doing things this way but it's the easiest way. #ifdef _CGAME if (BG_SiegeGetPairedValue(teamInfo, "FriendlyShader", parseBuf)) bgSiegeTeams[bgNumSiegeTeams].friendlyShader = trap->R_RegisterShaderNoMip(parseBuf); #else bgSiegeTeams[bgNumSiegeTeams].friendlyShader = 0; #endif bgSiegeTeams[bgNumSiegeTeams].numClasses = 0; if (BG_SiegeGetValueGroup(teamInfo, "Classes", teamInfo)) { while (success && i < MAX_SIEGE_CLASSES) { //keep checking for group values named class# up to MAX_SIEGE_CLASSES until we can't find one. Q_strncpyz(lookString, va("class%i", i), sizeof(lookString)); success = BG_SiegeGetPairedValue(teamInfo, lookString, parseBuf); if (!success) { break; } bgSiegeTeams[bgNumSiegeTeams].classes[bgSiegeTeams[bgNumSiegeTeams].numClasses] = BG_SiegeFindClassByName(parseBuf); if (!bgSiegeTeams[bgNumSiegeTeams].classes[bgSiegeTeams[bgNumSiegeTeams].numClasses]) { Com_Printf( "Invalid class specified: '%s'/n", parseBuf); } bgSiegeTeams[bgNumSiegeTeams].numClasses++; i++; } } if (!bgSiegeTeams[bgNumSiegeTeams].numClasses) { Com_Error(ERR_DROP, "Team defined with no allowable classes/n"); } //If we get here then it was a success, so increment the team number bgNumSiegeTeams++;}
开发者ID:BSzili,项目名称:OpenJK,代码行数:75,
示例6: SCR_DrawScreenField/* ================== SCR_DrawScreenField This will be called twice if rendering in stereo mode ================== */void SCR_DrawScreenField(stereoFrame_t stereoFrame) { re.BeginFrame(stereoFrame); // wide aspect ratio screens need to have the sides cleared // unless they are displaying game renderings if (cls.state != CA_ACTIVE && cls.state != CA_CINEMATIC) { if (cls.glconfig.vidWidth * 480 > cls.glconfig.vidHeight * 640) { re.SetColor(g_color_table[0]); re.DrawStretchPic(0, 0, cls.glconfig.vidWidth, cls.glconfig.vidHeight, 0, 0, 0, 0, cls.whiteShader); re.SetColor(NULL); } } // if the menu is going to cover the entire screen, we // don't need to render anything under it if (uivm && !VM_Call(uivm, UI_IS_FULLSCREEN)) { switch (cls.state) { default: Com_Error(ERR_FATAL, "SCR_DrawScreenField: bad cls.state"); break; case CA_CINEMATIC: SCR_DrawCinematic(); break; case CA_DISCONNECTED: // force menu up S_StopAllSounds(); VM_Call(uivm, UI_SET_ACTIVE_MENU, UIMENU_MAIN); break; case CA_CONNECTING: case CA_CHALLENGING: case CA_CONNECTED: // connecting clients will only show the connection dialog // refresh to update the time VM_Call(uivm, UI_REFRESH, cls.realtime); VM_Call(uivm, UI_DRAW_CONNECT_SCREEN, qfalse); break; case CA_LOADING: case CA_PRIMED: // draw the game information screen and loading progress CL_CGameRendering(stereoFrame); // also draw the connection information, so it doesn't // flash away too briefly on local or lan games // refresh to update the time VM_Call(uivm, UI_REFRESH, cls.realtime); VM_Call(uivm, UI_DRAW_CONNECT_SCREEN, qtrue); break; case CA_ACTIVE: // always supply STEREO_CENTER as vieworg offset is now done by the engine. CL_CGameRendering(stereoFrame); SCR_DrawDemoRecording();#ifdef USE_VOIP SCR_DrawVoipMeter();#endif break; } } // the menu draws next if (Key_GetCatcher() & KEYCATCH_UI && uivm) { VM_Call(uivm, UI_REFRESH, cls.realtime); } // console draws next Con_DrawConsole(); // debug graph can be drawn on top of anything if (cl_debuggraph->integer || cl_timegraph->integer || cl_debugMove->integer) { SCR_DrawDebugGraph(); }}
开发者ID:zturtleman,项目名称:q3rain,代码行数:78,
示例7: VM_CallCompiled/*==============VM_CallCompiledThis function is called directly by the generated code==============*/int VM_CallCompiled( vm_t *vm, int *args ) { int stack[1024]; int programCounter; int programStack; int stackOnEntry; byte *image; void *entryPoint; void *opStack; int *oldInstructionPointers; oldInstructionPointers = instructionPointers; currentVM = vm; instructionPointers = vm->instructionPointers; // interpret the code vm->currentlyInterpreting = qtrue; callMask = vm->dataMask; // we might be called recursively, so this might not be the very top programStack = vm->programStack; stackOnEntry = programStack; // set up the stack frame image = vm->dataBase; programCounter = 0; programStack -= 48; *(int *)&image[ programStack + 44] = args[9]; *(int *)&image[ programStack + 40] = args[8]; *(int *)&image[ programStack + 36] = args[7]; *(int *)&image[ programStack + 32] = args[6]; *(int *)&image[ programStack + 28] = args[5]; *(int *)&image[ programStack + 24] = args[4]; *(int *)&image[ programStack + 20] = args[3]; *(int *)&image[ programStack + 16] = args[2]; *(int *)&image[ programStack + 12] = args[1]; *(int *)&image[ programStack + 8 ] = args[0]; *(int *)&image[ programStack + 4 ] = 0; // return stack *(int *)&image[ programStack ] = -1; // will terminate the loop on return // off we go into generated code... entryPoint = vm->codeBase; opStack = &stack;#ifdef _MSC_VER __asm { pushad mov esi, programStack; mov edi, opStack call entryPoint mov programStack, esi mov opStack, edi popad }#else { static int memProgramStack; static void *memOpStack; static void *memEntryPoint; memProgramStack = programStack; memOpStack = opStack; memEntryPoint = entryPoint; __asm__(" pushal /n" / " movl %0,%%esi /n" / " movl %1,%%edi /n" / " call *%2 /n" / " movl %%esi,%0 /n" / " movl %%edi,%1 /n" / " popal /n" / : "=m" (memProgramStack), "=m" (memOpStack) / : "m" (memEntryPoint), "m" (memProgramStack), "m" (memOpStack) / : "si", "di" / ); programStack = memProgramStack; opStack = memOpStack; }#endif if ( opStack != &stack[1] ) { Com_Error( ERR_DROP, "opStack corrupted in compiled code" ); } if ( programStack != stackOnEntry - 48 ) { Com_Error( ERR_DROP, "programStack corrupted in compiled code" ); } vm->programStack = stackOnEntry;//.........这里部分代码省略.........
开发者ID:ghostmod,项目名称:PB-ioq3-for-UrbanTerror-4.1,代码行数:101,
示例8: CL_ActorRevitalised/** * @brief Kills an actor (all that is needed is the local entity state set to STATE_DEAD). * @note Also changes the animation to a random death sequence and appends the dead animation * @param[in] msg The netchannel message * @param[in] self Pointer to the event structure that is currently executed */void CL_ActorRevitalised (const eventRegister_t *self, struct dbuffer *msg){ le_t *le, *floor; int entnum, state; NET_ReadFormat(msg, self->formatString, &entnum, &state); /* get les */ le = LE_Get(entnum); if (!le) LE_NotFoundError(entnum); if (!LE_IsStunned(le) && !LE_IsLivingActor(le)) Com_Error(ERR_DROP, "CL_ActorRevitalised: Can't revitalise, LE is not a dead or stunned actor"); LE_Lock(le); /* link any floor container into the actor temp floor container */ floor = LE_Find(ET_ITEM, le->pos); if (floor) FLOOR(le) = FLOOR(floor); le->state = state; /* play animation */ LE_SetThink(le, LET_StartIdle); /* Print some info about the death or stun. */ if (le->team == cls.team) { const character_t *chr = CL_ActorGetChr(le); if (chr) { char tmpbuf[128]; Com_sprintf(tmpbuf, lengthof(tmpbuf), _("%s was revitalised/n"), chr->name); HUD_DisplayMessage(tmpbuf); } } else { switch (le->team) { case (TEAM_CIVILIAN): HUD_DisplayMessage(_("A civilian was revitalised./n")); break; case (TEAM_ALIEN): HUD_DisplayMessage(_("An alien was revitalised./n")); break; case (TEAM_PHALANX): HUD_DisplayMessage(_("A soldier was revitalised./n")); break; default: HUD_DisplayMessage(va(_("A member of team %i was revitalised./n"), le->team)); break; } } VectorCopy(player_maxs, le->maxs); /* add team members to the actor list */ CL_ActorAddToTeamList(le); /* update pathing as we maybe not can walk onto this actor anymore */ CL_ActorConditionalMoveCalc(selActor); LE_Unlock(le);}
开发者ID:kevlund,项目名称:ufoai,代码行数:68,
示例9: sizeof//.........这里部分代码省略......... continue; // we've dropped at least one sound, so try again with the malloc }#ifndef DEDICATED // ditch any image_t's (and associated GL memory) not used on this level... // extern qboolean RE_RegisterImages_LevelLoadEnd(void); if (RE_RegisterImages_LevelLoadEnd()) { gbMemFreeupOccured = qtrue; continue; // we've dropped at least one image, so try again with the malloc }#endif // ditch the model-binaries cache... (must be getting desperate here!) // extern qboolean RE_RegisterModels_LevelLoadEnd(qboolean bDeleteEverythingNotUsedThisLevel); if (RE_RegisterModels_LevelLoadEnd(qtrue)) { gbMemFreeupOccured = qtrue; continue; } // as a last panic measure, dump all the audio memory, but not if we're in the audio loader // (which is annoying, but I'm not sure how to ensure we're not dumping any memory needed by the sound // currently being loaded if that was the case)... // // note that this keeps querying until it's freed up as many bytes as the requested size, but freeing // several small blocks might not mean that one larger one is satisfiable after freeup, however that'll // just make it go round again and try for freeing up another bunch of blocks until the total is satisfied // again (though this will have freed twice the requested amount in that case), so it'll either work // eventually or not free up enough and drop through to the final ERR_DROP. No worries... // extern qboolean gbInsideLoadSound; extern int SND_FreeOldestSound(); if (!gbInsideLoadSound) { int iBytesFreed = SND_FreeOldestSound(); if (iBytesFreed) { int iTheseBytesFreed = 0; while ( (iTheseBytesFreed = SND_FreeOldestSound()) != 0) { iBytesFreed += iTheseBytesFreed; if (iBytesFreed >= iRealSize) break; // early opt-out since we've managed to recover enough (mem-contiguity issues aside) } gbMemFreeupOccured = qtrue; continue; } } // sigh, dunno what else to try, I guess we'll have to give up and report this as an out-of-mem error... // // findlabel: "recovermem" Com_Printf(S_COLOR_RED"Z_Malloc(): Failed to alloc %d bytes (TAG_%s) !!!!!/n", iSize, psTagStrings[eTag]); Z_Details_f(); Com_Error(ERR_FATAL,"(Repeat): Z_Malloc(): Failed to alloc %d bytes (TAG_%s) !!!!!/n", iSize, psTagStrings[eTag]); return NULL; } } // Link in pMemory->iMagic = ZONE_MAGIC; pMemory->eTag = eTag; pMemory->iSize = iSize; pMemory->pNext = TheZone.Header.pNext; TheZone.Header.pNext = pMemory; if (pMemory->pNext) { pMemory->pNext->pPrev = pMemory; } pMemory->pPrev = &TheZone.Header; // // add tail... // ZoneTailFromHeader(pMemory)->iMagic = ZONE_MAGIC; // Update stats... // TheZone.Stats.iCurrent += iSize; TheZone.Stats.iCount++; TheZone.Stats.iSizesPerTag [eTag] += iSize; TheZone.Stats.iCountsPerTag [eTag]++; if (TheZone.Stats.iCurrent > TheZone.Stats.iPeak) { TheZone.Stats.iPeak = TheZone.Stats.iCurrent; }#ifdef DETAILED_ZONE_DEBUG_CODE mapAllocatedZones[pMemory]++;#endif Z_Validate(); // check for corruption void *pvReturnMem = &pMemory[1]; return pvReturnMem;}
开发者ID:AlexCSilva,项目名称:jediacademy,代码行数:101,
示例10: CL_UISystemCalls/*====================CL_UISystemCallsThe ui module is making a system call====================*/intptr_t CL_UISystemCalls( intptr_t *args ) { switch( args[0] ) { //rww - alright, DO NOT EVER add a GAME/CGAME/UI generic call without adding a trap to match, and //all of these traps must be shared and have cases in sv_game, cl_cgame, and cl_ui. They must also //all be in the same order, and start at 100. case TRAP_MEMSET: Com_Memset( VMA(1), args[2], args[3] ); return 0; case TRAP_MEMCPY: Com_Memcpy( VMA(1), VMA(2), args[3] ); return 0; case TRAP_STRNCPY: strncpy( (char *)VMA(1), (const char *)VMA(2), args[3] ); return args[1]; case TRAP_SIN: return FloatAsInt( sin( VMF(1) ) ); case TRAP_COS: return FloatAsInt( cos( VMF(1) ) ); case TRAP_ATAN2: return FloatAsInt( atan2( VMF(1), VMF(2) ) ); case TRAP_SQRT: return FloatAsInt( sqrt( VMF(1) ) ); case TRAP_MATRIXMULTIPLY: MatrixMultiply( (vec3_t *)VMA(1), (vec3_t *)VMA(2), (vec3_t *)VMA(3) ); return 0; case TRAP_ANGLEVECTORS: AngleVectors( (const float *)VMA(1), (float *)VMA(2), (float *)VMA(3), (float *)VMA(4) ); return 0; case TRAP_PERPENDICULARVECTOR: PerpendicularVector( (float *)VMA(1), (const float *)VMA(2) ); return 0; case TRAP_FLOOR: return FloatAsInt( floor( VMF(1) ) ); case TRAP_CEIL: return FloatAsInt( ceil( VMF(1) ) ); case TRAP_TESTPRINTINT: return 0; case TRAP_TESTPRINTFLOAT: return 0; case TRAP_ACOS: return FloatAsInt( Q_acos( VMF(1) ) ); case TRAP_ASIN: return FloatAsInt( Q_asin( VMF(1) ) ); 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( (vmCvar_t *)VMA(1), (const char *)VMA(2), (const char *)VMA(3), args[4] ); return 0; case UI_CVAR_UPDATE: Cvar_Update( (vmCvar_t *)VMA(1) ); return 0; case UI_CVAR_SET: Cvar_Set( (const char *)VMA(1), (const char *)VMA(2) ); return 0; case UI_CVAR_VARIABLEVALUE: return FloatAsInt( Cvar_VariableValue( (const char *)VMA(1) ) ); case UI_CVAR_VARIABLESTRINGBUFFER: Cvar_VariableStringBuffer( (const char *)VMA(1), (char *)VMA(2), args[3] ); return 0; case UI_CVAR_SETVALUE: Cvar_SetValue( (const char *)VMA(1), VMF(2) ); return 0; case UI_CVAR_RESET: Cvar_Reset( (const char *)VMA(1) ); return 0; case UI_CVAR_CREATE: Cvar_Get( (const char *)VMA(1), (const char *)VMA(2), args[3] ); return 0; case UI_CVAR_INFOSTRINGBUFFER: Cvar_InfoStringBuffer( args[1], (char *)VMA(2), args[3] ); return 0; case UI_ARGC: return Cmd_Argc();//.........这里部分代码省略.........
开发者ID:Nautilator2k10,项目名称:OpenJK,代码行数:101,
示例11: trap_Parse_LoadSource/*============BG_VoiceParse============*/static voiceCmd_t *BG_VoiceParse( const char *name ){ voiceCmd_t *voiceCmds = NULL; voiceCmd_t *top = NULL; pc_token_t token; qboolean parsingCmd = qfalse; int handle; handle = trap_Parse_LoadSource( va( "voice/%s.voice", name ) ); if ( !handle ) { return NULL; } while ( trap_Parse_ReadToken( handle, &token ) ) { if ( parsingCmd ) { if ( token.string[ 0 ] == '{' ) { voiceCmds->tracks = BG_VoiceParseCommand( handle ); parsingCmd = qfalse; continue; } else { int line; char filename[ MAX_QPATH ]; trap_Parse_SourceFileAndLine( handle, filename, &line ); Com_Error( ERR_FATAL, "BG_VoiceParse(): " "parse error on line %d of %s", line, filename ); } } if ( strlen( token.string ) >= MAX_VOICE_CMD_LEN ) { int line; char filename[ MAX_QPATH ]; trap_Parse_SourceFileAndLine( handle, filename, &line ); Com_Error( ERR_FATAL, "BG_VoiceParse(): " "command /"%s/" exceeds MAX_VOICE_CMD_LEN (%d) on line %d of %s", token.string, MAX_VOICE_CMD_LEN, line, filename ); } if ( top == NULL ) { voiceCmds = BG_Alloc( sizeof( voiceCmd_t ) ); top = voiceCmds; } else { voiceCmds->next = BG_Alloc( sizeof( voiceCmd_t ) ); voiceCmds = voiceCmds->next; } Q_strncpyz( voiceCmds->cmd, token.string, sizeof( voiceCmds->cmd ) ); voiceCmds->next = NULL; parsingCmd = qtrue; } trap_Parse_FreeSource( handle ); return top;}
开发者ID:LoganTheD3vil,项目名称:Unvanquished,代码行数:72,
示例12: setreuid/*=================Sys_GetGameAPILoads the game dll=================*/void *Sys_GetGameAPI (void *parms){ void *(*GetGameAPI) (void *); FILE *fp; char name[MAX_OSPATH]; char *path; char *str_p;#if defined __i386__ const char *gamename = "gamei386.so";#elif defined __x86_64__ const char *gamename = "gamex86_64.so";#elif defined __alpha__ const char *gamename = "gameaxp.so";#elif defined __powerpc__ const char *gamename = "gameppc.so";#elif defined __arm__ const char *gamename = "gamesarm.so";#else#error Unknown arch#endif setreuid(getuid(), getuid()); setegid(getgid()); if (game_library) Com_Error (ERR_FATAL, "Sys_GetGameAPI without Sys_UnloadingGame"); Com_Printf("------- Loading %s -------/n", gamename); // now run through the search paths path = NULL; while (1) { path = FS_NextPath (path); if (!path) return NULL; // couldn't find one anywhere snprintf (name, MAX_OSPATH, "%s/%s", path, gamename); /* skip it if it just doesn't exist */ fp = fopen(name, "rb"); if (fp == NULL) continue; fclose(fp); game_library = dlopen (name, RTLD_NOW); if (game_library) { Com_MDPrintf ("LoadLibrary (%s)/n",name); break; } else { Com_Printf ("LoadLibrary (%s):", name); path = dlerror(); str_p = strchr(path, ':'); // skip the path (already shown) if (str_p == NULL) str_p = path; else str_p++; Com_Printf ("%s/n", str_p); return NULL; } } GetGameAPI = (void *)dlsym (game_library, "GetGameAPI"); if (!GetGameAPI) { Sys_UnloadGame (); return NULL; } return GetGameAPI (parms);}
开发者ID:crutchwalkfactory,项目名称:motocakerteam,代码行数:85,
示例13: CL_UISystemCalls//BBi//int CL_UISystemCalls( int *args ) {intptr_t CL_UISystemCalls ( intptr_t* args){//BBi switch ( args[0] ) { case UI_ERROR:#if !defined RTCW_ET Com_Error( ERR_DROP, "%s", VMA( 1 ) );#else Com_Error( ERR_DROP, "%s", (char *)VMA( 1 ) );#endif // RTCW_XX return 0; case UI_PRINT:#if !defined RTCW_ET Com_Printf( "%s", VMA( 1 ) );#else Com_Printf( "%s", (char *)VMA( 1 ) );#endif // RTCW_XX return 0; case UI_MILLISECONDS: return Sys_Milliseconds(); case UI_CVAR_REGISTER: Cvar_Register( static_cast<vmCvar_t*> (VMA( 1 )), static_cast<const char*> (VMA( 2 )), static_cast<const char*> (VMA( 3 )), args[4] ); return 0; case UI_CVAR_UPDATE: Cvar_Update( static_cast<vmCvar_t*> (VMA( 1 )) ); return 0; case UI_CVAR_SET: Cvar_Set( static_cast<const char*> (VMA( 1 )), static_cast<char*> (VMA( 2 )) ); return 0; case UI_CVAR_VARIABLEVALUE: return FloatAsInt( Cvar_VariableValue( static_cast<const char*> (VMA( 1 )) ) ); case UI_CVAR_VARIABLESTRINGBUFFER: Cvar_VariableStringBuffer( static_cast<const char*> (VMA( 1 )), static_cast<char*> (VMA( 2 )), args[3] ); return 0;#if defined RTCW_ET case UI_CVAR_LATCHEDVARIABLESTRINGBUFFER: Cvar_LatchedVariableStringBuffer( static_cast<const char*> (VMA( 1 )), static_cast<char*> (VMA( 2 )), args[3] ); return 0;#endif // RTCW_XX case UI_CVAR_SETVALUE: Cvar_SetValue( static_cast<const char*> (VMA( 1 )), VMF( 2 ) ); return 0; case UI_CVAR_RESET: Cvar_Reset( static_cast<const char*> (VMA( 1 )) ); return 0; case UI_CVAR_CREATE: Cvar_Get( static_cast<const char*> (VMA( 1 )), static_cast<char*> (VMA( 2 )), args[3] ); return 0; case UI_CVAR_INFOSTRINGBUFFER: Cvar_InfoStringBuffer( args[1], static_cast<char*> (VMA( 2 )), args[3] ); return 0; case UI_ARGC: return Cmd_Argc(); case UI_ARGV: Cmd_ArgvBuffer( args[1], static_cast<char*> (VMA( 2 )), args[3] ); return 0; case UI_CMD_EXECUTETEXT: Cbuf_ExecuteText( args[1], static_cast<const char*> (VMA( 2 )) ); return 0;#if defined RTCW_ET case UI_ADDCOMMAND: Cmd_AddCommand( static_cast<const char*> (VMA( 1 )), NULL ); return 0;#endif // RTCW_XX case UI_FS_FOPENFILE: return FS_FOpenFileByMode( static_cast<const char*> (VMA( 1 )), static_cast<fileHandle_t*> (VMA( 2 )), fsMode_t (args[3]) ); case UI_FS_READ: FS_Read( VMA( 1 ), args[2], args[3] ); return 0;#if defined RTCW_SP//----(SA) added case UI_FS_SEEK: FS_Seek( args[1], args[2], args[3] ); return 0;//.........这里部分代码省略.........
开发者ID:bibendovsky,项目名称:rtcw,代码行数:101,
示例14: S_GetSoundLength// show_bug.cgi?id=574int S_GetSoundLength( sfxHandle_t sfxHandle ) { Com_Error( ERR_DROP, "null_snddma.c: S_GetSoundLength/n" ); return 0;}
开发者ID:AdrienJaguenet,项目名称:Enemy-Territory,代码行数:5,
示例15: CL_GetServerCommand/*===================CL_GetServerCommandSet up argc/argv for the given command===================*/qboolean CL_GetServerCommand( int serverCommandNumber ) { char *s; char *cmd; static char bigConfigString[BIG_INFO_STRING]; int argc; // if we have irretrievably lost a reliable command, drop the connection if ( serverCommandNumber <= clc.serverCommandSequence - MAX_RELIABLE_COMMANDS ) { // when a demo record was started after the client got a whole bunch of // reliable commands then the client never got those first reliable commands if ( clc.demoplaying ) return qfalse; Com_Error( ERR_DROP, "CL_GetServerCommand: a reliable command was cycled out" ); return qfalse; } if ( serverCommandNumber > clc.serverCommandSequence ) { Com_Error( ERR_DROP, "CL_GetServerCommand: requested a command not received" ); return qfalse; } s = clc.serverCommands[ serverCommandNumber & ( MAX_RELIABLE_COMMANDS - 1 ) ]; clc.lastExecutedServerCommand = serverCommandNumber; Com_DPrintf( "serverCommand: %i : %s/n", serverCommandNumber, s );rescan: Cmd_TokenizeString( s ); cmd = Cmd_Argv(0); argc = Cmd_Argc(); if ( !strcmp( cmd, "disconnect" ) ) { // https://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=552 // allow server to indicate why they were disconnected if ( argc >= 2 ) Com_Error( ERR_SERVERDISCONNECT, "Server disconnected - %s", Cmd_Argv( 1 ) ); else Com_Error( ERR_SERVERDISCONNECT, "Server disconnected/n" ); } if ( !strcmp( cmd, "bcs0" ) ) { Com_sprintf( bigConfigString, BIG_INFO_STRING, "cs %s /"%s", Cmd_Argv(1), Cmd_Argv(2) ); return qfalse; } if ( !strcmp( cmd, "bcs1" ) ) { s = Cmd_Argv(2); if( strlen(bigConfigString) + strlen(s) >= BIG_INFO_STRING ) { Com_Error( ERR_DROP, "bcs exceeded BIG_INFO_STRING" ); } strcat( bigConfigString, s ); return qfalse; } if ( !strcmp( cmd, "bcs2" ) ) { s = Cmd_Argv(2); if( strlen(bigConfigString) + strlen(s) + 1 >= BIG_INFO_STRING ) { Com_Error( ERR_DROP, "bcs exceeded BIG_INFO_STRING" ); } strcat( bigConfigString, s ); strcat( bigConfigString, "/"" ); s = bigConfigString; goto rescan; } if ( !strcmp( cmd, "cs" ) ) { CL_ConfigstringModified(); // reparse the string, because CL_ConfigstringModified may have done another Cmd_TokenizeString() Cmd_TokenizeString( s ); return qtrue; } if ( !strcmp( cmd, "map_restart" ) ) { // clear notify lines and outgoing commands before passing // the restart to the cgame Con_ClearNotify(); Com_Memset( cl.cmds, 0, sizeof( cl.cmds ) ); return qtrue; } // the clientLevelShot command is used during development // to generate 128*128 screenshots from the intermission // point of levels for the menu system to use // we pass it along to the cgame to make apropriate adjustments, // but we also clear the console and notify lines here if ( !strcmp( cmd, "clientLevelShot" ) ) { // don't do it if we aren't running the server locally, // otherwise malicious remote servers could overwrite // the existing thumbnails if ( !com_sv_running->integer ) { return qfalse; } // close the console//.........这里部分代码省略.........
开发者ID:AlienHoboken,项目名称:Tremulous-Z-Server,代码行数:101,
示例16: SV_DirectConnect//.........这里部分代码省略......... // check for privateClient password password = Info_ValueForKey( userinfo, "password" ); if ( !strcmp( password, sv_privatePassword->string ) ) { startIndex = 0; } else { // skip past the reserved slots startIndex = sv_privateClients->integer; } newcl = NULL; for ( i = startIndex; i < sv_maxclients->integer ; i++ ) { cl = &svs.clients[i]; if (cl->state == CS_FREE) { newcl = cl; break; } } if ( !newcl ) { if ( NET_IsLocalAddress( from ) ) { count = 0; for ( i = startIndex; i < sv_maxclients->integer ; i++ ) { cl = &svs.clients[i]; if (cl->netchan.remoteAddress.type == NA_BOT) { count++; } } // if they're all bots if (count >= sv_maxclients->integer - startIndex) { SV_DropClient(&svs.clients[sv_maxclients->integer - 1], "only bots on server"); newcl = &svs.clients[sv_maxclients->integer - 1]; } else { Com_Error( ERR_FATAL, "server is full on local connect/n" ); return; } } else { const char *SV_GetStringEdString(char *refSection, char *refName); NET_OutOfBandPrint( NS_SERVER, from, va("print/n%s/n", SV_GetStringEdString("MP_SVGAME","SERVER_IS_FULL"))); Com_DPrintf ("Rejected a connection./n"); return; } } // we got a newcl, so reset the reliableSequence and reliableAcknowledge cl->reliableAcknowledge = 0; cl->reliableSequence = 0;gotnewcl: // build a new connection // accept the new client // this is the only place a client_t is ever initialized *newcl = temp; clientNum = newcl - svs.clients; ent = SV_GentityNum( clientNum ); newcl->gentity = ent; // save the challenge newcl->challenge = challenge; // save the address Netchan_Setup (NS_SERVER, &newcl->netchan , from, qport); // save the userinfo
开发者ID:Ben2917,项目名称:OpenJK,代码行数:67,
示例17: CL_CgameSystemCalls/*====================CL_CgameSystemCallsThe cgame module is making a system call====================*/intptr_t CL_CgameSystemCalls( intptr_t *args ) { switch( args[0] ) { case CG_PRINT: Com_Printf( "%s", (const char*)VMA(1) ); return 0; case CG_ERROR: Com_Error( ERR_DROP, "%s", (const char*)VMA(1) ); return 0; case CG_MILLISECONDS: return Sys_Milliseconds(); case CG_CVAR_REGISTER: Cvar_Register( VMA(1), VMA(2), VMA(3), args[4] ); return 0; case CG_CVAR_UPDATE: Cvar_Update( VMA(1) ); return 0; case CG_CVAR_SET: Cvar_SetSafe( VMA(1), VMA(2) ); return 0; case CG_CVAR_VARIABLESTRINGBUFFER: Cvar_VariableStringBuffer( VMA(1), VMA(2), args[3] ); return 0; case CG_ARGC: return Cmd_Argc(); case CG_ARGV: Cmd_ArgvBuffer( args[1], VMA(2), args[3] ); return 0; case CG_ARGS: Cmd_ArgsBuffer( VMA(1), args[2] ); return 0; case CG_LITERAL_ARGS: Cmd_LiteralArgsBuffer( VMA(1), args[2] ); return 0; case CG_FS_FOPENFILE: return FS_FOpenFileByMode( VMA(1), VMA(2), args[3] ); case CG_FS_READ: FS_Read2( VMA(1), args[2], args[3] ); return 0; case CG_FS_WRITE: FS_Write( VMA(1), args[2], args[3] ); return 0; case CG_FS_FCLOSEFILE: FS_FCloseFile( args[1] ); return 0; case CG_FS_SEEK: return FS_Seek( args[1], args[2], args[3] ); case CG_FS_GETFILELIST: return FS_GetFileList( VMA(1), VMA(2), VMA(3), args[4] ); case CG_SENDCONSOLECOMMAND: Cbuf_AddText( VMA(1) ); return 0; case CG_ADDCOMMAND: CL_AddCgameCommand( VMA(1) ); return 0; case CG_REMOVECOMMAND: Cmd_RemoveCommandSafe( VMA(1) ); return 0; case CG_SENDCLIENTCOMMAND: CL_AddReliableCommand( VMA(1) ); return 0; case CG_UPDATESCREEN: // this is used during lengthy level loading, so pump message loop// Com_EventLoop(); // FIXME: if a server restarts here, BAD THINGS HAPPEN!// We can't call Com_EventLoop here, a restart will crash and this _does_ happen// if there is a map change while we are downloading at pk3.// ZOID SCR_UpdateScreen(); return 0; case CG_CM_LOADMAP: CL_CM_LoadMap( VMA(1) ); return 0; case CG_CM_NUMINLINEMODELS: return CM_NumInlineModels(); case CG_CM_INLINEMODEL: return CM_InlineModel( args[1] ); case CG_CM_TEMPBOXMODEL: return CM_TempBoxModel( VMA(1), VMA(2), /*int capsule*/ qfalse ); case CG_CM_TEMPCAPSULEMODEL: return CM_TempBoxModel( VMA(1), VMA(2), /*int capsule*/ qtrue ); case CG_CM_POINTCONTENTS: return CM_PointContents( VMA(1), args[2] ); case CG_CM_TRANSFORMEDPOINTCONTENTS: return CM_TransformedPointContents( VMA(1), args[2], VMA(3), VMA(4) ); case CG_CM_BOXTRACE: CM_BoxTrace( VMA(1), VMA(2), VMA(3), VMA(4), VMA(5), args[6], args[7], TT_AABB ); return 0; case CG_CM_CAPSULETRACE: CM_BoxTrace( VMA(1), VMA(2), VMA(3), VMA(4), VMA(5), args[6], args[7], TT_CAPSULE ); return 0; case CG_CM_TRANSFORMEDBOXTRACE: CM_TransformedBoxTrace( VMA(1), VMA(2), VMA(3), VMA(4), VMA(5), args[6], args[7], VMA(8), VMA(9), TT_AABB ); return 0;//.........这里部分代码省略.........
开发者ID:AlienHoboken,项目名称:Tremulous-Z-Server,代码行数:101,
示例18: Com_Errorvoid *Sys_GetGameAPI (void *parms){ void *(*GetGameAPI) (void *); const char *basepath; const char *cdpath; const char *gamedir; const char *homepath;#ifdef MACOS_X const char *apppath;#endif const char *fn; const char *gamename; if(Cvar_VariableIntegerValue("com_jk2")) { gamename = "jk2game" ARCH_STRING DLL_EXT; } else { gamename = "jagame" ARCH_STRING DLL_EXT; } if (game_library) Com_Error (ERR_FATAL, "Sys_GetGameAPI without Sys_UnloadingGame"); // check the current debug directory first for development purposes homepath = Cvar_VariableString( "fs_homepath" ); basepath = Cvar_VariableString( "fs_basepath" ); cdpath = Cvar_VariableString( "fs_cdpath" ); gamedir = Cvar_VariableString( "fs_game" );#ifdef MACOS_X apppath = Cvar_VariableString( "fs_apppath" );#endif if(!gamedir || !gamedir[0]) gamedir = BASEGAME; fn = FS_BuildOSPath( basepath, gamedir, gamename ); game_library = Sys_LoadLibrary( fn ); //First try in mod directories. basepath -> homepath -> cdpath if (!game_library) { if (homepath[0]) { Com_Printf( "Sys_GetGameAPI(%s) failed: /"%s/"/n", fn, Sys_LibraryError() ); fn = FS_BuildOSPath( homepath, gamedir, gamename); game_library = Sys_LoadLibrary( fn ); } } #ifdef MACOS_X if (!game_library) { if( apppath[0] ) { Com_Printf( "Sys_GetGameAPI(%s) failed: /"%s/"/n", fn, Sys_LibraryError() ); fn = FS_BuildOSPath( apppath, gamedir, gamename ); game_library = Sys_LoadLibrary( fn ); } }#endif if (!game_library) { if( cdpath[0] ) { Com_Printf( "Sys_GetGameAPI(%s) failed: /"%s/"/n", fn, Sys_LibraryError() ); fn = FS_BuildOSPath( cdpath, gamedir, gamename ); game_library = Sys_LoadLibrary( fn ); } } //Now try in base. basepath -> homepath -> cdpath if (!game_library) { Com_Printf( "Sys_GetGameAPI(%s) failed: /"%s/"/n", fn, Sys_LibraryError() ); fn = FS_BuildOSPath( basepath, BASEGAME, gamename); game_library = Sys_LoadLibrary( fn ); } if (!game_library) { if ( homepath[0] ) { Com_Printf( "Sys_GetGameAPI(%s) failed: /"%s/"/n", fn, Sys_LibraryError() ); fn = FS_BuildOSPath( homepath, BASEGAME, gamename); game_library = Sys_LoadLibrary( fn ); } } #ifdef MACOS_X if (!game_library) { if( apppath[0] ) { Com_Printf( "Sys_GetGameAPI(%s) failed: /"%s/"/n", fn, Sys_LibraryError() ); fn = FS_BuildOSPath( apppath, BASEGAME, gamename ); game_library = Sys_LoadLibrary( fn ); } }#endif //.........这里部分代码省略.........
开发者ID:dkodnik,项目名称:OpenJK,代码行数:101,
示例19: CL_ActorAppear/** * @sa CL_ActorAddToTeamList * @sa G_AppearPerishEvent * @sa CL_ActorAdd * @note EV_ACTOR_APPEAR */void CL_ActorAppear (const eventRegister_t *self, dbuffer *msg){ le_t *le, *leResponsible; int entnum, entnumResponsible, modelnum1, modelnum2; int teamDefID = -1; /* check if the actor is already visible */ entnum = NET_ReadShort(msg); entnumResponsible = NET_ReadShort(msg); le = LE_Get(entnum); leResponsible = LE_Get(entnumResponsible); if (entnumResponsible != SKIP_LOCAL_ENTITY && !leResponsible) LE_NotFoundError(entnumResponsible); /* mission start - no actor is spawned yet - so create it */ if (!le) le = LE_Add(entnum); /* Locking should be unnecessary if CL_CheckDefault filters this call, since this event starts and * ends in this function only. Adding lock/unlock just to be sure. */ LE_Lock(le); /* maybe added via CL_ActorAdd before */ le->flags &= ~LE_INVISIBLE; /* get the info */ NET_ReadFormat(msg, self->formatString, &le->team, &teamDefID, &le->gender, &le->ucn, &le->pnum, &le->pos, &le->angle, &le->right, &le->left, &modelnum1, &modelnum2, &le->bodySkin, &le->headSkin, &le->state, &le->fieldSize, &le->maxTU, &le->maxMorale, &le->maxHP); if (teamDefID < 0 || teamDefID > csi.numTeamDefs) Com_Printf("CL_ActorAppear: Invalid teamDef index/n"); else le->teamDef = &csi.teamDef[teamDefID]; switch (le->fieldSize) { case ACTOR_SIZE_NORMAL: le->addFunc = CL_AddActor; le->type = ET_ACTOR; break; case ACTOR_SIZE_2x2: le->addFunc = CL_AddUGV; le->type = ET_ACTOR2x2; break; default: Com_Error(ERR_DROP, "Unknown fieldSize for le in CL_ActorAppear (EV_ACTOR_APPEAR)"); } le->modelnum1 = modelnum1; le->modelnum2 = modelnum2; le->model1 = LE_GetDrawModel(modelnum1); le->model2 = LE_GetDrawModel(modelnum2); Grid_PosToVec(cl.mapData->map, le->fieldSize, le->pos, le->origin); le->angles[YAW] = directionAngles[le->angle]; if (LE_IsDead(le) && !LE_IsStunned(le)) le->contents = CONTENTS_DEADACTOR; else le->contents = CONTENTS_ACTOR; VectorCopy(player_mins, le->mins); if (LE_IsDead(le)) VectorCopy(player_dead_maxs, le->maxs); else VectorCopy(player_maxs, le->maxs); LE_SetThink(le, LET_StartIdle); /* count spotted aliens (also stunned) */ cl.numEnemiesSpotted = CL_CountVisibleEnemies(); if (LE_IsLivingActor(le)) { if (cl.actTeam != cls.team) { /* center view (if wanted) */ LE_CenterView(le); } /* draw line of sight */ if (le->team != cls.team) { if (leResponsible) CL_DrawLineOfSight(leResponsible, le); /* message */ if (le->team != TEAM_CIVILIAN) { if (GAME_TeamIsKnown(le->teamDef)) { char tmpbuf[128]; Com_sprintf(tmpbuf, sizeof(tmpbuf), _("Enemy spotted: %s!"), _(le->teamDef->name)); HUD_DisplayMessage(tmpbuf); } else HUD_DisplayMessage(_("Unknown enemy spotted!")); } else HUD_DisplayMessage(_("Civilian spotted."));//.........这里部分代码省略.........
开发者ID:jklemmack,项目名称:ufoai,代码行数:101,
示例20: CL_ParseDownload/*=====================CL_ParseDownloadA download message has been received from the server=====================*/void CL_ParseDownload (sizebuf_t *msg, qboolean dataIsCompressed){ int size, percent; char name[MAX_OSPATH];// int r; // read the data size = MSG_ReadShort (msg); percent = MSG_ReadByte (msg); if (size < 0) { if (size == -1) Com_Printf ("Server does not have this file./n"); else Com_Printf ("Bad download data from server./n"); cls.downloadtempname[0] = 0; cls.downloadname[0] = 0; cls.failed_download = true; if (cls.download) { // if here, we tried to resume a file but the server said no fclose (cls.download); cls.download = NULL; } CL_RequestNextDownload (); return; } // open the file if not opened yet if (!cls.download) { if (!cls.downloadtempname[0]) { Com_Printf ("Received download packet without request. Ignored./n"); msg->readcount += size; return; } CL_DownloadFileName(name, sizeof(name), cls.downloadtempname); FS_CreatePath (name); cls.download = fopen (name, "wb"); if (!cls.download) { msg->readcount += size; Com_Printf ("Failed to open %s/n", cls.downloadtempname); CL_RequestNextDownload (); return; } } if (dataIsCompressed) { uint16 uncompressedLen; byte uncompressed[0xFFFF]; uncompressedLen = MSG_ReadShort (msg); if (!uncompressedLen) Com_Error (ERR_DROP, "uncompressedLen == 0"); ZLibDecompress (msg->data + msg->readcount, size, uncompressed, uncompressedLen, -15); fwrite (uncompressed, 1, uncompressedLen, cls.download); Com_DPrintf ("svc_zdownload(%s): %d -> %d/n", cls.downloadname, size, uncompressedLen); } else { fwrite (msg->data + msg->readcount, 1, size, cls.download); } //fwrite (net_message.data + net_message.readcount, 1, size, cls.download); msg->readcount += size; if (percent != 100) { // request next block// change display routines by zoid cls.downloadpercent = percent; MSG_WriteByte (&cls.netchan.message, clc_stringcmd); SZ_Print (&cls.netchan.message, "nextdl"); } else { CL_FinishDownload(); // get another file if needed CL_RequestNextDownload (); }//.........这里部分代码省略.........
开发者ID:hifi-unmaintained,项目名称:aprq2,代码行数:101,
示例21: VM_Compile/*=================VM_Compile=================*/void VM_Compile( vm_t *vm, vmHeader_t *header ) { int op; int maxLength; int v; int i; qboolean opt; // allocate a very large temp buffer, we will shrink it later maxLength = header->codeLength * 8; buf = Z_Malloc( maxLength ); jused = Z_Malloc(header->instructionCount + 2 ); Com_Memset(jused, 0, header->instructionCount+2); // ensure that the optimisation pass knows about all the jump // table targets for( i = 0; i < vm->numJumpTableTargets; i++ ) { jused[ *(int *)(vm->jumpTableTargets + ( i * sizeof( int ) ) ) ] = 1; } for(pass=0;pass<2;pass++) { oc0 = -23423; oc1 = -234354; pop0 = -43435; pop1 = -545455; // translate all instructions pc = 0; instruction = 0; code = (byte *)header + header->codeOffset; compiledOfs = 0; LastCommand = LAST_COMMAND_NONE; while ( instruction < header->instructionCount ) { if ( compiledOfs > maxLength - 16 ) { Com_Error( ERR_FATAL, "VM_CompileX86: maxLength exceeded" ); } vm->instructionPointers[ instruction ] = compiledOfs; instruction++; if ( pc > header->codeLength ) { Com_Error( ERR_FATAL, "VM_CompileX86: pc > header->codeLength" ); } op = code[ pc ]; pc++; switch ( op ) { case 0: break; case OP_BREAK: EmitString( "CC" ); // int 3 break; case OP_ENTER: EmitString( "81 EE" ); // sub esi, 0x12345678 Emit4( Constant4() ); break; case OP_CONST: if (code[pc+4] == OP_LOAD4) { EmitAddEDI4(vm); EmitString( "BB" ); // mov ebx, 0x12345678 Emit4( (Constant4()&vm->dataMask) + (int)vm->dataBase); EmitString( "8B 03" ); // mov eax, dword ptr [ebx] EmitCommand(LAST_COMMAND_MOV_EDI_EAX); // mov dword ptr [edi], eax pc++; // OP_LOAD4 instruction += 1; break; } if (code[pc+4] == OP_LOAD2) { EmitAddEDI4(vm); EmitString( "BB" ); // mov ebx, 0x12345678 Emit4( (Constant4()&vm->dataMask) + (int)vm->dataBase); EmitString( "0F B7 03" ); // movzx eax, word ptr [ebx] EmitCommand(LAST_COMMAND_MOV_EDI_EAX); // mov dword ptr [edi], eax pc++; // OP_LOAD4 instruction += 1; break; } if (code[pc+4] == OP_LOAD1) { EmitAddEDI4(vm); EmitString( "BB" ); // mov ebx, 0x12345678 Emit4( (Constant4()&vm->dataMask) + (int)vm->dataBase); EmitString( "0F B6 03" ); // movzx eax, byte ptr [ebx] EmitCommand(LAST_COMMAND_MOV_EDI_EAX); // mov dword ptr [edi], eax pc++; // OP_LOAD4 instruction += 1; break; } if (code[pc+4] == OP_STORE4) { opt = EmitMovEBXEDI(vm, (vm->dataMask & ~3)); EmitString( "B8" ); // mov eax, 0x12345678 Emit4( Constant4() );// if (!opt) {// EmitString( "81 E3" ); // and ebx, 0x12345678//.........这里部分代码省略.........
开发者ID:ghostmod,项目名称:PB-ioq3-for-UrbanTerror-4.1,代码行数:101,
示例22: CL_ParseServerData/*==================CL_ParseServerData==================*/qboolean CL_ParseServerData (sizebuf_t *msg){ char *str; int i; Com_DPrintf ("Serverdata packet received./n");//// wipe the client_state_t struct// CL_ClearState (); cls.state = ca_connected;// parse protocol version number i = MSG_ReadLong (msg); cls.serverProtocol = i; cl.servercount = MSG_ReadLong (msg); cl.attractloop = MSG_ReadByte (msg); if (cl.attractloop) { //cls.serverProtocol = PROTOCOL_VERSION_DEFAULT; } else if (i != PROTOCOL_VERSION_DEFAULT && i != PROTOCOL_VERSION_R1Q2) { Com_Error (ERR_DROP, "Server is using unknown protocol %d.", i); } // game directory str = MSG_ReadString (msg); Q_strncpyz (cl.gamedir, str, sizeof(cl.gamedir)); str = cl.gamedir; // set gamedir if (!Com_ServerState()) { Cvar_SetLatched("game", str); if( FS_NeedRestart() ) { CL_RestartFilesystem(true); } } // parse player entity number cl.playernum = MSG_ReadShort (msg); // get the full level name str = MSG_ReadString (msg); cl.pmp.strafeHack = false; cl.pmp.speedMultiplier = 1; cl.pmp.airaccelerate = 0; cls.protocolVersion = 0; if (cls.serverProtocol == PROTOCOL_VERSION_R1Q2) { i = MSG_ReadByte(msg); if( i ) { Com_Printf("'Enhanced' R1Q2 servers are not supported, falling back to protocol 34./n" ); CL_Disconnect(); cls.serverProtocol = PROTOCOL_VERSION_DEFAULT; CL_Reconnect_f (); return false; } i = MSG_ReadShort(msg); if (i < PROTOCOL_VERSION_R1Q2_MINIMUM || i > PROTOCOL_VERSION_R1Q2_CURRENT) { if (cl.attractloop) { if ( i < PROTOCOL_VERSION_R1Q2_MINIMUM ) Com_Printf("This demo was recorded with an earlier version of the R1Q2 protocol. It may not play back properly./n"); else Com_Printf("This demo was recorded with a later version of the R1Q2 protocol. It may not play back properly./n"); } else { if( i < PROTOCOL_VERSION_R1Q2_MINIMUM ) { Com_Printf("Server uses OLDER minor R1Q2 protocol version than minimum supported (%i < %i), falling back to protocol 34./n", i, PROTOCOL_VERSION_R1Q2_MINIMUM); CL_Disconnect(); cls.serverProtocol = PROTOCOL_VERSION_DEFAULT; CL_Reconnect_f (); return false; } Com_Printf("Server uses NEWER minor R1Q2 protocol version (%i > %i), some features will be unavailable./n", i, PROTOCOL_VERSION_R1Q2_CURRENT); } } if (i >= 1903) { MSG_ReadByte(msg); cl.pmp.strafeHack = MSG_ReadByte(msg); } cl.pmp.speedMultiplier = 2; cls.protocolVersion = i; } if (cl.playernum == -1) { // playing a cinematic or showing a pic, not a level//.........这里部分代码省略.........
开发者ID:hifi-unmaintained,项目名称:aprq2,代码行数:101,
示例23: VID_CheckChanges/*============VID_CheckChangesThis function gets called once just before drawing each frame, and it's sole purpose in lifeis to check to see if any of the video mode parameters have changed, and if they have to update the rendering DLL and/or video mode to match.============*/void VID_CheckChanges (void){ char name[100]; if ( win_noalttab->modified ) { if ( win_noalttab->value ) { WIN_DisableAltTab(); } else { WIN_EnableAltTab(); } win_noalttab->modified = false; } if ( vid_ref->modified ) { cl.force_refdef = true; // can't use a paused refdef S_StopAllSounds(); } while (vid_ref->modified) { /* ** refresh has changed */ vid_ref->modified = false; vid_fullscreen->modified = true; cl.refresh_prepped = false; cls.disable_screen = true; Com_sprintf( name, sizeof(name), "ref_%s.dll", vid_ref->string ); if ( !VID_LoadRefresh( name ) ) { if ( strcmp (vid_ref->string, "soft") == 0 ) Com_Error (ERR_FATAL, "Couldn't fall back to software refresh!"); Cvar_Set( "vid_ref", "soft" ); /* ** drop the console if we fail to load a refresh */ if ( cls.key_dest != key_console ) { Con_ToggleConsole_f(); } } cls.disable_screen = false; } /* ** update our window position */ if ( vid_xpos->modified || vid_ypos->modified ) { if (!vid_fullscreen->value) VID_UpdateWindowPosAndSize( vid_xpos->value, vid_ypos->value ); vid_xpos->modified = false; vid_ypos->modified = false; }}
开发者ID:basecq,项目名称:q2dos,代码行数:71,
示例24: CL_ParseConfigString/*================CL_ParseConfigString================*/void CL_ParseConfigString (sizebuf_t *msg){ int i, length; char *s; char olds[MAX_QPATH]; i = MSG_ReadShort (msg); if ((unsigned)i >= MAX_CONFIGSTRINGS) Com_Error (ERR_DROP, "configstring > MAX_CONFIGSTRINGS"); Q_strncpyz (olds, cl.configstrings[i], sizeof(olds)); s = MSG_ReadString(msg); length = strlen(s); if (i != CS_NAME && i < CS_GENERAL) { if (i >= CS_STATUSBAR && i < CS_AIRACCEL) { Q_strncpyz(cl.configstrings[i], s, MAX_QPATH * (CS_AIRACCEL - i)); } else { if (length >= MAX_QPATH) Com_Printf ("WARNING: Configstring %d of length %d exceeds MAX_QPATH./n", i, length); Q_strncpyz(cl.configstrings[i], s, MAX_QPATH); } } else { Q_strncpyz(cl.configstrings[i], s, MAX_QPATH * (MAX_CONFIGSTRINGS - i)); } // do something apropriate if(i == CS_AIRACCEL) { cl.pmp.airaccelerate = atoi(cl.configstrings[CS_AIRACCEL]) ? true : false; } else if (i >= CS_LIGHTS && i < CS_LIGHTS+MAX_LIGHTSTYLES) { CL_SetLightstyle (i - CS_LIGHTS); } else if (i == CS_CDTRACK) {#ifdef CD_AUDIO if (cl.refresh_prepped) CDAudio_Play (atoi(cl.configstrings[CS_CDTRACK]), true);#endif } else if (i >= CS_MODELS && i < CS_MODELS+MAX_MODELS) { if( i == CS_MODELS + 1 ) { if( length > 9 ) { Q_strncpyz( cls.mapname, s + 5, sizeof( cls.mapname ) ); // skip "maps/" cls.mapname[strlen( cls.mapname ) - 4] = 0; // cut off ".bsp" } } if (cl.refresh_prepped) { cl.model_draw[i-CS_MODELS] = R_RegisterModel (cl.configstrings[i]); if (cl.configstrings[i][0] == '*') cl.model_clip[i-CS_MODELS] = CM_InlineModel (cl.configstrings[i]); else cl.model_clip[i-CS_MODELS] = NULL; } } else if (i >= CS_SOUNDS && i < CS_SOUNDS+MAX_MODELS) { if (cl.refresh_prepped) cl.sound_precache[i-CS_SOUNDS] = S_RegisterSound (cl.configstrings[i]); } else if (i >= CS_IMAGES && i < CS_IMAGES+MAX_MODELS) { if (cl.refresh_prepped) cl.image_precache[i-CS_IMAGES] = Draw_FindPic (cl.configstrings[i]); } else if (i == CS_MAXCLIENTS) { cl.maxclients = atoi(cl.configstrings[CS_MAXCLIENTS]); clamp(cl.maxclients, 0, MAX_CLIENTS); } else if (i >= CS_PLAYERSKINS && i < CS_PLAYERSKINS+MAX_CLIENTS) { if (cl.refresh_prepped && strcmp(olds, s)) CL_ParseClientinfo (i-CS_PLAYERSKINS); }}
开发者ID:hifi-unmaintained,项目名称:aprq2,代码行数:94,
示例25: BG_SiegeGetValueGroupint BG_SiegeGetValueGroup(char *buf, char *group, char *outbuf){ int i = 0; int j; char checkGroup[4096]; qboolean isGroup; int parseGroups = 0; while (buf[i]) { if (buf[i] != ' ' && buf[i] != '{' && buf[i] != '}' && buf[i] != '/n' && buf[i] != '/r' && buf[i] != SIEGECHAR_TAB) { //we're on a valid character if (buf[i] == '/' && buf[i+1] == '/') { //this is a comment, so skip over it while (buf[i] && buf[i] != '/n' && buf[i] != '/r' && buf[i] != SIEGECHAR_TAB) { i++; } } else { //parse to the next space/endline/eos and check this value against our group value. j = 0; while (buf[i] != ' ' && buf[i] != '/n' && buf[i] != '/r' && buf[i] != SIEGECHAR_TAB && buf[i] != '{' && buf[i]) { if (buf[i] == '/' && buf[i+1] == '/') { //hit a comment, break out. break; } checkGroup[j] = buf[i]; j++; i++; } checkGroup[j] = 0; //Make sure this is a group as opposed to a globally defined value. if (buf[i] == '/' && buf[i+1] == '/') { //stopped on a comment, so first parse to the end of it. while (buf[i] && buf[i] != '/n' && buf[i] != '/r') { i++; } while (buf[i] == '/n' || buf[i] == '/r') { i++; } } if (!buf[i]) { Com_Error(ERR_DROP, "Unexpected EOF while looking for group '%s'", group); } isGroup = qfalse; while ( buf[i] && (buf[i] == ' ' || buf[i] == SIEGECHAR_TAB || buf[i] == '/n' || buf[i] == '/r') ) { //parse to the next valid character i++; } if (buf[i] == '{') { //if the next valid character is an opening bracket, then this is indeed a group isGroup = qtrue; } //Is this the one we want? if (isGroup && !Q_stricmp(checkGroup, group)) { //guess so. Parse until we hit the { indicating the beginning of the group. while (buf[i] != '{' && buf[i]) { i++; } if (buf[i]) { //We're at the start of the group now, so parse to the closing bracket. j = 0; parseGroups = 0; while ((buf[i] != '}' || parseGroups) && buf[i]) { if (buf[i] == '{') { //increment for the opening bracket. parseGroups++; } else if (buf[i] == '}') { //decrement for the closing bracket parseGroups--; } if (parseGroups < 0) { //Syntax error, I guess. Com_Error(ERR_DROP, "Found a closing bracket without an opening bracket while looking for group '%s'", group); } if ((buf[i] != '{' || parseGroups > 1) && (buf[i] != '}' || parseGroups > 0)) { //don't put the start and end brackets for this group into the output buffer//.........这里部分代码省略.........
开发者ID:BSzili,项目名称:OpenJK,代码行数:101,
示例26: BG_SiegeParseClassFilevoid BG_SiegeParseClassFile(const char *filename, siegeClassDesc_t *descBuffer){ fileHandle_t f; int len; int i; char classInfo[4096]; char parseBuf[4096]; len = trap->FS_Open( filename, &f, FS_READ ); if (!f || len >= 4096) { return; } trap->FS_Read( classInfo, len, f ); trap->FS_Close( f ); classInfo[len] = 0; //first get the description if we have a buffer for it if (descBuffer) { if (!BG_SiegeGetPairedValue(classInfo, "description", descBuffer->desc)) { Q_strncpyz(descBuffer->desc, "DESCRIPTION UNAVAILABLE", sizeof(descBuffer->desc)); } //Hit this assert? Memory has already been trashed. Increase //SIEGE_CLASS_DESC_LEN. assert(strlen(descBuffer->desc) < SIEGE_CLASS_DESC_LEN); } BG_SiegeGetValueGroup(classInfo, "ClassInfo", classInfo); //Parse name if (BG_SiegeGetPairedValue(classInfo, "name", parseBuf)) { Q_strncpyz(bgSiegeClasses[bgNumSiegeClasses].name, parseBuf, sizeof(bgSiegeClasses[0].name)); } else { Com_Error(ERR_DROP, "Siege class without name entry"); } //Parse forced model if (BG_SiegeGetPairedValue(classInfo, "model", parseBuf)) { Q_strncpyz(bgSiegeClasses[bgNumSiegeClasses].forcedModel, parseBuf, sizeof(bgSiegeClasses[0].forcedModel)); } else { //It's ok if there isn't one, it's optional. bgSiegeClasses[bgNumSiegeClasses].forcedModel[0] = 0; } //Parse forced skin if (BG_SiegeGetPairedValue(classInfo, "skin", parseBuf)) { Q_strncpyz(bgSiegeClasses[bgNumSiegeClasses].forcedSkin, parseBuf, sizeof(bgSiegeClasses[0].forcedSkin)); } else { //It's ok if there isn't one, it's optional. bgSiegeClasses[bgNumSiegeClasses].forcedSkin[0] = 0; } //Parse first saber if (BG_SiegeGetPairedValue(classInfo, "saber1", parseBuf)) { Q_strncpyz(bgSiegeClasses[bgNumSiegeClasses].saber1, parseBuf, sizeof(bgSiegeClasses[0].saber1)); } else { //It's ok if there isn't one, it's optional. bgSiegeClasses[bgNumSiegeClasses].saber1[0] = 0; } //Parse second saber if (BG_SiegeGetPairedValue(classInfo, "saber2", parseBuf)) { Q_strncpyz(bgSiegeClasses[bgNumSiegeClasses].saber2, parseBuf, sizeof(bgSiegeClasses[0].saber2)); } else { //It's ok if there isn't one, it's optional. bgSiegeClasses[bgNumSiegeClasses].saber2[0] = 0; } //Parse forced saber stance if (BG_SiegeGetPairedValue(classInfo, "saberstyle", parseBuf)) { bgSiegeClasses[bgNumSiegeClasses].saberStance = BG_SiegeTranslateGenericTable(parseBuf, StanceTable, qtrue); } else { //It's ok if there isn't one, it's optional. bgSiegeClasses[bgNumSiegeClasses].saberStance = 0; } //Parse forced saber color if (BG_SiegeGetPairedValue(classInfo, "sabercolor", parseBuf)) { bgSiegeClasses[bgNumSiegeClasses].forcedSaberColor = atoi(parseBuf);//.........这里部分代码省略.........
开发者ID:BSzili,项目名称:OpenJK,代码行数:101,
示例27: CL_CgameError/*=====================CL_CgameError=====================*/void CL_CgameError( const char *string ) { Com_Error( ERR_DROP, "%s", string );}
开发者ID:AlienHoboken,项目名称:Tremulous-Z-Server,代码行数:8,
示例28: Com_Error/*============Cvar_GetIf the variable already exists, the value will not be set unless CVAR_ROMThe flags will be or'ed in if the variable exists.============*/cvar_t *Cvar_Get( const char *var_name, const char *var_value, uint32_t flags ) { cvar_t *var; long hash; int index; if ( !var_name || ! var_value ) { Com_Error( ERR_FATAL, "Cvar_Get: NULL parameter" ); } if ( !Cvar_ValidateString( var_name ) ) { Com_Printf("invalid cvar name string: %s/n", var_name ); var_name = "BADNAME"; }#if 0 // FIXME: values with backslash happen if ( !Cvar_ValidateString( var_value ) ) { Com_Printf("invalid cvar value string: %s/n", var_value ); var_value = "BADVALUE"; }#endif var = Cvar_FindVar (var_name); if ( var ) { var_value = Cvar_Validate(var, var_value, qfalse); // Make sure the game code cannot mark engine-added variables as gamecode vars if(var->flags & CVAR_VM_CREATED) { if(!(flags & CVAR_VM_CREATED)) var->flags &= ~CVAR_VM_CREATED; } else if (!(var->flags & CVAR_USER_CREATED)) { if(flags & CVAR_VM_CREATED) flags &= ~CVAR_VM_CREATED; } // if the C code is now specifying a variable that the user already // set a value for, take the new value as the reset value if ( var->flags & CVAR_USER_CREATED ) { var->flags &= ~CVAR_USER_CREATED; Cvar_FreeString( var->resetString ); var->resetString = CopyString( var_value ); if(flags & CVAR_ROM) { // this variable was set by the user, // so force it to value given by the engine. if(var->latchedString) Cvar_FreeString(var->latchedString); var->latchedString = CopyString(var_value); } } // Make sure servers cannot mark engine-added variables as SERVER_CREATED if(var->flags & CVAR_SERVER_CREATED) { if(!(flags & CVAR_SERVER_CREATED)) var->flags &= ~CVAR_SERVER_CREATED; } else { if(flags & CVAR_SERVER_CREATED) flags &= ~CVAR_SERVER_CREATED; } var->flags |= flags; // only allow one non-empty reset string without a warning if ( !var->resetString[0] ) { // we don't have a reset string yet Cvar_FreeString( var->resetString ); var->resetString = CopyString( var_value ); } else if ( var_value[0] && strcmp( var->resetString, var_value ) ) { Com_DPrintf( S_COLOR_YELLOW "Warning: cvar /"%s/" given initial values: /"%s/" and /"%s/"/n", var_name, var->resetString, var_value ); } // if we have a latched string, take that value now if ( var->latchedString ) { char *s; s = var->latchedString; var->latchedString = NULL; // otherwise cvar_set2 would free it Cvar_Set2( var_name, s, 0, qtrue ); Cvar_FreeString( s ); } // ZOID--needs to be set so that cvars the game sets as // SERVERINFO get sent to clients//.........这里部分代码省略.........
开发者ID:DarthFutuza,项目名称:JediKnightGalaxies,代码行数:101,
示例29: CL_InitRefvoid CL_InitRef( void ) { refexport_t *ret; refimport_t rit; char dllName[MAX_OSPATH]; GetRefAPI_t GetRefAPI; Com_Printf( "----- Initializing Renderer ----/n" ); cl_renderer = Cvar_Get( "cl_renderer", DEFAULT_RENDER_LIBRARY, CVAR_ARCHIVE|CVAR_LATCH ); Com_sprintf( dllName, sizeof( dllName ), "%s_" ARCH_STRING DLL_EXT, cl_renderer->string ); #ifdef _WIN32 if( !(rendererLib = (void *)LoadLibrary( dllName )) && strcmp( cl_renderer->string, cl_renderer->resetString ) ) #else if( !(rendererLib = Sys_LoadDll( dllName, qfalse )) && strcmp( cl_renderer->string, cl_renderer->resetString ) ) #endif { Com_Printf( "failed: trying to load fallback renderer/n" ); Cvar_ForceReset( "cl_renderer" ); Com_sprintf( dllName, sizeof( dllName ), DEFAULT_RENDER_LIBRARY "_" ARCH_STRING DLL_EXT ); #ifdef _WIN32 rendererLib = (void *)LoadLibrary( dllName ); #else rendererLib = Sys_LoadDll( dllName, qfalse ); #endif } if ( !rendererLib ) { Com_Error( ERR_FATAL, "Failed to load renderer" ); } #ifdef _WIN32 GetRefAPI = (GetRefAPI_t)GetProcAddress( (HMODULE)rendererLib, "GetRefAPI" ); if ( !GetRefAPI ) Com_Error( ERR_FATAL, "CL_InitRef(): NULL GetRefAPI on handle for %s/n", dllName ); #else GetRefAPI = (GetRefAPI_t)Sys_LoadFunction( rendererLib, "GetRefAPI" ); if ( !GetRefAPI ) Com_Error( ERR_FATAL, "Can't load symbol GetRefAPI: '%s'", Sys_LibraryError() ); #endif#define RIT(y) rit.y = y RIT(CIN_PlayCinematic); RIT(CIN_RunCinematic); RIT(CIN_UploadCinematic); RIT(CL_IsRunningInGameCinematic); RIT(Cmd_AddCommand); RIT(Cmd_Argc); RIT(Cmd_ArgsBuffer); RIT(Cmd_Argv); RIT(Cmd_ExecuteString); RIT(Cmd_RemoveCommand); RIT(CM_ClusterPVS); RIT(CM_CullWorldBox); RIT(CM_DeleteCachedMap); RIT(CM_DrawDebugSurface); RIT(CM_PointContents); RIT(CM_RegisterTerrain); RIT(CM_ShutdownTerrain); RIT(CM_TerrainPatchIterate); RIT(Cvar_Get); RIT(Cvar_Set); RIT(Cvar_SetValue); RIT(Cvar_VariableIntegerValue); RIT(Cvar_VariableString); RIT(Cvar_VariableStringBuffer); RIT(Cvar_VariableValue); RIT(FS_FCloseFile); RIT(FS_FileIsInPAK); RIT(FS_FOpenFileByMode); RIT(FS_FOpenFileRead); RIT(FS_FOpenFileWrite); RIT(FS_FreeFile); RIT(FS_FreeFileList); RIT(FS_ListFiles); RIT(FS_Read); RIT(FS_ReadFile); RIT(FS_Write); RIT(FS_WriteFile); RIT(Hunk_ClearToMark); RIT(SG_Append); RIT(SND_RegisterAudio_LevelLoadEnd); RIT(SV_GetConfigstring); //RIT(SV_PointContents); RIT(SV_SetConfigstring); RIT(SV_Trace); RIT(S_RestartMusic); RIT(Z_Free); RIT(Z_Malloc); RIT(Z_MemSize); RIT(Z_MorphMallocTag); RIT(Hunk_ClearToMark);#ifndef _WIN32 RIT(IN_Init); RIT(IN_Shutdown); RIT(IN_Restart);#endif//.........这里部分代码省略.........
开发者ID:Joanxt,项目名称:OpenJK,代码行数:101,
注:本文中的Com_Error函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ Com_Filter函数代码示例 C++ Com_DPrintf函数代码示例 |