You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
1.8 KiB
113 lines
1.8 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
//=============================================================================// |
|
|
|
#include "cbase.h" |
|
#include "hud.h" |
|
#include "hudelement.h" |
|
#include "hud_macros.h" |
|
#include "iclientmode.h" |
|
#include "hl1_hud_numbers.h" |
|
|
|
|
|
// This is a bad way to implement HL1 style sprite fonts, but it will work for now |
|
|
|
CHL1HudNumbers::CHL1HudNumbers( vgui::Panel *parent, const char *name ) : BaseClass( parent, name ) |
|
{ |
|
vgui::Panel *pParent = g_pClientMode->GetViewport(); |
|
SetParent( pParent ); |
|
} |
|
|
|
|
|
void CHL1HudNumbers::VidInit( void ) |
|
{ |
|
for ( int i = 0; i < 10; i++ ) |
|
{ |
|
char szNumString[ 10 ]; |
|
|
|
sprintf( szNumString, "number_%d", i ); |
|
icon_digits[ i ] = gHUD.GetIcon( szNumString ); |
|
} |
|
} |
|
|
|
|
|
int CHL1HudNumbers::GetNumberFontHeight( void ) |
|
{ |
|
if ( icon_digits[ 0 ] ) |
|
{ |
|
return icon_digits[ 0 ]->Height(); |
|
} |
|
else |
|
{ |
|
return 0; |
|
} |
|
} |
|
|
|
|
|
int CHL1HudNumbers::GetNumberFontWidth( void ) |
|
{ |
|
if ( icon_digits[ 0 ] ) |
|
{ |
|
return icon_digits[ 0 ]->Width(); |
|
} |
|
else |
|
{ |
|
return 0; |
|
} |
|
} |
|
|
|
|
|
int CHL1HudNumbers::DrawHudNumber( int x, int y, int iNumber, Color &clrDraw ) |
|
{ |
|
int iWidth = GetNumberFontWidth(); |
|
int k; |
|
|
|
if ( iNumber > 0 ) |
|
{ |
|
// SPR_Draw 100's |
|
if ( iNumber >= 100 ) |
|
{ |
|
k = iNumber / 100; |
|
icon_digits[ k ]->DrawSelf( x, y, clrDraw ); |
|
x += iWidth; |
|
} |
|
else |
|
{ |
|
x += iWidth; |
|
} |
|
|
|
// SPR_Draw 10's |
|
if ( iNumber >= 10 ) |
|
{ |
|
k = ( iNumber % 100 ) / 10; |
|
icon_digits[ k ]->DrawSelf( x, y, clrDraw ); |
|
x += iWidth; |
|
} |
|
else |
|
{ |
|
x += iWidth; |
|
} |
|
|
|
// SPR_Draw ones |
|
k = iNumber % 10; |
|
icon_digits[ k ]->DrawSelf( x, y, clrDraw ); |
|
x += iWidth; |
|
} |
|
else |
|
{ |
|
// SPR_Draw 100's |
|
x += iWidth; |
|
|
|
// SPR_Draw 10's |
|
x += iWidth; |
|
|
|
// SPR_Draw ones |
|
k = 0; |
|
icon_digits[ k ]->DrawSelf( x, y, clrDraw ); |
|
x += iWidth; |
|
} |
|
|
|
return x; |
|
}
|
|
|