02 Mar 2011

This commit is contained in:
g-cont 2011-03-02 00:00:00 +03:00 committed by Alibek Omarov
parent 7a1152a373
commit 2250b222c2
24 changed files with 213 additions and 201 deletions

View File

@ -519,14 +519,14 @@ void CL_ParsePacketEntities( sizebuf_t *msg, qboolean delta )
// is too old, so we can't reconstruct it properly.
MsgDev( D_INFO, "CL_ParsePacketEntities: delta frame too old\n" );
}
else if( cls.next_client_entities - oldframe->first_entity > cls.num_client_entities - 128 )
else if(( cls.next_client_entities - oldframe->first_entity ) > ( cls.num_client_entities - 128 ))
{
MsgDev( D_INFO, "CL_ParsePacketEntities: delta parse_entities too old\n" );
}
else newframe->valid = true; // valid delta parse
if(( cl.delta_sequence & CL_UPDATE_MASK ) != ( delta_sequence & CL_UPDATE_MASK ))
MsgDev( D_WARN, "CL_ParsePacketEntities: mismatch delta_sequence %i != %i\n", cl.delta_sequence, delta );
MsgDev( D_WARN, "CL_ParsePacketEntities: mismatch delta_sequence %i != %i\n", cl.delta_sequence, ( delta_sequence & CL_UPDATE_MASK ));
// keep sequence an actual
newframe->delta_sequence = delta_sequence;

View File

