/* =============== UI_Mods_LoadMods =============== */ static void UI_Mods_LoadMods( void ) { int numdirs; char dirlist[2048]; char *dirptr; char *descptr; int i; int dirlen; s_mods.list.itemnames = (const char **)s_mods.descriptionList; s_mods.descriptionPtr = s_mods.description; s_mods.fs_gamePtr = s_mods.fs_game; // always start off with baseq3 s_mods.list.numitems = 1; s_mods.list.itemnames[0] = s_mods.descriptionList[0] = "Quake III Arena"; s_mods.fs_gameList[0] = ""; numdirs = trap_FS_GetFileList( "$modlist", "", dirlist, sizeof(dirlist) ); dirptr = dirlist; for( i = 0; i < numdirs; i++ ) { dirlen = strlen( dirptr ) + 1; descptr = dirptr + dirlen; UI_Mods_ParseInfos( dirptr, descptr); dirptr += dirlen + strlen(descptr) + 1; } trap_Print( va( "%i mods parsed\n", s_mods.list.numitems ) ); if (s_mods.list.numitems > MAX_MODS) { s_mods.list.numitems = MAX_MODS; } }
/* =============== UI_Mods_LoadModsFromFile =============== */ static void UI_Mods_LoadModsFromFile( char *filename ) { int len; fileHandle_t f; char buf[1024]; len = trap_FS_FOpenFile( filename, &f, FS_READ ); if ( !f ) { trap_Print( va( S_COLOR_RED "file not found: %s\n", filename ) ); return; } if ( len >= sizeof(buf) ) { trap_Print( va( S_COLOR_RED "file too large: %s is %i, max allowed is %i", filename, len, sizeof(buf) ) ); trap_FS_FCloseFile( f ); return; } trap_FS_Read( buf, len, f ); buf[len] = 0; trap_FS_FCloseFile( f ); len = strlen( filename ); if( !Q_stricmp(filename + len - 4,".mod") ) { filename[len-4] = '\0'; } UI_Mods_ParseInfos( filename, buf ); }
/* =============== UI_Mods_LoadMods =============== */ static void UI_Mods_LoadMods( void ) { int numdirs; char dirlist[2048]; char *dirptr; char *descptr; int i; int dirlen; s_mods.list.numitems = 0; s_mods.list.itemnames = (const char **)s_mods.descriptionList; s_mods.descriptionPtr = s_mods.description; s_mods.fs_gamePtr = s_mods.fs_game; numdirs = trap_FS_GetFileList( "$modlist", "", dirlist, sizeof(dirlist) ); dirptr = dirlist; for( i = 0; i < numdirs; i++ ) { dirlen = strlen( dirptr ) + 1; descptr = dirptr + dirlen; UI_Mods_ParseInfos( dirptr, descptr); dirptr += dirlen + strlen(descptr) + 1; } Com_DPrintf("%i mods parsed\n", s_mods.list.numitems); if (s_mods.list.numitems > MAX_MODS) { s_mods.list.numitems = MAX_MODS; } }
/* =============== Mods_LoadMods =============== */ static void Mods_LoadMods( void ) { int numdirs; char dirlist[2048]; char *dirptr; char *descptr; int i; int dirlen; s_mods.list.itemnames = (const char **)s_mods.descriptionList; s_mods.descriptionPtr = s_mods.description; s_mods.fs_gamePtr = s_mods.fs_game; // always start off with baseEF s_mods.list.numitems = 1; s_mods.list.itemnames[0] = s_mods.descriptionList[0] = (char*)menu_normal_text[MNT_ELITEFORCE]; s_mods.fs_gameList[0] = ""; numdirs = ui.FS_GetFileList( "$modlist", "", dirlist, sizeof(dirlist) ); dirptr = dirlist; for( i = 0; i < numdirs; i++ ) { dirlen = strlen( dirptr ) + 1; descptr = dirptr + dirlen; UI_Mods_ParseInfos( dirptr, descptr); dirptr += dirlen + strlen(descptr) + 1; } Com_Printf(va("%i mods parsed\n", s_mods.list.numitems)); if (s_mods.list.numitems > MAX_MODS) { s_mods.list.numitems = MAX_MODS; } }
/* =============== UI_Mods_LoadMods =============== */ static void UI_Mods_LoadMods( void ) { s_mods.list.itemnames = (const char **)s_mods.descriptionList; s_mods.descriptionPtr = s_mods.description; s_mods.fs_gamePtr = s_mods.fs_game; // always start off with baseq3 s_mods.list.numitems = 1; s_mods.list.itemnames[0] = s_mods.descriptionList[0] = "Quake III Arena"; s_mods.fs_gameList[0] = ""; if( og::ModList * mods = og::FS->GetModList() ) { for( int i = 0; i < mods->Num(); i++ ) { UI_Mods_ParseInfos( mods->GetDirectory( i ), mods->GetDescription( i ) ); } og::FS->FreeModList( mods ); } trap->Print( va( "%i mods parsed\n", s_mods.list.numitems ) ); if (s_mods.list.numitems > MAX_MODS) { s_mods.list.numitems = MAX_MODS; } }