16 Nov 2007

This commit is contained in:
g-cont 2007-11-16 00:00:00 +03:00 committed by Alibek Omarov
parent 71eb151733
commit e39e2def92
9 changed files with 135 additions and 167 deletions

View File

@ -39,6 +39,8 @@ scroll = visible_offset
//==================================================
// то, что уже готово
//==================================================
+èñïðàâëåí áàã â stdlib.c
-óáðàíà Sys_FatalError (MessageBox)
+исправлен баг в studiomdl
+исправлен баг в spritegen
+добавлен fps counter

View File

@ -61,5 +61,5 @@ if exist vprogs\progdefs.h move vprogs\progdefs.h engine\progdefs.h
echo Build succeeded!
echo Please wait. Xash is now loading
cd D:\Xash3D\
xash.exe +map qctest -log -debug -dev 3
xash.exe +map qctest -log -debug -dev 5
:done

View File

@ -233,34 +233,26 @@ void Field_CompleteCommand( field_t *field )
Mem_Copy(&temp, completionField, sizeof(field_t));
cmdname = completionField->buffer;
if(Com_ParseToken( &cmdname ))
if(Cmd_Argc() == 2)
{
if(!stricmp(com_token, "\\map" ) || !stricmp(com_token, "map" ))
// autocomplete second arg
if(!stricmp(Cmd_Argv(0), "map" ) || !stricmp(Cmd_Argv(0), "\\map" ))
{
strncpy( command, com_token, MAX_QPATH );
if(Com_ParseToken( &cmdname ))
{
if(Cmd_GetMapList( com_token, filename, MAX_QPATH ))
{
sprintf( completionField->buffer, "%s %s", command, filename );
completionField->cursor = strlen( completionField->buffer );
return;
}
if(Cmd_GetMapList(Cmd_Argv(1), filename, MAX_QPATH ))
{
sprintf( completionField->buffer, "%s %s", Cmd_Argv(0), filename );
completionField->cursor = strlen( completionField->buffer );
}
}
else if(!stricmp(com_token, "\\demomap" ) || !stricmp(com_token, "demomap" ))
else if(!stricmp(Cmd_Argv(0), "demomap" ) || !stricmp(Cmd_Argv(0), "\\demomap" ))
{
strncpy( command, com_token, MAX_QPATH );
if(Com_ParseToken( &cmdname ))
{
if(Cmd_GetDemoList( com_token, filename, MAX_QPATH ))
{
sprintf( completionField->buffer, "%s %s", command, filename );
completionField->cursor = strlen( completionField->buffer );
return;
}
if(Cmd_GetDemoList(Cmd_Argv(1), filename, MAX_QPATH ))
{
sprintf( completionField->buffer, "%s %s", Cmd_Argv(0), filename );
completionField->cursor = strlen( completionField->buffer );
}
}
return;
}
if( matchCount == 1 )

View File

@ -335,44 +335,32 @@ Cmd_GetMapList
Prints or complete map filename
=====================================
*/
bool Cmd_GetMapList (const char *s, char *completedname, int completednamebufferlength )
bool Cmd_GetMapList (const char *s, char *completedname, int length )
{
search_t *t;
char message[MAX_QPATH];
int i, k, max, p, o, min;
byte *len;
file_t *f;
byte buf[1024];
char message[MAX_QPATH];
char matchbuf[MAX_QPATH];
byte buf[MAX_SYSPATH]; // 1 kb
int i;
sprintf(message, "maps/%s*.bsp", s);
t = FS_Search(message, true);
if(!t) return false;
t = FS_Search(va("maps/%s*.bsp", s), true );
if( !t ) return false;
if (t->numfilenames > 1) Msg("^1 %i maps found :\n", t->numfilenames);
len = (byte *)Z_Malloc(t->numfilenames);
min = 256;
FS_FileBase(t->filenames[0], matchbuf );
strncpy( completedname, matchbuf, length );
if(t->numfilenames == 1) return true;
for(max = i = 0; i < t->numfilenames; i++)
{
k = (int)strlen(t->filenames[i]);
k -= 9;
if(max < k) max = k;
else if(min > k) min = k;
len[i] = k;
}
o = (int)strlen(s);
Msg("^3 %i maps found :\n", t->numfilenames);
for(i = 0; i < t->numfilenames; i++)
{
int lumpofs = 0, lumplen = 0;
char *entities = NULL;
const char *data = NULL;
char keyname[64];
char *entities = NULL;
char entfilename[MAX_QPATH];
int ver = -1, lumpofs = 0, lumplen = 0;
strncpy(message, "^1**ERROR**^7", sizeof(message));
p = 0;
strncpy(message, "No Title", sizeof(message));
f = FS_Open(t->filenames[i], "rb" );
if( f )
@ -381,8 +369,8 @@ bool Cmd_GetMapList (const char *s, char *completedname, int completednamebuffer
FS_Read(f, buf, 1024);
if(!memcmp(buf, "IBSP", 4))
{
p = LittleLong(((int *)buf)[1]);
if (p == BSPMOD_VERSION)
ver = LittleLong(((int *)buf)[1]);
if(ver == BSPMOD_VERSION)
{
dheader_t *header = (dheader_t *)buf;
lumpofs = LittleLong(header->lumps[LUMP_ENTITIES].fileofs);
@ -390,8 +378,9 @@ bool Cmd_GetMapList (const char *s, char *completedname, int completednamebuffer
}
}
strncpy(entfilename, t->filenames[i], sizeof(entfilename));
memcpy(entfilename + strlen(entfilename) - 4, ".ent", 5);
std.strncpy(entfilename, t->filenames[i], sizeof(entfilename));
FS_StripExtension( entfilename );
FS_DefaultExtension( entfilename, ".ent" );
entities = (char *)FS_LoadFile(entfilename, NULL);
if( !entities && lumplen >= 10 )
@ -407,60 +396,47 @@ bool Cmd_GetMapList (const char *s, char *completedname, int completednamebuffer
// means there is no title, so clear the message string now
message[0] = 0;
data = entities;
while( 1 )
while(Com_ParseToken(&data))
{
int l;
if (!Com_ParseToken(&data)) break;
if (com_token[0] == '{') continue;
if (com_token[0] == '}') break;
// skip leading whitespace
for (k = 0; com_token[k] && com_token[k] <= ' '; k++);
for (l = 0; l < (int)sizeof(keyname) - 1 && com_token[k+l] && com_token[k+l] > ' '; l++)
keyname[l] = com_token[k+l];
keyname[l] = 0;
if (!Com_ParseToken(&data)) break;
MsgDev(D_NOTE, "key: %s %s\n", keyname, com_token);
if (!strcmp(keyname, "message"))
if(!strcmp(com_token, "{" )) continue;
else if(!strcmp(com_token, "}" )) break;
else if(!strcmp(com_token, "message" ))
{
// get the message contents
Com_ParseToken(&data);
strncpy(message, com_token, sizeof(message));
break;
}
else if(!strcmp(com_token, "mapversion" ))
{
// get map version
Com_ParseToken(&data);
ver = atoi(com_token);
}
}
}
}
if( entities )Z_Free(entities);
if( f )FS_Close(f);
*(t->filenames[i] + len[i]+5) = 0;
FS_FileBase(t->filenames[i], matchbuf );
switch(p)
switch(ver)
{
case BSPMOD_VERSION: strncpy((char *)buf, "Q2", sizeof(buf)); break;
default: strncpy((char *)buf, "??", sizeof(buf)); break;
case 38: strncpy((char *)buf, "Q2", sizeof(buf)); break;
case 220: strncpy((char *)buf, "Xash", sizeof(buf)); break;
default: strncpy((char *)buf, "??", sizeof(buf)); break;
}
Msg("%16s (%s) %s\n", t->filenames[i] + 5, buf, message);
Msg("%16s (%s) ^3%s^7\n", matchbuf, buf, message);
}
Msg("\n");
for(p = o; p < min; p++)
{
k = *(t->filenames[0]+5+p);
if(k == 0) goto endcomplete;
for(i = 1; i < t->numfilenames; i++)
{
if(*(t->filenames[i]+5+p) != k)
goto endcomplete;
}
}
endcomplete:
if(p > o && completednamebufferlength > 0)
{
memset(completedname, 0, completednamebufferlength);
memcpy(completedname, (t->filenames[0]+5), min(p, completednamebufferlength - 1));
}
Z_Free( len );
Z_Free( t );
return p > o;
// cut shortestMatch to the amount common with s
for( i = 0; matchbuf[i]; i++ )
{
if(tolower(completedname[i]) != tolower(matchbuf[i]))
completedname[i] = 0;
}
return true;
}
/*
@ -470,61 +446,40 @@ Cmd_GetDemoList
Prints or complete demo filename
=====================================
*/
bool Cmd_GetDemoList (const char *s, char *completedname, int completednamebufferlength)
bool Cmd_GetDemoList (const char *s, char *completedname, int length )
{
search_t *t;
char message[MAX_QPATH];
byte *len;
int i, k, p, o, min, max;
char matchbuf[MAX_QPATH];
int i;
sprintf(message, "demos/%s*.dm2", s);
t = FS_Search(message, true);
t = FS_Search(va("demos/%s*.dm2", s ), true);
if(!t) return false;
len = (byte *)Z_Malloc(t->numfilenames);
min = 256;
for(max = i = 0; i < t->numfilenames; i++)
{
k = (int)strlen(t->filenames[i]);
k -= 9;
if(max < k) max = k;
else if(min > k) min = k;
len[i] = k;
}
o = (int)strlen(s);
if (t->numfilenames > 1)
{
Msg("^1 %i demos found :\n", t->numfilenames);
for(i = 0; i < t->numfilenames; i++)
{
//FS_StripExtension(t->filenames[i]);
Msg("%16s\n", t->filenames[i]);
}
Msg("\n");
}
else if (t->numfilenames == 1) //FS_StripExtension(t->filenames[0]);
FS_FileBase(t->filenames[0], matchbuf );
if(completedname && length) strncpy( completedname, matchbuf, length );
if(t->numfilenames == 1) return true;
for(p = o; p < min; p++)
{
k = *(t->filenames[0]+p);
if(k == 0) goto endcomplete;
for(i = 1; i < t->numfilenames; i++)
{
if(*(t->filenames[i]+p) != k)
goto endcomplete;
}
}
endcomplete:
if(p > o && completednamebufferlength > 0)
{
memset(completedname, 0, completednamebufferlength);
memcpy(completedname, (t->filenames[0]+6), min(p, completednamebufferlength - 1));
}
Msg("^3 %i demos found :\n", t->numfilenames);
for(i = 0; i < t->numfilenames; i++)
{
FS_FileBase(t->filenames[i], matchbuf );
Msg("%16s\n", matchbuf );
}
Msg("\n");
Z_Free(t);
Z_Free( len );
return p > o;
// cut shortestMatch to the amount common with s
if(completedname && length)
{
for( i = 0; matchbuf[i]; i++ )
{
if(tolower(completedname[i]) != tolower(matchbuf[i]))
completedname[i] = 0;
}
}
return true;
}
/*

View File

@ -510,7 +510,7 @@ extern byte net_message_buffer[MAX_MSGLEN];
#define PORT_MASTER 27900
#define PORT_CLIENT 27901
#define PORT_SERVER 27910
#define UPDATE_BACKUP 16 // copies of entity_state_t to keep buffered, must be power of two
#define UPDATE_BACKUP 64 // copies of entity_state_t to keep buffered, must be power of two
#define UPDATE_MASK (UPDATE_BACKUP - 1)
void Netchan_Init (void);

View File

@ -239,9 +239,9 @@ void SV_Map_f (void)
if(!strstr (map, "."))
{
sprintf(expanded, "maps/%s.bsp", map);
if (!FS_LoadFile (expanded, NULL))
if(!FS_FileExists( expanded ))
{
Msg ("Can't find %s\n", expanded);
Msg("Can't find %s\n", expanded);
return;
}
}

View File

@ -774,7 +774,6 @@ static bool FS_AddPack_Fullpath(const char *pakfile, bool *already_loaded, bool
if(already_loaded) *already_loaded = false;
if(!com_stricmp(ext, "pak")) pak = FS_LoadPackPAK (pakfile);
else if(!com_stricmp(ext, "pk2")) pak = FS_LoadPackPK3 (pakfile);
else if(!com_stricmp(ext, "pk3")) pak = FS_LoadPackPK3 (pakfile);
else Msg("\"%s\" does not have a pack extension\n", pakfile);

View File

@ -1731,7 +1731,7 @@ rgbdata_t *FS_LoadImage(const char *filename, char *buffer, int buffsize )
#if 0 // don't try to be very clever
if(!buffer || !buffsize) buffer = (char *)florr1_2_jpg, buffsize = sizeof(florr1_2_jpg);
#endif
strncpy( loadname, filename, sizeof(loadname)-1);
com_strncpy( loadname, filename, sizeof(loadname)-1);
FS_StripExtension( loadname ); //remove extension if needed
// developer warning
@ -1742,7 +1742,7 @@ rgbdata_t *FS_LoadImage(const char *filename, char *buffer, int buffsize )
{
if(anyformat || !stricmp(ext, format->ext ))
{
sprintf (path, format->formatstring, loadname, "", format->ext );
com_sprintf (path, format->formatstring, loadname, "", format->ext );
f = FS_LoadFile( path, &filesize );
if(f && filesize > 0)
{
@ -1761,7 +1761,7 @@ rgbdata_t *FS_LoadImage(const char *filename, char *buffer, int buffsize )
{
if(anyformat || !stricmp(ext, format->ext ))
{
sprintf (path, format->formatstring, loadname, suf[i], format->ext );
com_sprintf (path, format->formatstring, loadname, suf[i], format->ext );
f = FS_LoadFile( path, &filesize );
if(f && filesize > 0)
{
@ -1792,7 +1792,7 @@ rgbdata_t *FS_LoadImage(const char *filename, char *buffer, int buffsize )
if(image_cubemap) return ImagePack(); // now it's cubemap pack
// try to load image from const buffer (e.g. const byte blank_frame )
strncpy( texname, filename, sizeof(texname) - 1);
com_strncpy( texname, filename, sizeof(texname) - 1);
for (format = load_formats; format->formatstring; format++)
{
@ -1855,14 +1855,14 @@ bool SaveTGA( const char *filename, byte *data, int width, int height, bool alph
byte *buffer, *out;
const char *comment = "Generated by Xash ImageLib\0";
if(alpha) outsize = width * height * 4 + 18 + strlen(comment);
else outsize = width * height * 3 + 18 + strlen(comment);
if(alpha) outsize = width * height * 4 + 18 + com_strlen(comment);
else outsize = width * height * 3 + 18 + com_strlen(comment);
buffer = (byte *)Malloc( outsize );
memset (buffer, 0, 18);
// prepare header
buffer[0] = strlen(comment); // tga comment length
buffer[0] = com_strlen(comment); // tga comment length
buffer[2] = 2; // uncompressed type
buffer[12] = (width >> 0) & 0xFF;
buffer[13] = (width >> 8) & 0xFF;
@ -1870,8 +1870,8 @@ bool SaveTGA( const char *filename, byte *data, int width, int height, bool alph
buffer[15] = (height >> 8) & 0xFF;
buffer[16] = alpha ? 32 : 24;
buffer[17] = alpha ? 8 : 0; // 8 bits of alpha
strncpy(buffer + 18, comment, strlen(comment));
out = buffer + 18 + strlen(comment);
com_strncpy(buffer + 18, comment, com_strlen(comment));
out = buffer + 18 + com_strlen(comment);
// get image description
switch( imagetype )
@ -1956,8 +1956,8 @@ void FS_SaveImage(const char *filename, rgbdata_t *pix )
for(i = 0; i < numsides; i++)
{
if(numsides > 1) sprintf(savename, "%s%s.tga", filename, suf[i] );
else sprintf(savename, "%s.tga", filename );
if(numsides > 1) com_sprintf(savename, "%s%s.tga", filename, suf[i] );
else com_sprintf(savename, "%s.tga", filename );
SaveTGA( savename, data, pix->width, pix->height, has_alpha, pix->type );
data += pix->width * pix->height * PFDesc[pix->type].bpp;

View File

@ -23,7 +23,7 @@ void com_strnupr(const char *in, char *out, size_t size_out)
void com_strupr(const char *in, char *out)
{
com_strnupr(in, out, 4096 );
com_strnupr(in, out, 99999 );
}
void com_strnlwr(const char *in, char *out, size_t size_out)
@ -42,7 +42,7 @@ void com_strnlwr(const char *in, char *out, size_t size_out)
void com_strlwr(const char *in, char *out)
{
com_strnlwr(in, out, 4096 );
com_strnlwr(in, out, 99999 );
}
/*
@ -149,7 +149,7 @@ size_t com_strncat(char *dst, const char *src, size_t siz)
size_t com_strcat(char *dst, const char *src )
{
return com_strncat( dst, src, 4096 );
return com_strncat( dst, src, 99999 );
}
size_t com_strncpy(char *dst, const char *src, size_t siz)
@ -179,7 +179,7 @@ size_t com_strncpy(char *dst, const char *src, size_t siz)
size_t com_strcpy(char *dst, const char *src )
{
return com_strncpy( dst, src, 4096 );
return com_strncpy( dst, src, 99999 );
}
char *com_stralloc(const char *s, const char *filename, int fileline)
@ -347,7 +347,14 @@ char *com_strrchr(const char *s, char c)
int com_strnicmp(const char *s1, const char *s2, int n)
{
int c1, c2;
if( s1 == NULL )
{
if ( s2 == NULL ) return 0;
else return -1;
}
else if ( s2==NULL ) return 1;
while(1)
{
c1 = *s1++;
@ -368,24 +375,37 @@ int com_strnicmp(const char *s1, const char *s2, int n)
int com_stricmp(const char *s1, const char *s2)
{
return com_strnicmp(s1, s2, 4096 );
return com_strnicmp(s1, s2, 99999 );
}
int com_strncmp (const char *s1, const char *s2, int n)
{
while( 1 )
int c1, c2;
if( s1 == NULL )
{
if (!n--) return 0;
if (*s1 != *s2) return -1; // strings not equal
if (!*s1) return 0; // strings are equal
s1++, s2++;
if ( s2 == NULL ) return 0;
else return -1;
}
return -1;
else if ( s2==NULL ) return 1;
do {
c1 = *s1++;
c2 = *s2++;
// strings are equal until end point
if (!n--) return 0;
if (c1 != c2) return c1 < c2 ? -1 : 1;
} while (c1);
// strings are equal
return 0;
}
int com_strcmp (const char *s1, const char *s2)
{
return com_strncmp(s1, s2, 4096 );
return com_strncmp(s1, s2, 99999 );
}
/*
@ -496,7 +516,7 @@ int com_vsnprintf(char *buffer, size_t buffersize, const char *format, va_list a
int com_vsprintf(char *buffer, const char *format, va_list args)
{
return com_vsnprintf(buffer, 4096, format, args);
return com_vsnprintf(buffer, 99999, format, args);
}
int com_snprintf(char *buffer, size_t buffersize, const char *format, ...)
@ -517,7 +537,7 @@ int com_sprintf(char *buffer, const char *format, ...)
int result;
va_start (args, format);
result = com_vsnprintf (buffer, 4096, format, args);
result = com_vsnprintf (buffer, 99999, format, args);
va_end (args);
return result;