summaryrefslogtreecommitdiff
path: root/game/server/tf2/orders.h
diff options
context:
space:
mode:
Diffstat (limited to 'game/server/tf2/orders.h')
-rw-r--r--game/server/tf2/orders.h90
1 files changed, 90 insertions, 0 deletions
diff --git a/game/server/tf2/orders.h b/game/server/tf2/orders.h
new file mode 100644
index 0000000..0aa68e2
--- /dev/null
+++ b/game/server/tf2/orders.h
@@ -0,0 +1,90 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose: Order handling
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef ORDERS_H
+#define ORDERS_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+
+class CTFTeam;
+class CBaseTFPlayer;
+
+
+#include "order_events.h"
+
+
+//-----------------------------------------------------------------------------
+// Purpose: Datatable container class for orders
+//-----------------------------------------------------------------------------
+class COrder : public CBaseEntity
+{
+ DECLARE_CLASS( COrder, CBaseEntity );
+public:
+ DECLARE_SERVERCLASS();
+
+ COrder();
+ virtual void UpdateOnRemove( void );
+
+ virtual int UpdateTransmitState() { return SetTransmitState( FL_EDICT_FULLCHECK ); }
+ virtual int ShouldTransmit( const CCheckTransmitInfo *pInfo );
+
+ // This is called when removing the order.
+ void DetachFromPlayer();
+
+
+// Overridables.
+public:
+
+ // Purpose: for updates on the order. Return true if the order should be removed.
+ virtual bool Update( void );
+ virtual bool UpdateOnEvent( COrderEvent_Base *pEvent );
+
+
+
+public:
+
+ CBaseTFPlayer *GetOwner( void );
+ CBaseEntity *GetTargetEntity( void );
+ int GetType( void );
+
+ void SetOwner( CBaseTFPlayer *pPlayer );
+ void SetType( int iOrderType );
+ void SetTarget( CBaseEntity *pTarget );
+ void SetDistance( float flDistance );
+ void SetLifetime( float flLifetime );
+
+public:
+ // Sent via datatable
+ CNetworkVar( int, m_iOrderType );
+ float m_flDistanceToRemove;
+
+ // When the order goes away.
+ double m_flDieTime;
+
+ // Personal order owner
+ CHandle< CBaseTFPlayer > m_hOwningPlayer;
+ EHANDLE m_hTarget;
+ CNetworkVar( int, m_iTargetEntIndex );
+};
+
+
+
+//-----------------------------------------------------------------------------
+// ORDER CREATION DATA
+//-----------------------------------------------------------------------------
+// Time between personal order updates
+#define PERSONAL_ORDER_UPDATE_TIME 2.0
+
+// KILL orders
+#define ORDER_KILL_ENEMY_DISTANCE 2048 // Distance the enemy must be within for this player to receive this order
+
+// HEAL orders
+#define ORDER_HEAL_FRIENDLY_DISTANCE 2048 // Distance the friendly must be within this player to receive this order
+
+#endif // ORDERS_H