本文整理汇总了C++中CG_Error函数的典型用法代码示例。如果您正苦于以下问题:C++ CG_Error函数的具体用法?C++ CG_Error怎么用?C++ CG_Error使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了CG_Error函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CG_RegisterUpgrade
/*
=================
CG_RegisterUpgrade
The server says this item is used on this level
=================
*/
void CG_RegisterUpgrade( int upgradeNum )
{
upgradeInfo_t *upgradeInfo;
char *icon;
if( upgradeNum <= UP_NONE || upgradeNum >= UP_NUM_UPGRADES )
{
CG_Error( "CG_RegisterUpgrade: out of range: %d", upgradeNum );
return;
}
upgradeInfo = &cg_upgrades[ upgradeNum ];
if( upgradeInfo->registered )
{
CG_Printf( "CG_RegisterUpgrade: already registered: (%d) %s\n", upgradeNum,
BG_Upgrade( upgradeNum )->name );
return;
}
upgradeInfo->registered = qtrue;
if( !BG_Upgrade( upgradeNum )->name[ 0 ] )
CG_Error( "Couldn't find upgrade %i", upgradeNum );
upgradeInfo->humanName = BG_Upgrade( upgradeNum )->humanName;
//la la la la la, i'm not listening!
if( upgradeNum == UP_GRENADE )
upgradeInfo->upgradeIcon = cg_weapons[ WP_GRENADE ].weaponIcon;
else if( ( icon = BG_Upgrade( upgradeNum )->icon ) )
upgradeInfo->upgradeIcon = trap_R_RegisterShader( icon );
}
示例2: CG_SoundLoadSoundFiles
static void CG_SoundLoadSoundFiles( void ) {
char soundFiles[MAX_SOUND_FILES][MAX_QPATH];
char buffer[MAX_BUFFER];
char *text;
char filename[MAX_QPATH];
fileHandle_t f;
int numSounds;
int i, len;
char *token;
// scan for sound files
Com_sprintf( filename, MAX_QPATH, "sound/scripts/filelist.txt" );
len = trap_FS_FOpenFile( filename, &f, FS_READ );
if ( len <= 0 ) {
CG_Printf( S_COLOR_RED "WARNING: no sound files found (filelist.txt not found in sound/scripts)\n" );
return;
}
if ( len > MAX_BUFFER ) {
CG_Error( "%s is too big, make it smaller (max = %i bytes)\n", filename, MAX_BUFFER );
}
// load the file into memory
trap_FS_Read( buffer, len, f );
buffer[len] = 0;
trap_FS_FCloseFile( f );
// parse the list
text = buffer;
numSounds = 0;
while ( 1 ) {
token = COM_ParseExt( &text, qtrue );
if ( !token[0] ) {
break;
}
Com_sprintf( soundFiles[numSounds++], MAX_QPATH, token );
}
if ( !numSounds ) {
CG_Printf( S_COLOR_RED "WARNING: no sound files found\n" );
return;
}
// load and parse sound files
for ( i = 0; i < numSounds; i++ )
{
Com_sprintf( filename, sizeof( filename ), "sound/scripts/%s", soundFiles[i] );
#ifndef NDEBUG
CG_Printf( "...loading '%s'\n", filename );
#endif
len = trap_FS_FOpenFile( filename, &f, FS_READ );
if ( len <= 0 ) {
CG_Error( "Couldn't load %s", filename );
}
if ( len > MAX_BUFFER ) {
CG_Error( "%s is too big, make it smaller (max = %i bytes)\n", filename, MAX_BUFFER );
}
memset( buffer, 0, sizeof( buffer ) );
trap_FS_Read( buffer, len, f );
trap_FS_FCloseFile( f );
CG_SoundParseSounds( filename, buffer );
}
}
示例3: CG_ParseTeamInfo
/*
=================
CG_ParseTeamInfo
=================
*/
static void CG_ParseTeamInfo( void ) {
int i;
int client;
numSortedTeamPlayers = atoi( CG_Argv( 1 ) );
if( numSortedTeamPlayers < 0 || numSortedTeamPlayers > TEAM_MAXOVERLAY )
{
CG_Error( "CG_ParseTeamInfo: numSortedTeamPlayers out of range (%d)",
numSortedTeamPlayers );
return;
}
for ( i = 0 ; i < numSortedTeamPlayers ; i++ ) {
client = atoi( CG_Argv( i * 6 + 2 ) );
if( client < 0 || client >= MAX_CLIENTS )
{
CG_Error( "CG_ParseTeamInfo: bad client number: %d", client );
return;
}
sortedTeamPlayers[i] = client;
cgs.clientinfo[ client ].location = atoi( CG_Argv( i * 6 + 3 ) );
cgs.clientinfo[ client ].health = atoi( CG_Argv( i * 6 + 4 ) );
cgs.clientinfo[ client ].armor = atoi( CG_Argv( i * 6 + 5 ) );
cgs.clientinfo[ client ].curWeapon = atoi( CG_Argv( i * 6 + 6 ) );
cgs.clientinfo[ client ].powerups = atoi( CG_Argv( i * 6 + 7 ) );
}
}
示例4: SP_info_train_spline_main
void SP_info_train_spline_main( void ) {
char* targetname;
char* target;
char* control;
vec3_t origin;
int i;
char* end;
splinePath_t* spline;
if( !CG_SpawnVector("origin", "0 0 0", origin) ) {
CG_Error ("info_train_spline_main with no origin\n");
}
if ( !CG_SpawnString("targetname", "", &targetname) ) {
CG_Error ("info_train_spline_main with no targetname at %s\n", vtos(origin));
}
CG_SpawnString("target", "", &target);
spline = BG_AddSplinePath( targetname, target, origin );
if(CG_SpawnString( "end", "", &end )) {
spline->isEnd = qtrue;
} else if(CG_SpawnString( "start", "", &end )) {
spline->isStart = qtrue;
}
for( i = 1;; i++ ) {
if(!CG_SpawnString( i == 1 ? va( "control" ) : va( "control%i", i ), "", &control )) {
break;
}
BG_AddSplineControl( spline, control );
}
}
示例5: CG_JS_Sys_Cvar_Init
void CG_JS_Sys_Cvar_Init(JSContext *ctx, JSObject *Sys)
{
JSObject *cvar = JS_DefineObject(ctx, Sys, "Cvar", &cvar_class, NULL, 0);
if (!cvar)
CG_Error("Failed to Define javascript Cvar object\n");
if (!JS_DefineFunctions(ctx, cvar, cvar_static_methods))
CG_Error("Failed to Define javascript Cvar functions\n");
}
示例6: CG_TransitionSnapshot
/*
===================
CG_TransitionSnapshot
The transition point from snap to nextSnap has passed
===================
*/
static void CG_TransitionSnapshot( void ) {
centity_t *cent;
snapshot_t *oldFrame;
int i;
if ( !cg.snap ) {
CG_Error( "CG_TransitionSnapshot: NULL cg.snap" );
}
if ( !cg.nextSnap ) {
CG_Error( "CG_TransitionSnapshot: NULL cg.nextSnap" );
}
// execute any server string commands before transitioning entities
CG_ExecuteNewServerCommands( cg.nextSnap->serverCommandSequence );
// clear the currentValid flag for all entities in the existing snapshot
for ( i = 0 ; i < cg.snap->numEntities ; i++ ) {
cent = &cg_entities[ cg.snap->entities[ i ].number ];
cent->currentValid = qfalse;
}
// move nextSnap to snap and do the transitions
oldFrame = cg.snap;
cg.snap = cg.nextSnap;
BG_PlayerStateToEntityState( &cg.snap->ps, &cg_entities[ cg.snap->ps.clientNum ].currentState, qfalse );
cg_entities[ cg.snap->ps.clientNum ].interpolate = qfalse;
for ( i = 0 ; i < cg.snap->numEntities ; i++ ) {
cent = &cg_entities[ cg.snap->entities[ i ].number ];
CG_TransitionEntity( cent );
// remember time of snapshot this entity was last updated in
cent->snapShotTime = cg.snap->serverTime;
}
cg.nextSnap = NULL;
// check for playerstate transition events
if ( oldFrame ) {
playerState_t *ops, *ps;
ops = &oldFrame->ps;
ps = &cg.snap->ps;
// teleporting checks are irrespective of prediction
if ( ( ps->eFlags ^ ops->eFlags ) & EF_TELEPORT_BIT ) {
cg.thisFrameTeleport = qtrue; // will be cleared by prediction code
}
// if we are not doing client side movement prediction for any
// reason, then the client events and view changes will be issued now
if ( cg.demoPlayback || (cg.snap->ps.pm_flags & PMF_FOLLOW)
|| cg_nopredict.integer || cg_synchronousClients.integer ) {
CG_TransitionPlayerState( ps, ops );
}
}
}
示例7: CG_ParticleExplosion
void CG_ParticleExplosion (char *animStr, vec3_t origin, vec3_t vel, int duration, int sizeStart, int sizeEnd)
{
cparticle_t *p;
int anim;
if (animStr < (char *)10)
CG_Error( "CG_ParticleExplosion: animStr is probably an index rather than a string" );
// find the animation string
for (anim=0; shaderAnimNames[anim]; anim++) {
if (!Q_stricmp( animStr, shaderAnimNames[anim] ))
break;
}
if (!shaderAnimNames[anim]) {
CG_Error("CG_ParticleExplosion: unknown animation string: %s", animStr);
return;
}
if (!free_particles)
return;
p = free_particles;
free_particles = p->next;
p->next = active_particles;
active_particles = p;
p->time = cg.time;
#ifdef WOLF_PARTICLES
p->alpha = 1.0;
#else
p->alpha = 0.5;
#endif
p->alphavel = 0;
if (duration < 0) {
duration *= -1;
p->roll = 0;
} else {
p->roll = crandom()*179;
}
p->shaderAnim = anim;
p->width = sizeStart;
p->height = sizeStart*shaderAnimSTRatio[anim]; // for sprites that are stretch in either direction
p->endheight = sizeEnd;
p->endwidth = sizeEnd*shaderAnimSTRatio[anim];
p->endtime = cg.time + duration;
p->type = P_ANIM;
VectorCopy( origin, p->org );
VectorCopy( vel, p->vel );
VectorClear( p->accel );
}
示例8: assert
/*
* SCR_GetNextColumnLayout
*/
static const char *SCR_GetNextColumnLayout( const char **ptrlay, const char **ptrtitle, char *type, int *width, struct qfontface_s *font )
{
static const char *empty = "";
const char *token;
assert( ptrlay && *ptrlay );
// get the token type from the layout
token = COM_ParseExt( ptrlay, true );
if( !token[0] )
return NULL;
if( token[0] != '%' )
CG_Error( "SCR_GetNextColumnLayout: Invalid player tab layout (expecting token type. found '%s')\n", token );
if( type )
*type = token[1];
// get the column width from the layout
token = COM_ParseExt( ptrlay, true );
if( !token[0] || token[0] == '%' )
CG_Error( "SCR_GetNextColumnLayout: Invalid player tab layout (expecting token width. found '%s')\n", token );
if( width )
{
float widthScale = cg_scoreboardWidthScale->value;
bool relative = true;
if( token[0] == 'l' ) // line heights
{
widthScale *= trap_SCR_FontHeight( font );
relative = false;
token++;
}
*width = (int)( atof( token ) * widthScale );
if( relative )
*width = *width * cgs.vidHeight / 600;
if( *width < 0 )
*width = 0;
}
if( ptrtitle && *ptrtitle )
{
// get the column title token from the layout
token = COM_ParseExt( ptrtitle, true );
if( !token[0] )
CG_Error( "SCR_GetNextColumnLayout: Invalid player tab layout (expecting token tittle. found '%s')\n", token );
}
else
{
token = empty;
}
return token;
}
示例9: CG_ParseSpawnVars
/*
====================
CG_ParseSpawnVars
Parses a brace bounded set of key / value pairs out of the
level's entity strings into cg.spawnVars[]
This does not actually spawn an entity.
====================
*/
qboolean CG_ParseSpawnVars(void)
{
char keyname[MAX_TOKEN_CHARS];
char com_token[MAX_TOKEN_CHARS];
cg.numSpawnVars = 0;
cg.numSpawnVarChars = 0;
// parse the opening brace
if (!trap_GetEntityToken(com_token, sizeof(com_token)))
{
// end of spawn string
return qfalse;
}
if (com_token[0] != '{')
{
CG_Error("CG_ParseSpawnVars: found %s when expecting {", com_token);
}
// go through all the key / value pairs
while (1)
{
// parse key
if (!trap_GetEntityToken(keyname, sizeof(keyname)))
{
CG_Error("CG_ParseSpawnVars: EOF without closing brace");
}
if (keyname[0] == '}')
{
break;
}
// parse value
if (!trap_GetEntityToken(com_token, sizeof(com_token)))
{
CG_Error("CG_ParseSpawnVars: EOF without closing brace");
}
if (com_token[0] == '}')
{
CG_Error("CG_ParseSpawnVars: closing brace without data");
}
if (cg.numSpawnVars == MAX_SPAWN_VARS)
{
CG_Error("CG_ParseSpawnVars: MAX_SPAWN_VARS");
}
cg.spawnVars[cg.numSpawnVars][0] = CG_AddSpawnVarToken(keyname);
cg.spawnVars[cg.numSpawnVars][1] = CG_AddSpawnVarToken(com_token);
cg.numSpawnVars++;
}
return qtrue;
}
示例10: CG_TransitionSnapshot
/*
===================
CG_TransitionSnapshot
The transition point from snap to nextSnap has passed
===================
*/
void CG_TransitionSnapshot( void ) {
centity_t *cent;
snapshot_t *oldFrame;
int i;
if ( !cg.snap ) {
CG_Error( "CG_TransitionSnapshot: NULL cg.snap" );
}
if ( !cg.nextSnap ) {
CG_Error( "CG_TransitionSnapshot: NULL cg.nextSnap" );
}
// execute any server string commands before transitioning entities
CG_ExecuteNewServerCommands( cg.nextSnap->serverCommandSequence );
// clear the currentValid flag for all entities in the existing snapshot
for ( i = 0 ; i < cg.snap->numEntities ; i++ ) {
cent = &cg_entities[ cg.snap->entities[ i ].number ];
cent->currentValid = qfalse;
}
// move nextSnap to snap and do the transitions
oldFrame = cg.snap;
cg.snap = cg.nextSnap;
// sort out solid entities
//CG_BuildSolidList();
for ( i = 0 ; i < cg.snap->numEntities ; i++ )
{
if ( 1 )//cg.snap->entities[ i ].number != 0 ) // I guess the player adds his/her events elsewhere, so doing this also gives us double events for the player!
{
cent = &cg_entities[ cg.snap->entities[ i ].number ];
CG_TransitionEntity( cent );
}
}
cg.nextSnap = NULL;
// check for playerstate transition events
if ( oldFrame ) {
// if we are not doing client side movement prediction for any
// reason, then the client events and view changes will be issued now
if ( cg_timescale.value >= 1.0f )
{
CG_TransitionPlayerState( &cg.snap->ps, &oldFrame->ps );
}
}
}
示例11: CG_RegisterUpgrade
/*
=================
CG_RegisterUpgrade
The server says this item is used on this level
=================
*/
void CG_RegisterUpgrade( int upgradeNum )
{
upgradeInfo_t *upgradeInfo;
char *icon;
upgradeInfo = &cg_upgrades[ upgradeNum ];
if( upgradeNum == 0 )
return;
if( upgradeInfo->registered )
return;
memset( upgradeInfo, 0, sizeof( *upgradeInfo ) );
upgradeInfo->registered = qtrue;
if( !BG_FindNameForUpgrade( upgradeNum ) )
CG_Error( "Couldn't find upgrade %i", upgradeNum );
upgradeInfo->humanName = BG_FindHumanNameForUpgrade( upgradeNum );
//la la la la la, i'm not listening!
if( upgradeNum == UP_GRENADE )
upgradeInfo->upgradeIcon = cg_weapons[ WP_GRENADE ].weaponIcon;
else if( ( icon = BG_FindIconForUpgrade( upgradeNum ) ) )
upgradeInfo->upgradeIcon = trap_R_RegisterShader( icon );
}
示例12: CG_DrawStats
void CG_DrawStats( char *stats ) {
int i, y, v, j;
#define MAX_STATS_VARS 64
int vars[MAX_STATS_VARS];
char *str, *token;
char *formatStr = NULL; // TTimo: init
int varIndex;
char string[MAX_QPATH];
UI_DrawProportionalString( 320, 120, "MISSION STATS",
UI_CENTER | UI_SMALLFONT | UI_DROPSHADOW, colorWhite );
Q_strncpyz( string, stats, sizeof( string ) );
str = string;
// convert commas to spaces
for ( i = 0; str[i]; i++ ) {
if ( str[i] == ',' ) {
str[i] = ' ';
}
}
for ( i = 0, y = 0, v = 0; statsItems[i].label; i++ ) {
y += statsItems[i].YOfs;
UI_DrawProportionalString( statsItems[i].labelX, y, statsItems[i].label,
statsItems[i].labelFlags, *statsItems[i].labelColor );
if ( statsItems[i].numVars ) {
varIndex = v;
for ( j = 0; j < statsItems[i].numVars; j++ ) {
token = COM_Parse( &str );
if ( !token || !token[0] ) {
CG_Error( "error parsing mission stats\n" );
return;
}
vars[v++] = atoi( token );
}
// build the formatStr
switch ( statsItems[i].numVars ) {
case 1:
formatStr = va( statsItems[i].format, vars[varIndex] );
break;
case 2:
formatStr = va( statsItems[i].format, vars[varIndex], vars[varIndex + 1] );
break;
case 3:
formatStr = va( statsItems[i].format, vars[varIndex], vars[varIndex + 1], vars[varIndex + 2] );
break;
case 4:
formatStr = va( statsItems[i].format, vars[varIndex], vars[varIndex + 1], vars[varIndex + 2], vars[varIndex + 3] );
break;
}
UI_DrawProportionalString( statsItems[i].formatX, y, formatStr,
statsItems[i].formatFlags, *statsItems[i].formatColor );
}
}
}
示例13: vmMain
/*
================
vmMain
This is the only way control passes into the module.
This must be the very first function compiled into the .q3vm file
================
*/
Q_EXPORT intptr_t vmMain( int command, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, int arg8, int arg9, int arg10, int arg11 ) {
switch ( command ) {
case CG_INIT:
CG_Init( arg0, arg1, arg2 );
return 0;
case CG_SHUTDOWN:
CG_Shutdown();
return 0;
case CG_CONSOLE_COMMAND:
return CG_ConsoleCommand();
case CG_DRAW_ACTIVE_FRAME:
CG_DrawActiveFrame( arg0, arg1, arg2 );
return 0;
case CG_CROSSHAIR_PLAYER:
return CG_CrosshairPlayer();
case CG_LAST_ATTACKER:
return CG_LastAttacker();
case CG_KEY_EVENT:
CG_KeyEvent(arg0, arg1);
return 0;
case CG_MOUSE_EVENT:
CG_MouseEvent(arg0, arg1);
return 0;
case CG_EVENT_HANDLING:
CG_EventHandling(arg0);
return 0;
default:
CG_Error( "vmMain: unknown command %i", command );
break;
}
return -1;
}
示例14: CG_JS_Sys_Init
void CG_JS_Sys_Init(JSContext *ctx, JSObject *global)
{
JSObject *Sys;
int len = strlen(GAME_VERSION);
char *gv = (char *)JS_malloc(ctx, len+1);
Sys = JS_DefineObject(ctx, global, "Sys", &sys_class, NULL, 0);
if (!Sys)
CG_Error("Failed to Define javascript Sys object\n");
if (!JS_DefineFunctions(ctx, Sys, sys_static_methods))
CG_Error("Failed to Define javascript Sys functions\n");
if (!JS_DefineConstDoubles(ctx, Sys, sys_constants))
CG_Error("Failed to Define javascript Sys constants\n");
CG_JS_Sys_Cvar_Init(ctx, Sys);
}
示例15: CG_SoundPickOldestRandomSound
/*
==============
CG_SoundPickOldestRandomSound
==============
*/
void CG_SoundPickOldestRandomSound( soundScript_t *sound, vec3_t org, int entnum ) {
int oldestTime = 0; // TTimo: init
soundScriptSound_t *oldestSound;
soundScriptSound_t *scriptSound;
oldestSound = NULL;
scriptSound = sound->soundList;
while ( scriptSound ) {
if ( !oldestSound || ( scriptSound->lastPlayed < oldestTime ) ) {
oldestTime = scriptSound->lastPlayed;
oldestSound = scriptSound;
}
scriptSound = scriptSound->next;
}
if ( oldestSound ) {
// play this sound
if ( !sound->streaming ) {
if ( !oldestSound->sfxHandle ) {
oldestSound->sfxHandle = trap_S_RegisterSound( oldestSound->filename );
}
trap_S_StartSound( org, entnum, sound->channel, oldestSound->sfxHandle );
} else {
trap_S_StartStreamingSound( oldestSound->filename, sound->looping ? oldestSound->filename : NULL, entnum, sound->channel, sound->attenuation );
}
oldestSound->lastPlayed = cg.time;
} else {
CG_Error( "Unable to locate a valid sound for soundScript: %s\n", sound->name );
}
}