summaryrefslogtreecommitdiff
path: root/game/server/tf2/order_buildsentrygun.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'game/server/tf2/order_buildsentrygun.cpp')
-rw-r--r--game/server/tf2/order_buildsentrygun.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/game/server/tf2/order_buildsentrygun.cpp b/game/server/tf2/order_buildsentrygun.cpp
new file mode 100644
index 0000000..241947c
--- /dev/null
+++ b/game/server/tf2/order_buildsentrygun.cpp
@@ -0,0 +1,55 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#include "cbase.h"
+#include "order_buildsentrygun.h"
+#include "tf_class_defender.h"
+#include "tf_team.h"
+#include "order_helpers.h"
+
+
+// The defender will get orders to cover objects with sentry guns this far away.
+#define SENTRYGUN_ORDER_DIST 3500
+
+
+IMPLEMENT_SERVERCLASS_ST( COrderBuildSentryGun, DT_OrderBuildSentryGun )
+END_SEND_TABLE()
+
+
+bool COrderBuildSentryGun::CreateOrder( CPlayerClassDefender *pClass )
+{
+ if ( !pClass->CanBuildSentryGun() )
+ return false;
+
+ COrderBuildSentryGun *pOrder = new COrderBuildSentryGun;
+ if ( OrderCreator_GenericObject( pClass, OBJ_SENTRYGUN_PLASMA, SENTRYGUN_ORDER_DIST, pOrder ) )
+ {
+ return true;
+ }
+ else
+ {
+ UTIL_RemoveImmediate( pOrder );
+ return false;
+ }
+}
+
+
+bool COrderBuildSentryGun::Update()
+{
+ // If the entity we were supposed to cover with the sentry gun is covered now,
+ // then the order is done.
+ CBaseEntity *pEnt = GetTargetEntity();
+ if( !pEnt || !m_hOwningPlayer.Get() )
+ return true;
+
+ CTFTeam *pTeam = m_hOwningPlayer->GetTFTeam();
+ if( pTeam->IsCoveredBySentryGun( pEnt->GetAbsOrigin() ) )
+ return true;
+
+ return false;
+}
+