From 6bf20c78f5b69d40bcc4931df93d29198435ab67 Mon Sep 17 00:00:00 2001 From: zakk Date: Fri, 26 Aug 2005 17:39:27 +0000 Subject: newlines fixed git-svn-id: svn://svn.icculus.org/quake3/trunk@6 edf5b092-35ff-0310-97b2-ce42778d08ea --- code/q3_ui/ui_mods.c | 566 +++++++++++++++++++++++++-------------------------- 1 file changed, 283 insertions(+), 283 deletions(-) (limited to 'code/q3_ui/ui_mods.c') diff --git a/code/q3_ui/ui_mods.c b/code/q3_ui/ui_mods.c index 2c6b82d..a7d32fb 100755 --- a/code/q3_ui/ui_mods.c +++ b/code/q3_ui/ui_mods.c @@ -1,283 +1,283 @@ -/* -=========================================================================== -Copyright (C) 1999-2005 Id Software, Inc. - -This file is part of Quake III Arena source code. - -Quake III Arena source code is free software; you can redistribute it -and/or modify it under the terms of the GNU General Public License as -published by the Free Software Foundation; either version 2 of the License, -or (at your option) any later version. - -Quake III Arena source code is distributed in the hope that it will be -useful, but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with Foobar; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -=========================================================================== -*/ -// -#include "ui_local.h" - -#define ART_BACK0 "menu/art/back_0" -#define ART_BACK1 "menu/art/back_1" -#define ART_FIGHT0 "menu/art/load_0" -#define ART_FIGHT1 "menu/art/load_1" -#define ART_FRAMEL "menu/art/frame2_l" -#define ART_FRAMER "menu/art/frame1_r" - -#define MAX_MODS 64 -#define NAMEBUFSIZE ( MAX_MODS * 48 ) -#define GAMEBUFSIZE ( MAX_MODS * 16 ) - -#define ID_BACK 10 -#define ID_GO 11 -#define ID_LIST 12 - - -typedef struct { - menuframework_s menu; - - menutext_s banner; - menubitmap_s framel; - menubitmap_s framer; - - menulist_s list; - - menubitmap_s back; - menubitmap_s go; - - char description[NAMEBUFSIZE]; - char fs_game[GAMEBUFSIZE]; - - char *descriptionPtr; - char *fs_gamePtr; - - char *descriptionList[MAX_MODS]; - char *fs_gameList[MAX_MODS]; -} mods_t; - -static mods_t s_mods; - - -/* -=============== -UI_Mods_MenuEvent -=============== -*/ -static void UI_Mods_MenuEvent( void *ptr, int event ) { - if( event != QM_ACTIVATED ) { - return; - } - - switch ( ((menucommon_s*)ptr)->id ) { - case ID_GO: - trap_Cvar_Set( "fs_game", s_mods.fs_gameList[s_mods.list.curvalue] ); - trap_Cmd_ExecuteText( EXEC_APPEND, "vid_restart;" ); - UI_PopMenu(); - break; - - case ID_BACK: - UI_PopMenu(); - break; - } -} - - -/* -=============== -UI_Mods_ParseInfos -=============== -*/ -static void UI_Mods_ParseInfos( char *modDir, char *modDesc ) { - s_mods.fs_gameList[s_mods.list.numitems] = s_mods.fs_gamePtr; - Q_strncpyz( s_mods.fs_gamePtr, modDir, 16 ); - - s_mods.descriptionList[s_mods.list.numitems] = s_mods.descriptionPtr; - Q_strncpyz( s_mods.descriptionPtr, modDesc, 48 ); - - s_mods.list.itemnames[s_mods.list.numitems] = s_mods.descriptionPtr; - s_mods.descriptionPtr += strlen( s_mods.descriptionPtr ) + 1; - s_mods.fs_gamePtr += strlen( s_mods.fs_gamePtr ) + 1; - s_mods.list.numitems++; -} - - -#if 0 // bk001204 - unused -/* -=============== -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 ); -} -#endif - - -/* -=============== -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_MenuInit -=============== -*/ -static void UI_Mods_MenuInit( void ) { - UI_ModsMenu_Cache(); - - memset( &s_mods, 0 ,sizeof(mods_t) ); - s_mods.menu.wrapAround = qtrue; - s_mods.menu.fullscreen = qtrue; - - s_mods.banner.generic.type = MTYPE_BTEXT; - s_mods.banner.generic.x = 320; - s_mods.banner.generic.y = 16; - s_mods.banner.string = "MODS"; - s_mods.banner.color = color_white; - s_mods.banner.style = UI_CENTER; - - s_mods.framel.generic.type = MTYPE_BITMAP; - s_mods.framel.generic.name = ART_FRAMEL; - s_mods.framel.generic.flags = QMF_INACTIVE; - s_mods.framel.generic.x = 0; - s_mods.framel.generic.y = 78; - s_mods.framel.width = 256; - s_mods.framel.height = 329; - - s_mods.framer.generic.type = MTYPE_BITMAP; - s_mods.framer.generic.name = ART_FRAMER; - s_mods.framer.generic.flags = QMF_INACTIVE; - s_mods.framer.generic.x = 376; - s_mods.framer.generic.y = 76; - s_mods.framer.width = 256; - s_mods.framer.height = 334; - - s_mods.back.generic.type = MTYPE_BITMAP; - s_mods.back.generic.name = ART_BACK0; - s_mods.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; - s_mods.back.generic.id = ID_BACK; - s_mods.back.generic.callback = UI_Mods_MenuEvent; - s_mods.back.generic.x = 0; - s_mods.back.generic.y = 480-64; - s_mods.back.width = 128; - s_mods.back.height = 64; - s_mods.back.focuspic = ART_BACK1; - - s_mods.go.generic.type = MTYPE_BITMAP; - s_mods.go.generic.name = ART_FIGHT0; - s_mods.go.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; - s_mods.go.generic.id = ID_GO; - s_mods.go.generic.callback = UI_Mods_MenuEvent; - s_mods.go.generic.x = 640; - s_mods.go.generic.y = 480-64; - s_mods.go.width = 128; - s_mods.go.height = 64; - s_mods.go.focuspic = ART_FIGHT1; - - // scan for mods - s_mods.list.generic.type = MTYPE_SCROLLLIST; - s_mods.list.generic.flags = QMF_PULSEIFFOCUS|QMF_CENTER_JUSTIFY; - s_mods.list.generic.callback = UI_Mods_MenuEvent; - s_mods.list.generic.id = ID_LIST; - s_mods.list.generic.x = 320; - s_mods.list.generic.y = 130; - s_mods.list.width = 48; - s_mods.list.height = 14; - - UI_Mods_LoadMods(); - - Menu_AddItem( &s_mods.menu, &s_mods.banner ); - Menu_AddItem( &s_mods.menu, &s_mods.framel ); - Menu_AddItem( &s_mods.menu, &s_mods.framer ); - Menu_AddItem( &s_mods.menu, &s_mods.list ); - Menu_AddItem( &s_mods.menu, &s_mods.back ); - Menu_AddItem( &s_mods.menu, &s_mods.go ); -} - -/* -================= -UI_Mods_Cache -================= -*/ -void UI_ModsMenu_Cache( void ) { - trap_R_RegisterShaderNoMip( ART_BACK0 ); - trap_R_RegisterShaderNoMip( ART_BACK1 ); - trap_R_RegisterShaderNoMip( ART_FIGHT0 ); - trap_R_RegisterShaderNoMip( ART_FIGHT1 ); - trap_R_RegisterShaderNoMip( ART_FRAMEL ); - trap_R_RegisterShaderNoMip( ART_FRAMER ); -} - - -/* -=============== -UI_ModsMenu -=============== -*/ -void UI_ModsMenu( void ) { - UI_Mods_MenuInit(); - UI_PushMenu( &s_mods.menu ); -} +/* +=========================================================================== +Copyright (C) 1999-2005 Id Software, Inc. + +This file is part of Quake III Arena source code. + +Quake III Arena source code is free software; you can redistribute it +and/or modify it under the terms of the GNU General Public License as +published by the Free Software Foundation; either version 2 of the License, +or (at your option) any later version. + +Quake III Arena source code is distributed in the hope that it will be +useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Foobar; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +=========================================================================== +*/ +// +#include "ui_local.h" + +#define ART_BACK0 "menu/art/back_0" +#define ART_BACK1 "menu/art/back_1" +#define ART_FIGHT0 "menu/art/load_0" +#define ART_FIGHT1 "menu/art/load_1" +#define ART_FRAMEL "menu/art/frame2_l" +#define ART_FRAMER "menu/art/frame1_r" + +#define MAX_MODS 64 +#define NAMEBUFSIZE ( MAX_MODS * 48 ) +#define GAMEBUFSIZE ( MAX_MODS * 16 ) + +#define ID_BACK 10 +#define ID_GO 11 +#define ID_LIST 12 + + +typedef struct { + menuframework_s menu; + + menutext_s banner; + menubitmap_s framel; + menubitmap_s framer; + + menulist_s list; + + menubitmap_s back; + menubitmap_s go; + + char description[NAMEBUFSIZE]; + char fs_game[GAMEBUFSIZE]; + + char *descriptionPtr; + char *fs_gamePtr; + + char *descriptionList[MAX_MODS]; + char *fs_gameList[MAX_MODS]; +} mods_t; + +static mods_t s_mods; + + +/* +=============== +UI_Mods_MenuEvent +=============== +*/ +static void UI_Mods_MenuEvent( void *ptr, int event ) { + if( event != QM_ACTIVATED ) { + return; + } + + switch ( ((menucommon_s*)ptr)->id ) { + case ID_GO: + trap_Cvar_Set( "fs_game", s_mods.fs_gameList[s_mods.list.curvalue] ); + trap_Cmd_ExecuteText( EXEC_APPEND, "vid_restart;" ); + UI_PopMenu(); + break; + + case ID_BACK: + UI_PopMenu(); + break; + } +} + + +/* +=============== +UI_Mods_ParseInfos +=============== +*/ +static void UI_Mods_ParseInfos( char *modDir, char *modDesc ) { + s_mods.fs_gameList[s_mods.list.numitems] = s_mods.fs_gamePtr; + Q_strncpyz( s_mods.fs_gamePtr, modDir, 16 ); + + s_mods.descriptionList[s_mods.list.numitems] = s_mods.descriptionPtr; + Q_strncpyz( s_mods.descriptionPtr, modDesc, 48 ); + + s_mods.list.itemnames[s_mods.list.numitems] = s_mods.descriptionPtr; + s_mods.descriptionPtr += strlen( s_mods.descriptionPtr ) + 1; + s_mods.fs_gamePtr += strlen( s_mods.fs_gamePtr ) + 1; + s_mods.list.numitems++; +} + + +#if 0 // bk001204 - unused +/* +=============== +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 ); +} +#endif + + +/* +=============== +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_MenuInit +=============== +*/ +static void UI_Mods_MenuInit( void ) { + UI_ModsMenu_Cache(); + + memset( &s_mods, 0 ,sizeof(mods_t) ); + s_mods.menu.wrapAround = qtrue; + s_mods.menu.fullscreen = qtrue; + + s_mods.banner.generic.type = MTYPE_BTEXT; + s_mods.banner.generic.x = 320; + s_mods.banner.generic.y = 16; + s_mods.banner.string = "MODS"; + s_mods.banner.color = color_white; + s_mods.banner.style = UI_CENTER; + + s_mods.framel.generic.type = MTYPE_BITMAP; + s_mods.framel.generic.name = ART_FRAMEL; + s_mods.framel.generic.flags = QMF_INACTIVE; + s_mods.framel.generic.x = 0; + s_mods.framel.generic.y = 78; + s_mods.framel.width = 256; + s_mods.framel.height = 329; + + s_mods.framer.generic.type = MTYPE_BITMAP; + s_mods.framer.generic.name = ART_FRAMER; + s_mods.framer.generic.flags = QMF_INACTIVE; + s_mods.framer.generic.x = 376; + s_mods.framer.generic.y = 76; + s_mods.framer.width = 256; + s_mods.framer.height = 334; + + s_mods.back.generic.type = MTYPE_BITMAP; + s_mods.back.generic.name = ART_BACK0; + s_mods.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; + s_mods.back.generic.id = ID_BACK; + s_mods.back.generic.callback = UI_Mods_MenuEvent; + s_mods.back.generic.x = 0; + s_mods.back.generic.y = 480-64; + s_mods.back.width = 128; + s_mods.back.height = 64; + s_mods.back.focuspic = ART_BACK1; + + s_mods.go.generic.type = MTYPE_BITMAP; + s_mods.go.generic.name = ART_FIGHT0; + s_mods.go.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; + s_mods.go.generic.id = ID_GO; + s_mods.go.generic.callback = UI_Mods_MenuEvent; + s_mods.go.generic.x = 640; + s_mods.go.generic.y = 480-64; + s_mods.go.width = 128; + s_mods.go.height = 64; + s_mods.go.focuspic = ART_FIGHT1; + + // scan for mods + s_mods.list.generic.type = MTYPE_SCROLLLIST; + s_mods.list.generic.flags = QMF_PULSEIFFOCUS|QMF_CENTER_JUSTIFY; + s_mods.list.generic.callback = UI_Mods_MenuEvent; + s_mods.list.generic.id = ID_LIST; + s_mods.list.generic.x = 320; + s_mods.list.generic.y = 130; + s_mods.list.width = 48; + s_mods.list.height = 14; + + UI_Mods_LoadMods(); + + Menu_AddItem( &s_mods.menu, &s_mods.banner ); + Menu_AddItem( &s_mods.menu, &s_mods.framel ); + Menu_AddItem( &s_mods.menu, &s_mods.framer ); + Menu_AddItem( &s_mods.menu, &s_mods.list ); + Menu_AddItem( &s_mods.menu, &s_mods.back ); + Menu_AddItem( &s_mods.menu, &s_mods.go ); +} + +/* +================= +UI_Mods_Cache +================= +*/ +void UI_ModsMenu_Cache( void ) { + trap_R_RegisterShaderNoMip( ART_BACK0 ); + trap_R_RegisterShaderNoMip( ART_BACK1 ); + trap_R_RegisterShaderNoMip( ART_FIGHT0 ); + trap_R_RegisterShaderNoMip( ART_FIGHT1 ); + trap_R_RegisterShaderNoMip( ART_FRAMEL ); + trap_R_RegisterShaderNoMip( ART_FRAMER ); +} + + +/* +=============== +UI_ModsMenu +=============== +*/ +void UI_ModsMenu( void ) { + UI_Mods_MenuInit(); + UI_PushMenu( &s_mods.menu ); +} -- cgit v1.2.3