summaryrefslogtreecommitdiff
path: root/game/client/tf2/hud_numeric.h
diff options
context:
space:
mode:
Diffstat (limited to 'game/client/tf2/hud_numeric.h')
-rw-r--r--game/client/tf2/hud_numeric.h140
1 files changed, 140 insertions, 0 deletions
diff --git a/game/client/tf2/hud_numeric.h b/game/client/tf2/hud_numeric.h
new file mode 100644
index 0000000..20db7f5
--- /dev/null
+++ b/game/client/tf2/hud_numeric.h
@@ -0,0 +1,140 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef HUD_NUMERIC_H
+#define HUD_NUMERIC_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "hudelement.h"
+#include <vgui_controls/Panel.h>
+
+class CHudNumeric : public CHudElement, public vgui::Panel
+{
+ DECLARE_CLASS_SIMPLE( CHudNumeric, vgui::Panel );
+
+public:
+
+ CHudNumeric( const char *pElementName, const char *panelName );
+
+ void SetDrawLabel( bool draw ) { m_bDrawLabel = draw; }
+ void SetDoPulses( bool dopulses ) { m_bSendPulses = dopulses; }
+ void ForcePulse( void );
+
+ void SetRotaryEffect( int rotary ) { m_nRotaryEffect = rotary; }
+ void SetRotaryTimeMax( float maxTime ) { m_flRotaryTimeMax = maxTime; }
+ void SetRotaryCharsPerSecond( float cps ) { m_flDesiredCharactersPerSecond = cps; }
+
+ // vgui::Panel overrides.
+ virtual void Paint( void );
+ virtual void PaintBackground( void );
+
+ virtual void ApplySchemeSettings(vgui::IScheme *pScheme);
+
+ virtual const char *GetLabelText() = 0;
+ virtual const char *GetPulseEvent( bool increment ) = 0;
+ virtual bool GetValue( char *val, int maxlen ) = 0;
+
+ virtual Color GetColor();
+ virtual Color GetBoxColor();
+
+ static void BuildPrintablesList( void );
+ static int FindPrintableIndex( int ch );
+
+protected:
+ enum
+ {
+ ROTARY_EFFECT_NONE = 0,
+ ROTARY_EFFECT_VERTICAL_ALARM,
+ ROTARY_EFFECT_HORIZONTAL_ALARM,
+ ROTARY_EFFECT_SPEEDOMETER
+ };
+
+ enum
+ {
+ MAX_VALUE_LENGTH = 128,
+ };
+
+ void PaintValue( const char *value, int textlen, int wide, int tall, Color& clr );
+ void PaintString( const char *text, int textlen, vgui::HFont& font, int x, int y );
+ void PaintStringNormal( const char *text, int textlen, vgui::HFont& font, int x, int y );
+
+ void PaintStringRotary( float t, const char *text, int textlen, vgui::HFont& font, int x, int y );
+
+ void GetRotatedChar( float frac, char startchar, char endchar,
+ char& prevchar, char& nextchar, float& subfrac );
+ void PaintRotatedCharacter( int x, int y, vgui::HFont& font, int prevchar, int nextchar, float frac );
+ void PaintRotatedCharacterHoriz( int x, int y, vgui::HFont& font, int prevchar, int nextchar, float frac );
+ void PaintRotatedCharacterSpeedomter( int x, int y, vgui::HFont& font, int prevchar, int nextchar, float frac );
+
+ bool IsRotating( void ) const;
+
+ float MaxCharacterDiff( const char *prev, const char *next );
+ void DrawCharacterBackground( const char *text, int textlen, vgui::HFont& font, int x, int y );
+ void DrawCharacterForeground( const char *text, int textlen, vgui::HFont& font, int x, int y );
+
+ int ComputePixelsRequired( vgui::HFont& font, const char *text, int textlen );
+
+ int m_nTextLen;
+ char m_szPreviousValue[ MAX_VALUE_LENGTH ];
+ char m_szLatchedValue[ MAX_VALUE_LENGTH ];
+
+ bool m_bDrawLabel;
+ bool m_bSendPulses;
+ bool m_bPulseForced;
+
+ float m_flRotaryTime;
+ float m_flRotaryStartTime;
+ float m_flActualCharactersPerSecond;
+
+ static CUtlRBTree< int, int > m_Printables;
+ static bool s_bPrintablesBuilt;
+
+ CPanelAnimationVar( int, m_nRotaryEffect, "Rotary", "0" );
+ CPanelAnimationVar( int, m_nRotaryMaxDelta, "RotaryMaxDelta", "0" );
+ CPanelAnimationVar( float, m_flRotaryTimeMax, "RotaryMaxTime", "2.0" );
+ CPanelAnimationVar( float, m_flDesiredCharactersPerSecond, "RotarySpeed", "7.0" );
+
+ CPanelAnimationVar( bool, m_bDrawCharacterBackground, "DrawCharacterBackground", "false" );
+ CPanelAnimationVar( bool, m_bDrawCharacterForeground, "DrawCharacterForeground", "false" );
+ CPanelAnimationVar( bool, m_bDrawCharacterBackgroundBorder, "DrawCharacterBackgroundBorder", "false" );
+
+ CPanelAnimationVar( float, m_flBlur, "Blur", "0" );
+ CPanelAnimationVar( float, m_flAlphaOverride, "Alpha", "255" );
+
+ CPanelAnimationVar( Color, m_TextColor, "TextColor", "NumericText" );
+ CPanelAnimationVar( Color, m_TextColorWarning, "TextColorWarning", "NumericTextWarning" );
+ CPanelAnimationVar( Color, m_TextColorCritical, "TextColorCritical", "NumericTextCritical" );
+
+ CPanelAnimationVar( Color, m_BoxColor, "BoxColor", "NumericBox" );
+ CPanelAnimationVar( Color, m_BoxColorWarning, "BoxColorWarning", "NumericBoxWarning" );
+ CPanelAnimationVar( Color, m_BoxColorCritical, "BoxColorCritical", "NumericBoxCritical" );
+
+ CPanelAnimationVar( Color, m_CharBg, "CharBackground", "NumericCharBg" );
+ CPanelAnimationVar( Color, m_CharBgBorder, "CharBackgroundBorder", "NumericCharBgBorder" );
+ CPanelAnimationVar( Color, m_CharFg, "CharForeground", "NumericCharFg" );
+
+ CPanelAnimationVar( vgui::HFont, m_hLabelFont, "LabelFont", "HudNumbersLabelFont" );
+ CPanelAnimationVar( vgui::HFont, m_hTextFont, "TextFont", "HudNumbersSmall" );
+ CPanelAnimationVar( vgui::HFont, m_hTextFontPulsing, "TextFontPulsing", "HudNumbersSmallGlow" );
+
+ CPanelAnimationVarAliasType( float, label_ypos, "label_ypos", "2", "proportional_float" );
+ CPanelAnimationVarAliasType( float, label_xpos_right, "label_xpos_right", "5", "proportional_float" );
+ CPanelAnimationVarAliasType( float, value_ypos, "value_ypos", "12", "proportional_float" );
+ CPanelAnimationVarAliasType( float, value_xpos_right, "value_xpos_right", "5", "proportional_float" );
+
+ CPanelAnimationVar( bool, m_bUseIcon, "UseIcon", "false" );
+ CPanelAnimationVarAliasType( float, m_flIconWidth, "IconWidth", "60", "proportional_float" );
+ CPanelAnimationVarAliasType( float, m_flIconHeight, "IconHeight", "30", "proportional_float" );
+ CPanelAnimationVarAliasType( float, m_flIconXPos, "IconXPos", "10", "proportional_float" );
+ CPanelAnimationVarAliasType( float, m_flIconYPos, "IconYPos", "4", "proportional_float" );
+ CPanelAnimationVar( CHudTextureHandle, m_hIcon, "IconTexture", "" );
+ CPanelAnimationVar( Color, m_IconColor, "IconColor", "NumericText" );
+};
+
+#endif // HUD_NUMERIC_H