@ -1877,7 +1877,7 @@ static int pfnDrawConsoleString( int x, int y, char *string )
drawLen = Con_DrawString( x, y, string, clgame.ds.textColor );
MakeRGBA( clgame.ds.textColor, 255, 255, 255, 255 );
return drawLen; // exclude color prexfixes
return (x + drawLen); // exclude color prexfixes
}
/*

View File

@ -1562,7 +1562,7 @@ void CL_Explosion( vec3_t pos, int model, float scale, float framerate, int flag
if( flags & TE_EXPLFLAG_NOSOUND ) return;
hSound = S_RegisterSound( "weapons/explode3.wav" );
hSound = S_RegisterSound( va( "weapons/explode%i.wav", Com_RandomLong( 3, 5 )));
S_StartSound( pos, 0, CHAN_AUTO, hSound, VOL_NORM, ATTN_NORM, PITCH_NORM, 0 );
}

View File

@ -86,7 +86,7 @@ void SCR_CreateStartupVids( void )
void SCR_CheckStartupVids( void )
{
int c = 0;
script_t *vidlist = NULL;
char *afile, *pfile;
string token;
if( host.developer >= 2 )
@ -97,14 +97,14 @@ void SCR_CheckStartupVids( void )
}
if( !FS_FileExists( "media/StartupVids.txt" ))
{
SCR_CreateStartupVids();
}
vidlist = Com_OpenScript( "media/StartupVids.txt", NULL, 0 );
if( !vidlist ) return; // something bad happens
afile = FS_LoadFile( "media/StartupVids.txt", NULL );
if( !afile ) return; // something bad happens
while( Com_ReadString( vidlist, SC_ALLOW_NEWLINES|SC_ALLOW_PATHNAMES2, token ))
pfile = afile;
while(( pfile = COM_ParseFile( pfile, token )) != NULL )
{
com.strncpy( cls.movies[c], token, sizeof( cls.movies[0] ));
@ -115,7 +115,7 @@ void SCR_CheckStartupVids( void )
}
}
Com_CloseScript( vidlist );
Mem_Free( afile );
// run cinematic
if( !SV_Active() && cls.movienum != -1 && cls.state != ca_cinematic )

View File

@ -342,7 +342,6 @@ void R_LightForPoint( const vec3_t point, color24 *ambientLight, qboolean invLig
float dist, add;
model_t *pmodel;
mnode_t *pnodes;
int lnum;
if( !RI.refdef.movevars )
{
@ -403,7 +402,12 @@ void R_LightForPoint( const vec3_t point, color24 *ambientLight, qboolean invLig
// add dynamic lights
if( radius && r_dynamic->integer )
{
for( lnum = 0, dl = cl_dlights; lnum < MAX_DLIGHTS; lnum++, dl++ )
int lnum, total;
float f;
VectorClear( r_pointColor );
for( total = lnum = 0, dl = cl_dlights; lnum < MAX_DLIGHTS; lnum++, dl++ )
{
if( dl->die < cl.time || !dl->radius )
continue;
@ -414,10 +418,25 @@ void R_LightForPoint( const vec3_t point, color24 *ambientLight, qboolean invLig
if( !dist || dist > dl->radius + radius )
continue;
add = (dl->radius - dist);
ambientLight->r = ambientLight->r + (dl->color.r * add);
ambientLight->g = ambientLight->g + (dl->color.g * add);
ambientLight->b = ambientLight->b + (dl->color.b * add);
add = 1.0f - (dist / ( dl->radius + radius ));
r_pointColor[0] += dl->color.r * add;
r_pointColor[1] += dl->color.g * add;
r_pointColor[2] += dl->color.b * add;
total++;
}
if( total != 0 )
{
r_pointColor[0] += ambientLight->r;
r_pointColor[1] += ambientLight->g;
r_pointColor[2] += ambientLight->b;
f = max( max( r_pointColor[0], r_pointColor[1] ), r_pointColor[2] );
if( f > 1.0f ) VectorScale( r_pointColor, ( 255.0f / f ), r_pointColor );
ambientLight->r = r_pointColor[0];
ambientLight->g = r_pointColor[1];
ambientLight->b = r_pointColor[2];
}
}
}

View File

@ -280,6 +280,11 @@ int R_ComputeFxBlend( cl_entity_t *e )
else blend = renderAmt;
break;
}
// NOTE: never pass sprites with rendercolor '0 0 0' it's a stupid Valve Hammer Editor bug
if( !e->curstate.rendercolor.r && !e->curstate.rendercolor.g && !e->curstate.rendercolor.b )
e->curstate.rendercolor.r = e->curstate.rendercolor.g = e->curstate.rendercolor.b = 255;
blend = bound( 0, blend, 255 );
return blend;

View File

@ -161,6 +161,14 @@ void Mod_LoadSpriteModel( model_t *mod, const void *buffer )
mod->maxs[2] = pin->bounds[1] / 2;
numi = (short *)(pin + 1);
if( host.type == HOST_DEDICATED )
{
// skip frames loading
mod->type = mod_sprite;
psprite->numframes = 0;
return;
}
if( *numi == 256 )
{
byte *src = (byte *)(numi+1);
@ -375,6 +383,9 @@ void Mod_UnloadSpriteModel( model_t *mod )
// release all textures
for( i = 0; i < psprite->numframes; i++ )
{
if( host.type == HOST_DEDICATED )
break; // nothing to release
if( psprite->frames[i].type == SPR_SINGLE )
{
pspriteframe = psprite->frames[i].frameptr;
@ -775,8 +786,6 @@ static void R_DrawSpriteQuad( mspriteframe_t *frame, vec3_t org, vec3_t v_right,
{
vec3_t point;
GL_Bind( GL_TEXTURE0, frame->gl_texturenum );
pglBegin( GL_QUADS );
pglTexCoord2f( 0.0f, 1.0f );
VectorMA( org, frame->down * scale, v_up, point );
@ -811,8 +820,7 @@ void R_DrawSpriteModel( cl_entity_t *e )
float angle, dot, sr, cr, flAlpha;
float lerp = 1.0f, ilerp, scale;
vec3_t v_forward, v_right, v_up;
vec3_t origin;
vec3_t color;
vec3_t origin, color, color2;
model = e->model;
psprite = (msprite_t * )model->cache.data;
@ -880,37 +888,22 @@ void R_DrawSpriteModel( cl_entity_t *e )
// all sprites can have color
pglTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
// add basecolor
color[0] = (float)e->curstate.rendercolor.r * ( 1.0f / 255.0f );
color[1] = (float)e->curstate.rendercolor.g * ( 1.0f / 255.0f );
color[2] = (float)e->curstate.rendercolor.b * ( 1.0f / 255.0f );
if( psprite->texFormat == SPR_ALPHTEST )
if( psprite->texFormat == SPR_ALPHTEST && r_lighting_extended->integer )
{
color24 lightColor;
qboolean invLight;
float f;
invLight = (e->curstate.effects & EF_INVLIGHT) ? true : false;
R_LightForPoint( origin, &lightColor, invLight, sprite_radius );
color[0] = (float)lightColor.r * ( 1.0f / 255.0f );
color[1] = (float)lightColor.g * ( 1.0f / 255.0f );
color[2] = (float)lightColor.b * ( 1.0f / 255.0f );
// add basecolor
color[0] += (float)e->curstate.rendercolor.r * ( 1.0f / 255.0f );
color[1] += (float)e->curstate.rendercolor.g * ( 1.0f / 255.0f );
color[2] += (float)e->curstate.rendercolor.b * ( 1.0f / 255.0f );
// renormalize color
f = max( max( color[0], color[1] ), color[2] );
if( f > 1.0f ) VectorScale( color, ( 1.0f / f ), color );
}
else
{
// NOTE: never pass sprites with rendercolor '0 0 0' it's a stupid Valve Hammer Editor bug
if( !e->curstate.rendercolor.r && !e->curstate.rendercolor.g && !e->curstate.rendercolor.b )
e->curstate.rendercolor.r = e->curstate.rendercolor.g = e->curstate.rendercolor.b = 255;
color[0] = (float)e->curstate.rendercolor.r * ( 1.0f / 255.0f );
color[1] = (float)e->curstate.rendercolor.g * ( 1.0f / 255.0f );
color[2] = (float)e->curstate.rendercolor.b * ( 1.0f / 255.0f );
color2[0] = (float)lightColor.r * ( 1.0f / 255.0f );
color2[1] = (float)lightColor.g * ( 1.0f / 255.0f );
color2[2] = (float)lightColor.b * ( 1.0f / 255.0f );
}
if( e->curstate.rendermode == kRenderNormal || e->curstate.rendermode == kRenderTransAlpha )
@ -972,6 +965,7 @@ void R_DrawSpriteModel( cl_entity_t *e )
{
// draw the single non-lerped frame
pglColor4f( color[0], color[1], color[2], flAlpha );
GL_Bind( GL_TEXTURE0, frame->gl_texturenum );
R_DrawSpriteQuad( frame, origin, v_right, v_up, scale );
}
else
@ -983,16 +977,32 @@ void R_DrawSpriteModel( cl_entity_t *e )
if( ilerp != 0 )
{
pglColor4f( color[0], color[1], color[2], flAlpha * ilerp );
GL_Bind( GL_TEXTURE0, frame->gl_texturenum );
R_DrawSpriteQuad( oldframe, origin, v_right, v_up, scale );
}
if( lerp != 0 )
{
pglColor4f( color[0], color[1], color[2], flAlpha * lerp );
GL_Bind( GL_TEXTURE0, frame->gl_texturenum );
R_DrawSpriteQuad( frame, origin, v_right, v_up, scale );
}
}
// draw the sprite 'lightmap' :-)
if( psprite->texFormat == SPR_ALPHTEST && r_lighting_extended->integer )
{
pglEnable( GL_BLEND );
pglDepthFunc( GL_EQUAL );
pglDisable( GL_ALPHA_TEST );
pglBlendFunc( GL_ZERO, GL_SRC_COLOR );
pglTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
pglColor4f( color2[0], color2[1], color2[2], flAlpha );
GL_Bind( GL_TEXTURE0, tr.whiteTexture );
R_DrawSpriteQuad( frame, origin, v_right, v_up, scale );
}
if( psprite->facecull == SPR_CULL_NONE )
GL_Cull( GL_FRONT );
@ -1006,6 +1016,7 @@ void R_DrawSpriteModel( cl_entity_t *e )
}
pglDisable( GL_BLEND );
pglDepthFunc( GL_LEQUAL );
pglTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE );
pglColor4ub( 255, 255, 255, 255 );
}

View File

@ -1467,7 +1467,7 @@ void R_StudioSetupLighting( alight_t *lightinfo )
// setup ambient lighting
invLight = (RI.currententity->curstate.effects & EF_INVLIGHT) ? true : false;
R_LightForPoint( ent->origin, &ambient, invLight, 0.0f ); // we already handle dynamic lights
R_LightForPoint( ent->origin, &ambient, invLight, 0.0f ); // ignore dlights
plight->lightcolor[0] = ambient.r * (1.0f / 255.0f);
plight->lightcolor[1] = ambient.g * (1.0f / 255.0f);

View File

@ -40,6 +40,8 @@
#define MAX_MSGLEN 32768 // max length of network message
// FIXME: replace with NET_MAX_PAYLOAD
typedef struct stream_s stream_t; // sound stream for background music playing
#ifdef _DEBUG
void DBG_AssertFunction( qboolean fExpr, const char* szExpr, const char* szFile, int szLine, const char* szMessage );
#define Assert( f ) DBG_AssertFunction( f, #f, __FILE__, __LINE__, NULL )
@ -93,6 +95,14 @@ typedef enum
PRINT_CHAT, // chat messages
} messagelevel_t;
typedef enum
{
NS_CLIENT,
NS_SERVER
} netsrc_t;
#include "netadr.h"
typedef struct host_redirect_s
{
rdtype_t target;
@ -154,6 +164,22 @@ extern host_parm_t host;
}
#endif
//
// network.c
//
void NET_Init( void );
void NET_Shutdown( void );
void NET_Sleep( int msec );
void NET_Config( qboolean net_enable );
qboolean NET_IsLocalAddress( netadr_t adr );
char *NET_AdrToString( const netadr_t a );
char *NET_BaseAdrToString( const netadr_t a );
qboolean NET_StringToAdr( const char *string, netadr_t *adr );
qboolean NET_CompareAdr( const netadr_t a, const netadr_t b );
qboolean NET_CompareBaseAdr( const netadr_t a, const netadr_t b );
qboolean NET_GetPacket( netsrc_t sock, netadr_t *from, byte *data, size_t *length );
void NET_SendPacket( netsrc_t sock, size_t length, const void *data, netadr_t to );
/*
========================================================================

View File

@ -81,7 +81,7 @@ skipwhite:
}
// parse single characters
if( c == '{' || c == '}'|| c == ')'|| c == '(' || c == '\'' || c == ',' )
if( c == '{' || c == '}' || c == ')' || c == '(' || c == '\'' || c == ',' )
{
token[len] = c;
len++;

View File

@ -521,36 +521,37 @@ void Delta_ParseTableField( sizebuf_t *msg )
Delta_AddField( dt->pName, pName, flags, bits, mul, post_mul );
}
qboolean Delta_ParseField( script_t *delta_script, const delta_field_t *pInfo, delta_t *pField, qboolean bPost )
qboolean Delta_ParseField( char **delta_script, const delta_field_t *pInfo, delta_t *pField, qboolean bPost )
{
token_t token;
string token;
delta_field_t *pFieldInfo;
char *oldpos;
Com_ReadToken( delta_script, 0, &token );
if( com.strcmp( token.string, "(" ))
*delta_script = COM_ParseFile( *delta_script, token );
if( com.strcmp( token, "(" ))
{
MsgDev( D_ERROR, "Delta_ParseField: expected '(', found '%s' instead\n", token.string );
MsgDev( D_ERROR, "Delta_ParseField: expected '(', found '%s' instead\n", token );
return false;
}
// read the variable name
if( !Com_ReadToken( delta_script, SC_ALLOW_PATHNAMES2, &token ))
if(( *delta_script = COM_ParseFile( *delta_script, token )) == NULL )
{
MsgDev( D_ERROR, "Delta_ParseField: missing field name\n" );
return false;
}
pFieldInfo = Delta_FindFieldInfo( pInfo, token.string );
pFieldInfo = Delta_FindFieldInfo( pInfo, token );
if( !pFieldInfo )
{
MsgDev( D_ERROR, "Delta_ParseField: unable to find field %s\n", token.string );
MsgDev( D_ERROR, "Delta_ParseField: unable to find field %s\n", token );
return false;
}
Com_ReadToken( delta_script, 0, &token );
if( com.strcmp( token.string, "," ))
*delta_script = COM_ParseFile( *delta_script, token );
if( com.strcmp( token, "," ))
{
MsgDev( D_ERROR, "Delta_ParseField: expected ',', found '%s' instead\n", token.string );
MsgDev( D_ERROR, "Delta_ParseField: expected ',', found '%s' instead\n", token );
return false;
}
@ -561,74 +562,81 @@ qboolean Delta_ParseField( script_t *delta_script, const delta_field_t *pInfo, d
pField->flags = 0;
// read delta-flags
while( Com_ReadToken( delta_script, false, &token ))
while(( *delta_script = COM_ParseFile( *delta_script, token )) != NULL )
{
if( !com.strcmp( token.string, "," ))
if( !com.strcmp( token, "," ))
break; // end of flags argument
if( !com.strcmp( token.string, "|" ))
if( !com.strcmp( token, "|" ))
continue;
if( !com.strcmp( token.string, "DT_BYTE" ))
if( !com.strcmp( token, "DT_BYTE" ))
pField->flags |= DT_BYTE;
else if( !com.strcmp( token.string, "DT_SHORT" ))
else if( !com.strcmp( token, "DT_SHORT" ))
pField->flags |= DT_SHORT;
else if( !com.strcmp( token.string, "DT_FLOAT" ))
else if( !com.strcmp( token, "DT_FLOAT" ))
pField->flags |= DT_FLOAT;
else if( !com.strcmp( token.string, "DT_INTEGER" ))
else if( !com.strcmp( token, "DT_INTEGER" ))
pField->flags |= DT_INTEGER;
else if( !com.strcmp( token.string, "DT_ANGLE" ))
else if( !com.strcmp( token, "DT_ANGLE" ))
pField->flags |= DT_ANGLE;
else if( !com.strncmp( token.string, "DT_TIMEWINDOW", 13 ))
else if( !com.strncmp( token, "DT_TIMEWINDOW", 13 ))
pField->flags |= DT_TIMEWINDOW;
else if( !com.strcmp( token.string, "DT_STRING" ))
else if( !com.strcmp( token, "DT_STRING" ))
pField->flags |= DT_STRING;
else if( !com.strcmp( token.string, "DT_SIGNED" ))
else if( !com.strcmp( token, "DT_SIGNED" ))
pField->flags |= DT_SIGNED;
}
if( com.strcmp( token.string, "," ))
if( com.strcmp( token, "," ))
{
MsgDev( D_ERROR, "Delta_ParseField: expected ',', found '%s' instead\n", token.string );
MsgDev( D_ERROR, "Delta_ParseField: expected ',', found '%s' instead\n", token );
return false;
}
// read delta-bits
if( !Com_ReadLong( delta_script, false, &pField->bits ))
if(( *delta_script = COM_ParseFile( *delta_script, token )) == NULL )
{
MsgDev( D_ERROR, "Delta_ReadField: %s field bits argument is missing\n", pField->name );
return false;
}
Com_ReadToken( delta_script, 0, &token );
if( com.strcmp( token.string, "," ))
pField->bits = com.atoi( token );
*delta_script = COM_ParseFile( *delta_script, token );
if( com.strcmp( token, "," ))
{
MsgDev( D_ERROR, "Delta_ReadField: expected ',', found '%s' instead\n", token.string );
MsgDev( D_ERROR, "Delta_ReadField: expected ',', found '%s' instead\n", token );
return false;
}
// read delta-multiplier
if( !Com_ReadFloat( delta_script, false, &pField->multiplier ))
if(( *delta_script = COM_ParseFile( *delta_script, token )) == NULL )
{
MsgDev( D_ERROR, "Delta_ReadField: %s missing 'multiplier' argument\n", pField->name );
return false;
}
pField->multiplier = com.atof( token );
if( bPost )
{
Com_ReadToken( delta_script, 0, &token );
if( com.strcmp( token.string, "," ))
*delta_script = COM_ParseFile( *delta_script, token );
if( com.strcmp( token, "," ))
{
MsgDev( D_ERROR, "Delta_ReadField: expected ',', found '%s' instead\n", token.string );
MsgDev( D_ERROR, "Delta_ReadField: expected ',', found '%s' instead\n", token );
return false;
}
// read delta-postmultiplier
if( !Com_ReadFloat( delta_script, false, &pField->post_multiplier ))
if(( *delta_script = COM_ParseFile( *delta_script, token )) == NULL )
{
MsgDev( D_ERROR, "Delta_ReadField: %s missing 'post_multiply' argument\n", pField->name );
return false;
}
pField->post_multiplier = com.atof( token );
}
else
{
@ -637,22 +645,24 @@ qboolean Delta_ParseField( script_t *delta_script, const delta_field_t *pInfo, d
}
// closing brace...
Com_ReadToken( delta_script, 0, &token );
if( com.strcmp( token.string, ")" ))
*delta_script = COM_ParseFile( *delta_script, token );
if( com.strcmp( token, ")" ))
{
MsgDev( D_ERROR, "Delta_ParseField: expected ')', found '%s' instead\n", token.string );
MsgDev( D_ERROR, "Delta_ParseField: expected ')', found '%s' instead\n", token );
return false;
}
// ... and trying to parse optional ',' post-symbol
Com_ReadToken( delta_script, 0, &token );
oldpos = *delta_script;
*delta_script = COM_ParseFile( *delta_script, token );
if( token[0] != ',' ) *delta_script = oldpos; // not a ','
return true;
}
void Delta_ParseTable( script_t *delta_script, delta_info_t *dt, const char *encodeDll, const char *encodeFunc )
void Delta_ParseTable( char **delta_script, delta_info_t *dt, const char *encodeDll, const char *encodeFunc )
{
token_t token;
string token;
delta_t *pField;
const delta_field_t *pInfo;
@ -664,23 +674,21 @@ void Delta_ParseTable( script_t *delta_script, delta_info_t *dt, const char *enc
dt->numFields = 0;
// assume we have handled '{'
while( Com_ReadToken( delta_script, SC_ALLOW_NEWLINES|SC_ALLOW_PATHNAMES2, &token ))
while(( *delta_script = COM_ParseFile( *delta_script, token )) != NULL )
{
ASSERT( dt->numFields <= dt->maxFields );
if( !com.strcmp( token.string, "DEFINE_DELTA" ))
if( !com.strcmp( token, "DEFINE_DELTA" ))
{
if( Delta_ParseField( delta_script, pInfo, &pField[dt->numFields], false ))
dt->numFields++;
else Com_SkipRestOfLine( delta_script );
}
else if( !com.strcmp( token.string, "DEFINE_DELTA_POST" ))
else if( !com.strcmp( token, "DEFINE_DELTA_POST" ))
{
if( Delta_ParseField( delta_script, pInfo, &pField[dt->numFields], true ))
dt->numFields++;
else Com_SkipRestOfLine( delta_script );
}
else if( token.string[0] == '}' )
else if( token[0] == '}' )
{
// end of the section
break;
@ -708,13 +716,12 @@ void Delta_ParseTable( script_t *delta_script, delta_info_t *dt, const char *enc
void Delta_InitFields( void )
{
script_t *delta_script;
char *afile, *pfile;
string encodeDll, encodeFunc, token;
delta_info_t *dt;
string encodeDll, encodeFunc;
token_t token;
delta_script = Com_OpenScript( DELTA_PATH, NULL, 0 );
if( !delta_script )
afile = FS_LoadFile( DELTA_PATH, NULL );
if( !afile )
{
static string errormsg;
@ -723,24 +730,32 @@ void Delta_InitFields( void )
com.error( errormsg );
}
while( Com_ReadToken( delta_script, SC_ALLOW_NEWLINES|SC_ALLOW_PATHNAMES2, &token ))
{
dt = Delta_FindStruct( token.string );
pfile = afile;
Com_ReadString( delta_script, false, encodeDll );
while(( pfile = COM_ParseFile( pfile, token )) != NULL )
{
dt = Delta_FindStruct( token );
if( dt == NULL )
{
Sys_Break( "delta.lst: unknown struct %s\n", token );
}
pfile = COM_ParseFile( pfile, encodeDll );
if( !com.stricmp( encodeDll, "none" ))
com.strcpy( encodeFunc, "null" );
else Com_ReadString( delta_script, false, encodeFunc );
else pfile = COM_ParseFile( pfile, encodeFunc );
// jump to '{'
Com_ReadToken( delta_script, SC_ALLOW_NEWLINES, &token );
ASSERT( token.string[0] == '{' );
if( dt ) Delta_ParseTable( delta_script, dt, encodeDll, encodeFunc );
else Com_SkipBracedSection( delta_script, 1 );
pfile = COM_ParseFile( pfile, token );
if( token[0] != '{' )
{
Sys_Break( "delta.lst: missing '{' in section %s\n", dt->pName );
}
Delta_ParseTable( &pfile, dt, encodeDll, encodeFunc );
}
Com_CloseScript( delta_script );
Mem_Free( afile );
// adding some requrid fields fields that use may forget or don't know how to specified
Delta_AddField( "event_t", "flags", DT_INTEGER, 8, 1.0f, 1.0f );

View File

@ -4,10 +4,8 @@
//=======================================================================
#include <winsock.h>
#include "launch.h"
// This is the packet payload without any header bytes (which are attached for actual sending)
#define NET_MAX_PAYLOAD 80000
#include "common.h"
#include "netchan.h"
#define PORT_ANY -1
#define PORT_CLIENT 27901
@ -458,7 +456,7 @@ void NET_SendPacket( netsrc_t sock, size_t length, const void *data, netadr_t to
return;
if( to.type != NA_BROADCAST && to.type != NA_IP )
Sys_Error( "NET_SendPacket: bad address type %i\n", to.type );
Host_Error( "NET_SendPacket: bad address type %i\n", to.type );
net_socket = ip_sockets[sock];
if( !net_socket ) return;
@ -554,12 +552,12 @@ static void NET_OpenIP( void )
if( !port ) port = Cvar_Get( "port", va( "%i", PORT_SERVER ), CVAR_INIT, "network default port" )->integer;
ip_sockets[NS_SERVER] = NET_IPSocket( net_ip->string, port );
if( !ip_sockets[NS_SERVER] && Sys.app_name == HOST_DEDICATED )
Sys_Error( "couldn't allocate dedicated server IP port\n" );
if( !ip_sockets[NS_SERVER] && host.type == HOST_DEDICATED )
Host_Error( "couldn't allocate dedicated server IP port\n" );
}
// dedicated servers don't need client ports
if( Sys.app_name == HOST_DEDICATED ) return;
if( host.type == HOST_DEDICATED ) return;
if( !ip_sockets[NS_CLIENT] )
{
@ -618,7 +616,7 @@ void NET_Sleep( int msec )
fd_set fdset;
int i = 0;
if( Sys.app_name == HOST_NORMAL )
if( host.type == HOST_NORMAL )
return; // we're not a server, just run full speed
FD_ZERO( &fdset );

View File

@ -326,6 +326,10 @@ SOURCE=.\common\net_huff.c
# End Source File
# Begin Source File
SOURCE=.\common\network.c
# End Source File
# Begin Source File
SOURCE=.\common\pm_studio.c
# End Source File
# Begin Source File

View File

@ -228,7 +228,7 @@ gotnewcl:
BF_Init( &newcl->datagram, "Datagram", newcl->datagram_buf, sizeof( newcl->datagram_buf )); // datagram buf
newcl->state = cs_connected;
newcl->cl_updaterate = 0.05;
newcl->cl_updaterate = 0.05; // 20 fps as default
newcl->lastmessage = host.realtime;
newcl->lastconnect = host.realtime;
newcl->next_messagetime = host.realtime + newcl->cl_updaterate;
@ -313,6 +313,8 @@ edict_t *SV_FakeConnect( const char *netname )
// parse some info from the info strings
SV_UserinfoChanged( newcl, userinfo );
MsgDev( D_INFO, "Bot %i connecting with challenge %p\n", i, -1 );
newcl->state = cs_spawned;
newcl->lastmessage = host.realtime; // don't timeout
newcl->lastconnect = host.realtime;
@ -481,10 +483,10 @@ char *SV_StatusString( void )
{
char player[1024];
static char status[MAX_MSGLEN - 16];
int i;
sv_client_t *cl;
int statusLength;
int playerLength;
sv_client_t *cl;
int i;
com.strcpy( status, Cvar_Serverinfo( ));
com.strcat( status, "\n" );
@ -497,7 +499,7 @@ char *SV_StatusString( void )
{
com.sprintf( player, "%i %i \"%s\"\n", (int)cl->edict->v.frags, cl->ping, cl->name );
playerLength = com.strlen( player );
if( statusLength + playerLength >= sizeof(status))
if( statusLength + playerLength >= sizeof( status ))
break; // can't hold any more
com.strcpy( status + statusLength, player );
statusLength += playerLength;

View File

@ -642,6 +642,7 @@ void SV_Status_f( void )
if( cl->state == cs_connected ) Msg( "Connect" );
else if( cl->state == cs_zombie ) Msg( "Zombie " );
else if( cl->fakeclient ) Msg( "Bot " );
else
{
ping = cl->ping < 9999 ? cl->ping : 9999;

View File

@ -1448,7 +1448,7 @@ int pfnDropToFloor( edict_t* e )
if( !SV_IsValidEdict( e ))
{
MsgDev( D_ERROR, "SV_DropToFloor: invalid entity %s\n", SV_ClassName( e ));
return false;
return 0;
}
VectorCopy( e->v.origin, end );

View File

@ -117,7 +117,7 @@ static void SV_StudioCalcBoneAdj( float *adj, const byte *pcontroller )
// check for 360% wrapping
if( pbonecontroller[j].type & STUDIO_RLOOP )
{
value = pcontroller[i] * (360.0/256.0) + pbonecontroller[j].start;
value = pcontroller[i] * (360.0f / 256.0f) + pbonecontroller[j].start;
}
else
{

View File

@ -1126,8 +1126,8 @@ static qboolean FS_ParseLiblistGam( const char *filename, const char *gamedir, g
else if( !com.stricmp( token.string, "gamedll" ))
{
PS_ReadToken( script, false, &token );
if( !com.strstr( token.string, ".." )) // don't use indirect paths (..\valve\dlls\hl.dll)
com.strncpy( GameInfo->game_dll, token.string, sizeof( GameInfo->game_dll ));
// if( !com.strstr( token.string, ".." )) // don't use indirect paths (..\valve\dlls\hl.dll)
com.strncpy( GameInfo->game_dll, token.string, sizeof( GameInfo->game_dll ));
}
else if( !com.stricmp( token.string, "type" ))
{
@ -2418,6 +2418,7 @@ dll_user_t *FS_FindLibrary( const char *dllname, qboolean directpath )
// replace all backward slashes
for( i = 0; i < com.strlen( dllname ); i++ )
{
if( dllname[i] == '.' ) continue;
if( dllname[i] == '\\' ) dllpath[i] = '/';
else dllpath[i] = com.tolower( dllname[i] );
}

View File

@ -140,10 +140,6 @@ SOURCE=.\memlib.c
# End Source File
# Begin Source File
SOURCE=.\network.c
# End Source File
# Begin Source File
SOURCE=.\parselib.c
# End Source File
# Begin Source File

View File

@ -153,22 +153,6 @@ void Sys_QueEvent( ev_type_t type, int value, int value2, int length, void *ptr
#define Msg Sys_Msg
#define MsgDev Sys_MsgDev
//
// network.c
//
void NET_Init( void );
void NET_Shutdown( void );
void NET_Sleep( int msec );
void NET_Config( qboolean net_enable );
qboolean NET_IsLocalAddress( netadr_t adr );
char *NET_AdrToString( const netadr_t a );
char *NET_BaseAdrToString( const netadr_t a );
qboolean NET_StringToAdr( const char *string, netadr_t *adr );
qboolean NET_CompareAdr( const netadr_t a, const netadr_t b );
qboolean NET_CompareBaseAdr( const netadr_t a, const netadr_t b );
qboolean NET_GetPacket( netsrc_t sock, netadr_t *from, byte *data, size_t *length );
void NET_SendPacket( netsrc_t sock, size_t length, const void *data, netadr_t to );
//
// stdlib.c
//

View File

@ -65,11 +65,9 @@ typedef struct file_s file_t; // normal file
typedef struct wfile_s wfile_t; // wad file
typedef struct convar_s convar_t; // console variable
typedef struct script_s script_t; // script machine
typedef struct stream_s stream_t; // sound stream for background music playing
typedef struct { const char *name; void **func; } dllfunc_t; // Sys_LoadLibrary stuff
typedef struct { int numfilenames; char **filenames; char *filenamesbuffer; } search_t;
typedef void ( *setpair_t )( const char *key, const char *value, void *buffer, void *numpairs );
typedef enum { NS_CLIENT, NS_SERVER } netsrc_t;
typedef void ( *xcommand_t )( void );
// command buffer modes
@ -116,7 +114,6 @@ typedef enum
} cvar_flags_t;
#include "cvardef.h"
#include "netadr.h"
/*
========================================================================
@ -317,20 +314,6 @@ typedef struct stdilib_api_s
void (*memcheck)(const char *file, int line); // check memory pools for consistensy
qboolean (*is_allocated)( byte *poolptr, void *data ); // return true is memory is allocated
// network.c funcs
void (*NET_Init)( void );
void (*NET_Shutdown)( void );
void (*NET_Sleep)( int msec );
void (*NET_Config)( qboolean net_enable );
char *(*NET_AdrToString)( netadr_t a );
qboolean (*NET_IsLocalAddress)( netadr_t adr );
char *(*NET_BaseAdrToString)( const netadr_t a );
qboolean (*NET_StringToAdr)( const char *s, netadr_t *a );
qboolean (*NET_CompareAdr)( const netadr_t a, const netadr_t b );
qboolean (*NET_CompareBaseAdr)( const netadr_t a, const netadr_t b );
qboolean (*NET_GetPacket)( netsrc_t sock, netadr_t *from, byte *data, size_t *length );
void (*NET_SendPacket)( netsrc_t sock, size_t length, const void *data, netadr_t to );
// common functions
void (*Com_LoadGameInfo)( const char *rootfolder ); // initialize gamedir
void (*Com_AddGameHierarchy)( const char *dir, int flags ); // add base directory in search list
@ -612,24 +595,6 @@ filesystem manager
#define FS_CheckParm com.Com_CheckParm
#define FS_GetParmFromCmdLine( a, b ) com.Com_GetParm( a, b, sizeof( b ))
/*
===========================================
network messages
===========================================
*/
#define NET_Init com.NET_Init
#define NET_Shutdown com.NET_Shutdown
#define NET_Sleep com.NET_Sleep
#define NET_Config com.NET_Config
#define NET_AdrToString com.NET_AdrToString
#define NET_BaseAdrToString com.NET_BaseAdrToString
#define NET_IsLocalAddress com.NET_IsLocalAddress
#define NET_StringToAdr com.NET_StringToAdr
#define NET_SendPacket com.NET_SendPacket
#define NET_GetPacket com.NET_GetPacket
#define NET_CompareAdr com.NET_CompareAdr
#define NET_CompareBaseAdr com.NET_CompareBaseAdr
/*
===========================================
console variables

View File

@ -304,8 +304,8 @@ void *Com_LoadLibraryExt( const char *dllname, int build_ordinals_table, qboolea
if( hInst->custom_loader )
{
if( hInst->encrypted )
MsgDev( D_NOTE, "Sys_LoadLibrary: couldn't load encrypted library %s\n", dllname );
else MsgDev( D_NOTE, "Sys_LoadLibrary: couldn't load library %s from packfile\n", dllname );
MsgDev( D_ERROR, "Sys_LoadLibrary: couldn't load encrypted library %s\n", dllname );
else MsgDev( D_ERROR, "Sys_LoadLibrary: couldn't load library %s from packfile\n", dllname );
return NULL;
}
else hInst->hInstance = LoadLibrary( hInst->fullPath );

View File

@ -58,22 +58,6 @@ void Sys_GetStdAPI( void )
com.clearpool = _mem_emptypool;
com.memcheck = _mem_check;
// network.c funcs
com.NET_Init = NET_Init;
com.NET_Shutdown = NET_Shutdown;
com.NET_Sleep = NET_Sleep;
com.NET_Config = NET_Config;
com.NET_AdrToString = NET_AdrToString;
com.NET_StringToAdr = NET_StringToAdr;
com.NET_SendPacket = NET_SendPacket;
com.NET_IsLocalAddress = NET_IsLocalAddress;
com.NET_BaseAdrToString = NET_BaseAdrToString;
com.NET_StringToAdr = NET_StringToAdr;
com.NET_CompareAdr = NET_CompareAdr;
com.NET_CompareBaseAdr = NET_CompareBaseAdr;
com.NET_GetPacket = NET_GetPacket;
com.NET_SendPacket = NET_SendPacket;
com.Com_LoadGameInfo = FS_LoadGameInfo; // gate game info from script file
com.Com_AddGameHierarchy = FS_AddGameHierarchy; // add base directory in search list
com.Com_AddGameDirectory = FS_AddGameDirectory; // add game directory in search list
@ -277,7 +261,7 @@ void Sys_LookupInstance( void )
CloseHandle( Sys.hMutex );
Sys.hMutex = CreateSemaphore( NULL, 0, 1, "Xash Dedicated Server" );
if( !Sys.developer ) Sys.developer = 3; // otherwise we see empty console
com.sprintf( Sys.log_path, "engine.log", com.timestamp( TIME_FILENAME )); // logs folder
com.sprintf( Sys.log_path, "dedicated.log", com.timestamp( TIME_FILENAME )); // logs folder
}
else
{

View File

@ -727,7 +727,8 @@ bool UI_StartBackGroundMap( void )
first = FALSE;
if( !uiStatic.bgmapcount || CVAR_GET_FLOAT( "sv_background" ))
// some map is already running
if( !uiStatic.bgmapcount || CVAR_GET_FLOAT( "host_serverstate" ))
return FALSE;
int bgmapid = RANDOM_LONG( 0, uiStatic.bgmapcount - 1 );