|
|
//========= 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
|