Index: src/cgame/cg_servercmds.c =================================================================== --- src/cgame/cg_servercmds.c (revision 2165) +++ src/cgame/cg_servercmds.c (working copy) @@ -796,10 +796,6 @@ void CG_Menu( int menu, int arg ) break; case MN_A_INFEST: - trap_Cvar_Set( "ui_currentClass", - va( "%d %d", cg.snap->ps.stats[ STAT_CLASS ], - cg.snap->ps.persistant[ PERS_CREDIT ] ) ); - cmd = "menu tremulous_alienupgrade\n"; type = DT_INTERACTIVE; break; Index: src/cgame/cg_main.c =================================================================== --- src/cgame/cg_main.c (revision 2165) +++ src/cgame/cg_main.c (working copy) @@ -417,6 +417,11 @@ static void CG_SetUIVars( void ) trap_Cvar_Set( "ui_carriage", carriageCvar ); trap_Cvar_Set( "ui_stages", va( "%d %d", cgs.alienStage, cgs.humanStage ) ); + + trap_Cvar_Set( "ui_currentClass", + va( "%d %d", cg.snap->ps.stats[ STAT_CLASS ], + cg.snap->ps.persistant[ PERS_CREDIT ] ) ); + } /* Index: src/ui/ui_main.c =================================================================== --- src/ui/ui_main.c (revision 2165) +++ src/ui/ui_main.c (working copy) @@ -1622,6 +1622,7 @@ static void UI_DrawInfoPane( menuItem_t *item, rec int class, credits; char ui_currentClass[ MAX_STRING_CHARS ]; + char valueColor = COLOR_WHITE; trap_Cvar_VariableStringBuffer( "ui_currentClass", ui_currentClass, MAX_STRING_CHARS ); @@ -1665,10 +1666,12 @@ static void UI_DrawInfoPane( menuItem_t *item, rec } else { - s = va( "%s\n\n%s\n\nCredits: %d", + if( value > credits ) + valueColor = COLOR_RED; + s = va( "%s\n\n%s\n\nCredits: ^%c%d", BG_Weapon( item->v.weapon )->humanName, BG_Weapon( item->v.weapon )->info, - value ); + valueColor, value ); } break; @@ -1684,10 +1687,12 @@ static void UI_DrawInfoPane( menuItem_t *item, rec } else { - s = va( "%s\n\n%s\n\nCredits: %d", + if( value > credits ) + valueColor = COLOR_RED; + s = va( "%s\n\n%s\n\nCredits: ^%c%d", BG_Upgrade( item->v.upgrade )->humanName, BG_Upgrade( item->v.upgrade )->info, - value ); + valueColor, value ); } break; @@ -2386,10 +2391,16 @@ UI_LoadHumanArmouryBuys */ static void UI_LoadHumanArmouryBuys( void ) { - int i, j = 0; + int i, j = 0; stage_t stage = UI_GetCurrentHumanStage( ); - int slots = 0; + int slots = 0; + int class, credits; + char ui_currentClass[ MAX_STRING_CHARS ]; + trap_Cvar_VariableStringBuffer( "ui_currentClass", ui_currentClass, MAX_STRING_CHARS ); + + sscanf( ui_currentClass, "%d %d", &class, &credits ); + UI_ParseCarriageList( ); for( i = WP_NONE + 1; i < WP_NUM_WEAPONS; i++ ) @@ -2415,8 +2426,11 @@ static void UI_LoadHumanArmouryBuys( void ) !( BG_Weapon( i )->slots & slots ) && !( uiInfo.weapons & ( 1 << i ) ) ) { + char color = COLOR_WHITE; + if( BG_Weapon( i )->price > credits ) + color = COLOR_RED; uiInfo.humanArmouryBuyList[ j ].text = - String_Alloc( BG_Weapon( i )->humanName ); + String_Alloc( va( "^%c%s", color, BG_Weapon( i )->humanName ) ); uiInfo.humanArmouryBuyList[ j ].cmd = String_Alloc( va( "cmd buy %s\n", BG_Weapon( i )->name ) ); uiInfo.humanArmouryBuyList[ j ].type = INFOTYPE_WEAPON; @@ -2437,8 +2451,11 @@ static void UI_LoadHumanArmouryBuys( void ) !( BG_Upgrade( i )->slots & slots ) && !( uiInfo.upgrades & ( 1 << i ) ) ) { + char color = COLOR_WHITE; + if( BG_Upgrade( i )->price > credits ) + color = COLOR_RED; uiInfo.humanArmouryBuyList[ j ].text = - String_Alloc( BG_Upgrade( i )->humanName ); + String_Alloc( va( "^%c%s", color, BG_Upgrade( i )->humanName ) ); uiInfo.humanArmouryBuyList[ j ].cmd = String_Alloc( va( "cmd buy %s\n", BG_Upgrade( i )->name ) ); uiInfo.humanArmouryBuyList[ j ].type = INFOTYPE_UPGRADE;