diff options
-rw-r--r-- | src/cgame/cg_draw.c | 5 | ||||
-rw-r--r-- | src/game/bg_misc.c | 49 | ||||
-rw-r--r-- | src/game/bg_public.h | 4 | ||||
-rw-r--r-- | src/game/g_client.c | 6 | ||||
-rw-r--r-- | src/game/g_main.c | 10 |
5 files changed, 68 insertions, 6 deletions
diff --git a/src/cgame/cg_draw.c b/src/cgame/cg_draw.c index 42eebdbe..bd497cc5 100644 --- a/src/cgame/cg_draw.c +++ b/src/cgame/cg_draw.c @@ -2075,8 +2075,11 @@ static void CG_Draw2D( void ) { if( cg_drawStatus.integer ) { - Menu_PaintAll(); + /*Menu_PaintAll();*/ /*CG_DrawTimedMenus();*/ + Menu_Paint( + Menus_FindByName( + BG_FindHudNameForClass( cg.predictedPlayerState.stats[ STAT_PCLASS ] ) ), qtrue ); } CG_DrawAmmoWarning(); diff --git a/src/game/bg_misc.c b/src/game/bg_misc.c index 9f0d2ff4..80da6c98 100644 --- a/src/game/bg_misc.c +++ b/src/game/bg_misc.c @@ -1243,6 +1243,7 @@ classAttributes_t bg_classList[ ] = "Builder", //char *humanName; "lucy", //char *modelname; "default", //char *skinname; + "alien_hud", //char *hudname; ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages { -15, -15, -20 }, //vec3_t mins; { 15, 15, 20 }, //vec3_t maxs; @@ -1269,6 +1270,7 @@ classAttributes_t bg_classList[ ] = "Advanced Builder", //char *humanname; "lucy", //char *modelname; "angel", //char *skinname; + "alien_hud", //char *hudname; ( 1 << S2 )|( 1 << S3 ), //int stages { -20, -20, -20 }, //vec3_t mins; { 20, 20, 20 }, //vec3_t maxs; @@ -1295,6 +1297,7 @@ classAttributes_t bg_classList[ ] = "Offensive", //char *humanname; "klesk", //char *modelname; "default", //char *skinname; + "alien_hud", //char *hudname; ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages { -15, -15, -15 }, //vec3_t mins; { 15, 15, 15 }, //vec3_t maxs; @@ -1321,6 +1324,7 @@ classAttributes_t bg_classList[ ] = "Offensive Level 1", //char *humanname; "anarki", //char *modelname; "default", //char *skinname; + "alien_hud", //char *hudname; ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages { -24, -24, -24 }, //vec3_t mins; { 24, 24, 24 }, //vec3_t maxs; @@ -1347,6 +1351,7 @@ classAttributes_t bg_classList[ ] = "Offensive Level 1 Upgrade", //char *humanname; "anarki", //char *modelname; "default", //char *skinname; + "alien_hud", //char *hudname; ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages { -24, -24, -24 }, //vec3_t mins; { 24, 24, 24 }, //vec3_t maxs; @@ -1373,6 +1378,7 @@ classAttributes_t bg_classList[ ] = "Offensive Level 2", //char *humanname; "bones", //char *modelname; "default", //char *skinname; + "alien_hud", //char *hudname; ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages { -24, -24, -24 }, //vec3_t mins; { 24, 24, 24 }, //vec3_t maxs; @@ -1399,6 +1405,7 @@ classAttributes_t bg_classList[ ] = "Offensive Level 2 Upgrade", //char *humanname; "bones", //char *modelname; "default", //char *skinname; + "alien_hud", //char *hudname; ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages { -24, -24, -24 }, //vec3_t mins; { 24, 24, 24 }, //vec3_t maxs; @@ -1425,6 +1432,7 @@ classAttributes_t bg_classList[ ] = "Offensive Level 3", //char *humanname; "orbb", //char *modelname; "default", //char *skinname; + "alien_hud", //char *hudname; ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages { -15, -15, -15 }, //vec3_t mins; { 15, 15, 15 }, //vec3_t maxs; @@ -1451,6 +1459,7 @@ classAttributes_t bg_classList[ ] = "Offensive Level 3 Upgrade", //char *humanname; "orbb", //char *modelname; "default", //char *skinname; + "alien_hud", //char *hudname; ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages { -15, -15, -15 }, //vec3_t mins; { 15, 15, 15 }, //vec3_t maxs; @@ -1477,6 +1486,7 @@ classAttributes_t bg_classList[ ] = "Offensive Level 4", //char *humanname; "xaero", //char *modelname; "default", //char *skinname; + "alien_hud", //char *hudname; ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages { -15, -15, -15 }, //vec3_t mins; { 15, 15, 15 }, //vec3_t maxs; @@ -1503,6 +1513,7 @@ classAttributes_t bg_classList[ ] = "Human", //char *humanname; "sarge", //char *modelname; "default", //char *skinname; + "human_hud", //char *hudname; ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages { -15, -15, -24 }, //vec3_t mins; { 15, 15, 32 }, //vec3_t maxs; @@ -1605,6 +1616,44 @@ char *BG_FindModelNameForClass( int pclass ) /* ============== +BG_FindSkinNameForClass +============== +*/ +char *BG_FindSkinNameForClass( int pclass ) +{ + int i; + + for( i = 0; i < bg_numPclasses; i++ ) + { + if( bg_classList[ i ].classNum == pclass ) + return bg_classList[ i ].skinName; + } + + //note: must return a valid modelName! + return bg_classList[ 0 ].skinName; +} + +/* +============== +BG_FindHudNameForClass +============== +*/ +char *BG_FindHudNameForClass( int pclass ) +{ + int i; + + for( i = 0; i < bg_numPclasses; i++ ) + { + if( bg_classList[ i ].classNum == pclass ) + return bg_classList[ i ].hudName; + } + + //note: must return a valid modelName! + return bg_classList[ 0 ].hudName; +} + +/* +============== BG_FindStagesForClass ============== */ diff --git a/src/game/bg_public.h b/src/game/bg_public.h index 84e82148..26fbd152 100644 --- a/src/game/bg_public.h +++ b/src/game/bg_public.h @@ -832,6 +832,8 @@ typedef struct char *modelName; char *skinName; + char *hudName; + int stages; vec3_t mins; @@ -1004,6 +1006,8 @@ int BG_FindClassNumForName( char *name ); char *BG_FindNameForClassNum( int pclass ); char *BG_FindHumanNameForClassNum( int pclass ); char *BG_FindModelNameForClass( int pclass ); +char *BG_FindSkinNameForClass( int pclass ); +char *BG_FindHudNameForClass( int pclass ); qboolean BG_FindStagesForClass( int pclass, stage_t stage ); void BG_FindBBoxForClass( int pclass, vec3_t mins, vec3_t maxs, vec3_t cmaxs, vec3_t dmins, vec3_t dmaxs ); void BG_FindViewheightForClass( int pclass, int *viewheight, int *cViewheight ); diff --git a/src/game/g_client.c b/src/game/g_client.c index 0d21a686..8f6678a5 100644 --- a/src/game/g_client.c +++ b/src/game/g_client.c @@ -1001,6 +1001,7 @@ void ClientUserinfoChanged( int clientNum ) { int teamTask, teamLeader, team, health; char *s; char model[MAX_QPATH]; + char buffer[ MAX_QPATH ]; char oldname[MAX_STRING_CHARS]; gclient_t *client; char c1[MAX_INFO_STRING]; @@ -1063,8 +1064,9 @@ void ClientUserinfoChanged( int clientNum ) { client->pers.maxHealth = 0; // set model - s = BG_FindModelNameForClass( client->pers.pclass ); - Q_strncpyz( model, s, sizeof( model ) ); + Com_sprintf( buffer, MAX_QPATH, "%s/%s", BG_FindModelNameForClass( client->pers.pclass ), + BG_FindSkinNameForClass( client->pers.pclass ) ); + Q_strncpyz( model, buffer, sizeof( model ) ); // wallwalk follow s = Info_ValueForKey( userinfo, "cg_wwFollow" ); diff --git a/src/game/g_main.c b/src/game/g_main.c index 0561b484..112f1854 100644 --- a/src/game/g_main.c +++ b/src/game/g_main.c @@ -312,13 +312,17 @@ G_RegisterPlayerModels */ void G_RegisterPlayerModels( void ) { - char *s, *class; + char buffer[ MAX_INFO_STRING ]; + char *s; int i; for( i = PCL_NONE + 1; i < PCL_NUM_CLASSES; i++ ) { - class = BG_FindModelNameForClass( i ); - s = va("n\\%s%d\\t\\%i\\model\\%s\\hmodel\\%s\\g_redteam\\%s\\g_blueteam\\%s\\c1\\%s\\hc\\%i\\w\\%i\\l\\%i\\tt\\%d\\tl\\%d", "precache", i, 0, class, class, 0, 0, "7", 100, 0, 0, 0, 0); + Com_sprintf( buffer, MAX_INFO_STRING, "%s/%s", + BG_FindModelNameForClass( i ), BG_FindSkinNameForClass( i ) ); + s = va( "n\\%s%d\\t\\%i\\model\\%s\\hmodel\\%s\\g_redteam\\%s\\" + "g_blueteam\\%s\\c1\\%s\\hc\\%i\\w\\%i\\l\\%i\\tt\\%d\\tl\\%d", + "precache", i, 0, buffer, buffer, 0, 0, "7", 100, 0, 0, 0, 0); trap_SetConfigstring( CS_PRECACHES + i, s ); } |