diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/client/tf2/hud_numeric.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'game/client/tf2/hud_numeric.h')
| -rw-r--r-- | game/client/tf2/hud_numeric.h | 140 |
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 |