mirror of
https://github.com/FWGS/xash3d-fwgs
synced 2024-11-29 21:50:08 +01:00
engine: generalize maps command and map command autocompletion
This commit is contained in:
parent
0260a6c234
commit
37c5dfa49f
@ -494,6 +494,7 @@ int Cmd_AddRefCommand( const char *cmd_name, xcommand_t function, const char *de
|
|||||||
void Cmd_RemoveCommand( const char *cmd_name );
|
void Cmd_RemoveCommand( const char *cmd_name );
|
||||||
qboolean Cmd_Exists( const char *cmd_name );
|
qboolean Cmd_Exists( const char *cmd_name );
|
||||||
void Cmd_LookupCmds( void *buffer, void *ptr, setpair_t callback );
|
void Cmd_LookupCmds( void *buffer, void *ptr, setpair_t callback );
|
||||||
|
int Cmd_ListMaps( search_t *t , char *lastmapname, size_t len );
|
||||||
qboolean Cmd_GetMapList( const char *s, char *completedname, int length );
|
qboolean Cmd_GetMapList( const char *s, char *completedname, int length );
|
||||||
qboolean Cmd_GetDemoList( const char *s, char *completedname, int length );
|
qboolean Cmd_GetDemoList( const char *s, char *completedname, int length );
|
||||||
qboolean Cmd_GetMovieList( const char *s, char *completedname, int length );
|
qboolean Cmd_GetMovieList( const char *s, char *completedname, int length );
|
||||||
|
@ -51,26 +51,16 @@ static con_autocomplete_t con;
|
|||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
=====================================
|
=====================================
|
||||||
Cmd_GetMapList
|
Cmd_ListMaps
|
||||||
|
|
||||||
Prints or complete map filename
|
|
||||||
=====================================
|
=====================================
|
||||||
*/
|
*/
|
||||||
qboolean Cmd_GetMapList( const char *s, char *completedname, int length )
|
int Cmd_ListMaps( search_t *t, char *lastmapname, size_t len )
|
||||||
{
|
{
|
||||||
search_t *t;
|
|
||||||
file_t *f;
|
|
||||||
string message, compiler, generator, matchbuf;
|
|
||||||
byte buf[MAX_SYSPATH]; // 1 kb
|
byte buf[MAX_SYSPATH]; // 1 kb
|
||||||
|
file_t *f;
|
||||||
int i, nummaps;
|
int i, nummaps;
|
||||||
|
string mapname, message, compiler, generator;
|
||||||
t = FS_Search( va( "maps/%s*.bsp", s ), true, con_gamemaps->value );
|
|
||||||
if( !t ) return false;
|
|
||||||
|
|
||||||
COM_FileBase( t->filenames[0], matchbuf );
|
|
||||||
if( completedname && length )
|
|
||||||
Q_strncpy( completedname, matchbuf, length );
|
|
||||||
if( t->numfilenames == 1 ) return true;
|
|
||||||
|
|
||||||
for( i = 0, nummaps = 0; i < t->numfilenames; i++ )
|
for( i = 0, nummaps = 0; i < t->numfilenames; i++ )
|
||||||
{
|
{
|
||||||
@ -78,9 +68,7 @@ qboolean Cmd_GetMapList( const char *s, char *completedname, int length )
|
|||||||
const char *ext = COM_FileExtension( t->filenames[i] );
|
const char *ext = COM_FileExtension( t->filenames[i] );
|
||||||
int ver = -1, lumpofs = 0, lumplen = 0;
|
int ver = -1, lumpofs = 0, lumplen = 0;
|
||||||
char *ents = NULL, *pfile;
|
char *ents = NULL, *pfile;
|
||||||
qboolean validmap = false;
|
|
||||||
int version = 0;
|
int version = 0;
|
||||||
char *szBuf;
|
|
||||||
string version_description;
|
string version_description;
|
||||||
|
|
||||||
if( Q_stricmp( ext, "bsp" )) continue;
|
if( Q_stricmp( ext, "bsp" )) continue;
|
||||||
@ -157,7 +145,7 @@ qboolean Cmd_GetMapList( const char *s, char *completedname, int length )
|
|||||||
}
|
}
|
||||||
|
|
||||||
if( f ) FS_Close(f);
|
if( f ) FS_Close(f);
|
||||||
COM_FileBase( t->filenames[i], matchbuf );
|
COM_FileBase( t->filenames[i], mapname );
|
||||||
|
|
||||||
switch( ver )
|
switch( ver )
|
||||||
{
|
{
|
||||||
@ -179,11 +167,41 @@ qboolean Cmd_GetMapList( const char *s, char *completedname, int length )
|
|||||||
default: Q_strncpy( version_description, "??", sizeof( version_description )); break;
|
default: Q_strncpy( version_description, "??", sizeof( version_description )); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
Con_Printf( "%16s (%s) ^3%s^7 ^2%s %s^7\n", matchbuf, version_description, message, compiler, generator );
|
Con_Printf( "%16s (%s) ^3%s^7 ^2%s %s^7\n", mapname, version_description, message, compiler, generator );
|
||||||
nummaps++;
|
nummaps++;
|
||||||
}
|
}
|
||||||
|
|
||||||
Con_Printf( "\n^3 %i maps found.\n", nummaps );
|
if( lastmapname && len )
|
||||||
|
Q_strncpy( lastmapname, mapname, len );
|
||||||
|
|
||||||
|
return nummaps;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
=====================================
|
||||||
|
Cmd_GetMapList
|
||||||
|
|
||||||
|
Prints or complete map filename
|
||||||
|
=====================================
|
||||||
|
*/
|
||||||
|
qboolean Cmd_GetMapList( const char *s, char *completedname, int length )
|
||||||
|
{
|
||||||
|
search_t *t;
|
||||||
|
string matchbuf;
|
||||||
|
int i, nummaps;
|
||||||
|
|
||||||
|
t = FS_Search( va( "maps/%s*.bsp", s ), true, con_gamemaps->value );
|
||||||
|
if( !t ) return false;
|
||||||
|
|
||||||
|
COM_FileBase( t->filenames[0], matchbuf );
|
||||||
|
if( completedname && length )
|
||||||
|
Q_strncpy( completedname, matchbuf, length );
|
||||||
|
if( t->numfilenames == 1 ) return true;
|
||||||
|
|
||||||
|
nummaps = Cmd_ListMaps( t, matchbuf, sizeof( matchbuf ));
|
||||||
|
|
||||||
|
Con_Printf( "\n^3 %d maps found.\n", nummaps );
|
||||||
|
|
||||||
Mem_Free( t );
|
Mem_Free( t );
|
||||||
|
|
||||||
// cut shortestMatch to the amount common with s
|
// cut shortestMatch to the amount common with s
|
||||||
|
@ -244,7 +244,7 @@ void SV_Maps_f( void )
|
|||||||
{
|
{
|
||||||
const char *separator = "-------------------";
|
const char *separator = "-------------------";
|
||||||
const char *argStr = Cmd_Argv( 1 ); // Substr
|
const char *argStr = Cmd_Argv( 1 ); // Substr
|
||||||
int listIndex;
|
int nummaps;
|
||||||
search_t *mapList;
|
search_t *mapList;
|
||||||
|
|
||||||
if( Cmd_Argc() != 2 )
|
if( Cmd_Argc() != 2 )
|
||||||
@ -261,12 +261,11 @@ void SV_Maps_f( void )
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for( listIndex = 0; listIndex != mapList->numfilenames; ++listIndex )
|
nummaps = Cmd_ListMaps( mapList, NULL, 0 );
|
||||||
{
|
|
||||||
Msg( "%s\n", mapList->filenames[listIndex] + 5 ); // Do not show "maps/"
|
|
||||||
}
|
|
||||||
|
|
||||||
Msg( "%s\nDirectory: \"%s/maps\" - Maps listed: %d\n", separator, GI->basedir, mapList->numfilenames );
|
Mem_Free( mapList );
|
||||||
|
|
||||||
|
Msg( "%s\nDirectory: \"%s/maps\" - Maps listed: %d\n", separator, GI->basedir, nummaps );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user