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.
114 lines
1.8 KiB
114 lines
1.8 KiB
3 years ago
|
//========= 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;
|
||
|
}
|