aboutsummaryrefslogtreecommitdiff
path: root/mp/src/game/server/items.h
diff options
context:
space:
mode:
authorJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
committerJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
commit39ed87570bdb2f86969d4be821c94b722dc71179 (patch)
treeabc53757f75f40c80278e87650ea92808274aa59 /mp/src/game/server/items.h
downloadsource-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz
source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip
First version of the SOurce SDK 2013
Diffstat (limited to 'mp/src/game/server/items.h')
-rw-r--r--mp/src/game/server/items.h97
1 files changed, 97 insertions, 0 deletions
diff --git a/mp/src/game/server/items.h b/mp/src/game/server/items.h
new file mode 100644
index 00000000..e7851f23
--- /dev/null
+++ b/mp/src/game/server/items.h
@@ -0,0 +1,97 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef ITEMS_H
+#define ITEMS_H
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "entityoutput.h"
+#include "player_pickup.h"
+#include "vphysics/constraints.h"
+
+
+// Armor given by a battery
+#define MAX_NORMAL_BATTERY 100
+
+// Ammo counts given by ammo items
+#define SIZE_AMMO_PISTOL 20
+#define SIZE_AMMO_PISTOL_LARGE 100
+#define SIZE_AMMO_SMG1 45
+#define SIZE_AMMO_SMG1_LARGE 225
+#define SIZE_AMMO_AR2 20
+#define SIZE_AMMO_AR2_LARGE 100
+#define SIZE_AMMO_RPG_ROUND 1
+#define SIZE_AMMO_SMG1_GRENADE 1
+#define SIZE_AMMO_BUCKSHOT 20
+#define SIZE_AMMO_357 6
+#define SIZE_AMMO_357_LARGE 20
+#define SIZE_AMMO_CROSSBOW 6
+#define SIZE_AMMO_AR2_ALTFIRE 1
+
+#define SF_ITEM_START_CONSTRAINED 0x00000001
+
+
+class CItem : public CBaseAnimating, public CDefaultPlayerPickupVPhysics
+{
+public:
+ DECLARE_CLASS( CItem, CBaseAnimating );
+
+ CItem();
+
+ virtual void Spawn( void );
+ virtual void Precache();
+
+ unsigned int PhysicsSolidMaskForEntity( void ) const;
+
+ virtual CBaseEntity* Respawn( void );
+ virtual void ItemTouch( CBaseEntity *pOther );
+ virtual void Materialize( void );
+ virtual bool MyTouch( CBasePlayer *pPlayer ) { return false; };
+
+ // Become touchable when we are at rest
+ virtual void OnEntityEvent( EntityEvent_t event, void *pEventData );
+
+ // Activate when at rest, but don't allow pickup until then
+ void ActivateWhenAtRest( float flTime = 0.5f );
+
+ // IPlayerPickupVPhysics
+ virtual void OnPhysGunPickup( CBasePlayer *pPhysGunUser, PhysGunPickup_t reason = PICKED_UP_BY_CANNON );
+ virtual void OnPhysGunDrop( CBasePlayer *pPhysGunUser, PhysGunDrop_t reason );
+
+ virtual int ObjectCaps() { return BaseClass::ObjectCaps() | FCAP_IMPULSE_USE | FCAP_WCEDIT_POSITION; };
+ virtual void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value );
+ Vector GetOriginalSpawnOrigin( void ) { return m_vOriginalSpawnOrigin; }
+ QAngle GetOriginalSpawnAngles( void ) { return m_vOriginalSpawnAngles; }
+ void SetOriginalSpawnOrigin( const Vector& origin ) { m_vOriginalSpawnOrigin = origin; }
+ void SetOriginalSpawnAngles( const QAngle& angles ) { m_vOriginalSpawnAngles = angles; }
+ bool CreateItemVPhysicsObject( void );
+ virtual bool ItemCanBeTouchedByPlayer( CBasePlayer *pPlayer );
+
+#if defined( HL2MP ) || defined( TF_DLL )
+ void FallThink( void );
+ float m_flNextResetCheckTime;
+#endif
+
+ DECLARE_DATADESC();
+protected:
+ virtual void ComeToRest( void );
+
+private:
+ bool m_bActivateWhenAtRest;
+ COutputEvent m_OnPlayerTouch;
+ COutputEvent m_OnCacheInteraction;
+
+ Vector m_vOriginalSpawnOrigin;
+ QAngle m_vOriginalSpawnAngles;
+
+ IPhysicsConstraint *m_pConstraint;
+};
+
+#endif // ITEMS_H