You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
164 lines
4.8 KiB
164 lines
4.8 KiB
//========= 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); |
|
} |
|
|
|
|