diff options
Diffstat (limited to 'game/server/tf2/order_resourcepump.cpp')
| -rw-r--r-- | game/server/tf2/order_resourcepump.cpp | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/game/server/tf2/order_resourcepump.cpp b/game/server/tf2/order_resourcepump.cpp new file mode 100644 index 0000000..bd24706 --- /dev/null +++ b/game/server/tf2/order_resourcepump.cpp @@ -0,0 +1,66 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//=============================================================================// + +#include "cbase.h" +#include "order_resourcepump.h" +#include "tf_team.h" +#include "tf_obj_resourcepump.h" +#include "tf_func_resource.h" +#include "order_helpers.h" + + +IMPLEMENT_SERVERCLASS_ST( COrderResourcePump, DT_OrderResourcePump ) +END_SEND_TABLE() + + +bool COrderResourcePump::CreateOrder( CPlayerClass *pClass ) +{ + COrderResourcePump *pOrder = new COrderResourcePump; + + if ( OrderCreator_ResourceZoneObject( pClass->GetPlayer(), OBJ_RESOURCEPUMP, pOrder ) ) + { + return true; + } + else + { + UTIL_RemoveImmediate( pOrder ); + return false; + } +} + + +bool COrderResourcePump::Update() +{ + // Can they still build resource pumps? + if ( !m_hOwningPlayer.Get() || m_hOwningPlayer->CanBuild( OBJ_RESOURCEPUMP ) != CB_CAN_BUILD ) + return true; + + // Lost our resource zone? + if ( !GetTargetEntity() ) + return true; + // Is our target zone now empty? + if ( ((CResourceZone*)GetTargetEntity())->IsEmpty() ) + return true; + + // Have they built a pump on this zone? + for( int i=0; i < m_hOwningPlayer->GetObjectCount(); i++ ) + { + CBaseObject *pObj = m_hOwningPlayer->GetObject(i); + + if( pObj && pObj->GetType() == OBJ_RESOURCEPUMP ) + { + CObjectResourcePump *pPump = (CObjectResourcePump*)pObj; + CResourceZone *pZone = pPump->GetResourceZone(); + if( pZone && pZone->entindex() == m_iTargetEntIndex && !pZone->IsEmpty() ) + return true; + } + } + + return BaseClass::Update(); +} + + |