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/c_obj_resourcepump.cpp | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'game/client/tf2/c_obj_resourcepump.cpp')
| -rw-r--r-- | game/client/tf2/c_obj_resourcepump.cpp | 164 |
1 files changed, 164 insertions, 0 deletions
diff --git a/game/client/tf2/c_obj_resourcepump.cpp b/game/client/tf2/c_obj_resourcepump.cpp new file mode 100644 index 0000000..13858ce --- /dev/null +++ b/game/client/tf2/c_obj_resourcepump.cpp @@ -0,0 +1,164 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//=============================================================================// +#include "cbase.h" +#include "hud.h" +#include "c_obj_resourcepump.h" +#include "commanderoverlay.h" +#include "vgui_healthbar.h" +#include "ObjectControlPanel.h" +#include "tf_shareddefs.h" +#include "vgui_bitmapbutton.h" +#include "C_Func_Resource.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +BEGIN_RECV_TABLE_NOBASE( C_ObjectResourcePump, DT_ResourcePumpTeamOnlyVars ) + RecvPropInt( RECVINFO(m_iPumpLevel) ), + RecvPropEHandle( RECVINFO(m_hResourceZone) ), +END_RECV_TABLE() + + +IMPLEMENT_CLIENTCLASS_DT(C_ObjectResourcePump, DT_ResourcePump, CObjectResourcePump) + RecvPropDataTable( "teamonly", 0, 0, &REFERENCE_RECV_TABLE( DT_ResourcePumpTeamOnlyVars ) ) +END_RECV_TABLE() + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +C_ObjectResourcePump::C_ObjectResourcePump() +{ + m_iPumpLevel = 1; + m_pResourceBar = NULL; +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void C_ObjectResourcePump::SetDormant( bool bDormant ) +{ + BaseClass::SetDormant( bDormant ); + ENTITY_PANEL_ACTIVATE( "resource_pump", !bDormant ); +} + + +//----------------------------------------------------------------------------- +// Control screen +//----------------------------------------------------------------------------- +class CResourcePumpControlPanel : public CObjectControlPanel +{ + DECLARE_CLASS( CResourcePumpControlPanel, CObjectControlPanel ); + +public: + CResourcePumpControlPanel( vgui::Panel *parent, const char *panelName ); + virtual bool Init( KeyValues* pKeyValues, VGuiScreenInitData_t* pInitData ); + virtual void OnTick(); + virtual void OnCommand( const char *command ); + + void Upgrade( void ); + +private: + vgui::Button *m_pUpgradeButton; + vgui::Label *m_pResourcesLabel; +}; + + +DECLARE_VGUI_SCREEN_FACTORY( CResourcePumpControlPanel, "resourcepump_control_panel" ); + + +//----------------------------------------------------------------------------- +// Constructor: +//----------------------------------------------------------------------------- +CResourcePumpControlPanel::CResourcePumpControlPanel( vgui::Panel *parent, const char *panelName ) + : BaseClass( parent, "CResourcePumpControlPanel" ) +{ +} + +//----------------------------------------------------------------------------- +// Initialization +//----------------------------------------------------------------------------- +bool CResourcePumpControlPanel::Init( KeyValues* pKeyValues, VGuiScreenInitData_t* pInitData ) +{ + m_pUpgradeButton = new CBitmapButton( this, "UpgradeButton", "Upgrade" ); + m_pResourcesLabel = new vgui::Label( this, "ResourcesLabel", "Resources: 0" ); + + if (!BaseClass::Init(pKeyValues, pInitData)) + return false; + + // ROBIN: Removed upgrading for now + m_pUpgradeButton->SetVisible( false ); + + return true; +} + + +//----------------------------------------------------------------------------- +// Frame-based update +//----------------------------------------------------------------------------- +void CResourcePumpControlPanel::OnTick() +{ + BaseClass::OnTick(); + + C_BaseObject *pObj = GetOwningObject(); + if (!pObj) + return; + + Assert( dynamic_cast<C_ObjectResourcePump*>(pObj) ); + C_ObjectResourcePump *pPump = static_cast<C_ObjectResourcePump*>(pObj); + + char buf[256]; + int iPumpLevel = pPump->GetLevel(); + int iCost = CalculateObjectUpgrade( OBJ_RESOURCEPUMP, iPumpLevel ); + if ( iCost ) + { + Q_snprintf( buf, sizeof( buf ), "Upgrade to Level %d\nCost: %d", iPumpLevel+1, iCost ); + } + else + { + Q_snprintf( buf, sizeof( buf ), "Level %d", iPumpLevel ); + } + + m_pUpgradeButton->SetText( buf ); + + C_ResourceZone *pResourceZone = pPump->GetResourceZone(); + if (pResourceZone) + { + Q_snprintf( buf, sizeof( buf ), "Resources: %d", pResourceZone->m_nResourcesLeft ); + m_pResourcesLabel->SetText( buf ); + } + else + { + m_pResourcesLabel->SetText( "Resources: 0" ); + } +} + +//----------------------------------------------------------------------------- +// Dismantles the object +//----------------------------------------------------------------------------- +void CResourcePumpControlPanel::Upgrade( void ) +{ + C_BaseObject *pObj = GetOwningObject(); + if (pObj) + { + pObj->SendClientCommand( "upgrade" ); + } +} + +//----------------------------------------------------------------------------- +// Button click handlers +//----------------------------------------------------------------------------- +void CResourcePumpControlPanel::OnCommand( const char *command ) +{ + if (!Q_strnicmp(command, "Upgrade", 7)) + { + Upgrade(); + return; + } + + BaseClass::OnCommand(command); +} + |