summaryrefslogtreecommitdiff
path: root/game/client/cstrike/VGUI/buypreset_weaponsetlabel.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/client/cstrike/VGUI/buypreset_weaponsetlabel.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'game/client/cstrike/VGUI/buypreset_weaponsetlabel.h')
-rw-r--r--game/client/cstrike/VGUI/buypreset_weaponsetlabel.h302
1 files changed, 302 insertions, 0 deletions
diff --git a/game/client/cstrike/VGUI/buypreset_weaponsetlabel.h b/game/client/cstrike/VGUI/buypreset_weaponsetlabel.h
new file mode 100644
index 0000000..9c205ad
--- /dev/null
+++ b/game/client/cstrike/VGUI/buypreset_weaponsetlabel.h
@@ -0,0 +1,302 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================
+
+#ifndef BUYPRESET_WEAPONSETLABEL_H
+#define BUYPRESET_WEAPONSETLABEL_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include <vgui/VGUI.h>
+#include <vgui_controls/Panel.h>
+#include <vgui/IImage.h>
+
+namespace vgui
+{
+ class TextImage;
+ class TextEntry;
+};
+
+//--------------------------------------------------------------------------------------------------------------
+/// Helper function: draws a simple dashed line
+void DrawDashedLine(int x0, int y0, int x1, int y1, int dashLen, int gapLen);
+
+//--------------------------------------------------------------------------------------------------------------
+// Purpose: Wraps an IImage to perform resizes properly
+class BuyPresetImage : public vgui::IImage
+{
+public:
+ BuyPresetImage( vgui::IImage *realImage )
+ {
+ m_image = realImage;
+ if ( m_image )
+ {
+ m_image->GetSize( m_wide, m_tall );
+ }
+ else
+ {
+ m_wide = m_tall = 0;
+ }
+ }
+
+ // Call to Paint the image
+ // Image will draw within the current panel context at the specified position
+ virtual void Paint()
+ {
+ if ( !m_image )
+ return;
+
+ m_image->Paint();
+ }
+
+ // Set the position of the image
+ virtual void SetPos(int x, int y)
+ {
+ if ( !m_image )
+ return;
+
+ m_image->SetPos( x, y );
+ }
+
+ // Gets the size of the content
+ virtual void GetContentSize(int &wide, int &tall)
+ {
+ if ( !m_image )
+ return;
+
+ m_image->GetSize( wide, tall );
+ }
+
+ // Get the size the image will actually draw in (usually defaults to the content size)
+ virtual void GetSize(int &wide, int &tall)
+ {
+ if ( !m_image )
+ {
+ wide = tall = 0;
+ return;
+ }
+
+ wide = m_wide;
+ tall = m_tall;
+ }
+
+ // Sets the size of the image
+ virtual void SetSize(int wide, int tall)
+ {
+ m_wide = wide;
+ m_tall = tall;
+ if ( !m_image )
+ return;
+
+ m_image->SetSize( wide, tall );
+ }
+
+ // Set the draw color
+ virtual void SetColor(Color col)
+ {
+ if ( !m_image )
+ return;
+
+ m_image->SetColor( col );
+ }
+
+ virtual bool Evict()
+ {
+ return false;
+ }
+
+ virtual int GetNumFrames()
+ {
+ return 0;
+ }
+
+ virtual void SetFrame( int nFrame )
+ {
+ }
+
+ virtual vgui::HTexture GetID()
+ {
+ return 0;
+ }
+
+ virtual void SetRotation( int iRotation )
+ {
+ return;
+ }
+
+private:
+ vgui::IImage *m_image;
+ int m_wide, m_tall;
+};
+
+//--------------------------------------------------------------------------------------------------------------
+struct ImageInfo {
+ vgui::IImage *image;
+ int w;
+ int h;
+ int x;
+ int y;
+ int fullW;
+ int fullH;
+
+ void FitInBounds( int baseX, int baseY, int width, int height, bool center, int scaleAt1024, bool halfHeight = false );
+ void Paint();
+};
+
+//--------------------------------------------------------------------------------------------------------------
+class WeaponImageInfo
+{
+public:
+ WeaponImageInfo();
+ ~WeaponImageInfo();
+
+ void SetBounds( int left, int top, int wide, int tall );
+ void SetCentered( bool isCentered );
+ void SetScaleAt1024( int weaponScale, int ammoScale );
+ void SetWeapon( const BuyPresetWeapon *pWeapon, bool isPrimary, bool useCurrentAmmoType );
+
+ void ApplyTextSettings( vgui::IScheme *pScheme, bool isProportional );
+
+ void Paint();
+ void PaintText();
+
+private:
+ void PerformLayout();
+
+ int m_left;
+ int m_top;
+ int m_wide;
+ int m_tall;
+
+ bool m_isPrimary;
+
+ int m_weaponScale;
+ int m_ammoScale;
+
+ bool m_needLayout;
+ bool m_isCentered;
+ ImageInfo m_weapon;
+ ImageInfo m_ammo;
+
+ vgui::TextImage *m_pAmmoText;
+};
+
+//--------------------------------------------------------------------------------------------------------------
+class ItemImageInfo
+{
+public:
+ ItemImageInfo();
+ ~ItemImageInfo();
+
+ void SetBounds( int left, int top, int wide, int tall );
+ void SetItem( const char *imageFname, int count );
+ void ApplyTextSettings( vgui::IScheme *pScheme, bool isProportional );
+
+ void Paint();
+ void PaintText();
+
+private:
+ void PerformLayout();
+
+ int m_left;
+ int m_top;
+ int m_wide;
+ int m_tall;
+
+ int m_count;
+
+ bool m_needLayout;
+ ImageInfo m_image;
+
+ vgui::TextImage *m_pText;
+};
+
+//--------------------------------------------------------------------------------------------------------------
+class WeaponLabel : public vgui::Panel
+{
+ typedef vgui::Panel BaseClass;
+public:
+ WeaponLabel(vgui::Panel *parent, const char *panelName);
+ ~WeaponLabel();
+
+ void SetWeapon( const BuyPresetWeapon *pWeapon, bool isPrimary, bool showAmmo = false );
+
+ virtual void ApplySchemeSettings(vgui::IScheme *pScheme);
+ virtual void PerformLayout();
+ virtual void Paint();
+
+protected:
+ WeaponImageInfo m_weapon;
+};
+
+//--------------------------------------------------------------------------------------------------------------
+class EquipmentLabel : public vgui::Panel
+{
+ typedef vgui::Panel BaseClass;
+public:
+ EquipmentLabel(vgui::Panel *parent, const char *panelName, const char *imageFname = NULL);
+ ~EquipmentLabel();
+
+ void SetItem( const char *imageFname, int count );
+
+ virtual void ApplySchemeSettings(vgui::IScheme *pScheme);
+ virtual void PerformLayout();
+ virtual void Paint();
+
+protected:
+ ItemImageInfo m_item;
+};
+
+//--------------------------------------------------------------------------------------------------------------
+/**
+ * BuyPresetEditPanel is a panel displaying a graphical representation of a buy preset.
+ */
+class BuyPresetEditPanel : public vgui::EditablePanel
+{
+ typedef vgui::EditablePanel BaseClass;
+public:
+ BuyPresetEditPanel( vgui::Panel *parent, const char *panelName, const char *resourceFilename, int fallbackIndex, bool editableName );
+ virtual ~BuyPresetEditPanel();
+
+ void SetWeaponSet( const WeaponSet *pWeaponSet, bool current );
+ virtual void SetText( const wchar_t *text );
+
+ virtual void ApplySchemeSettings(vgui::IScheme *pScheme);
+ void OnCommand( const char *command); ///< Handle command callbacks
+
+ virtual void OnSizeChanged( int wide, int tall );
+
+ void SetPanelBgColor( Color color ) { if (m_pBgPanel) m_pBgPanel->SetBgColor( color ); }
+
+protected:
+ void Reset();
+
+ vgui::Panel *m_pBgPanel;
+
+ vgui::TextEntry *m_pTitleEntry;
+ vgui::Label *m_pTitleLabel;
+ vgui::Label *m_pCostLabel;
+
+ WeaponLabel *m_pPrimaryWeapon;
+ WeaponLabel *m_pSecondaryWeapon;
+
+ EquipmentLabel *m_pHEGrenade;
+ EquipmentLabel *m_pSmokeGrenade;
+ EquipmentLabel *m_pFlashbangs;
+
+ EquipmentLabel *m_pDefuser;
+ EquipmentLabel *m_pNightvision;
+
+ EquipmentLabel *m_pArmor;
+
+ int m_baseWide;
+ int m_baseTall;
+
+ int m_fallbackIndex;
+};
+
+
+#endif // BUYPRESET_WEAPONSETLABEL_H