aboutsummaryrefslogtreecommitdiff
path: root/sp/src/game/server/hl2/vehicle_apc.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 /sp/src/game/server/hl2/vehicle_apc.h
downloadsource-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz
source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip
First version of the SOurce SDK 2013
Diffstat (limited to 'sp/src/game/server/hl2/vehicle_apc.h')
-rw-r--r--sp/src/game/server/hl2/vehicle_apc.h162
1 files changed, 162 insertions, 0 deletions
diff --git a/sp/src/game/server/hl2/vehicle_apc.h b/sp/src/game/server/hl2/vehicle_apc.h
new file mode 100644
index 00000000..f7021536
--- /dev/null
+++ b/sp/src/game/server/hl2/vehicle_apc.h
@@ -0,0 +1,162 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef VEHICLE_APC_H
+#define VEHICLE_APC_H
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "vehicle_base.h"
+#include "smoke_trail.h"
+
+//-----------------------------------------------------------------------------
+// Purpose: Four wheel physics vehicle server vehicle with weaponry
+//-----------------------------------------------------------------------------
+class CAPCFourWheelServerVehicle : public CFourWheelServerVehicle
+{
+ typedef CFourWheelServerVehicle BaseClass;
+// IServerVehicle
+public:
+ bool NPC_HasPrimaryWeapon( void ) { return true; }
+ void NPC_AimPrimaryWeapon( Vector vecTarget );
+ bool NPC_HasSecondaryWeapon( void ) { return true; }
+ void NPC_AimSecondaryWeapon( Vector vecTarget );
+
+ // Weaponry
+ void Weapon_PrimaryRanges( float *flMinRange, float *flMaxRange );
+ void Weapon_SecondaryRanges( float *flMinRange, float *flMaxRange );
+ float Weapon_PrimaryCanFireAt( void ); // Return the time at which this vehicle's primary weapon can fire again
+ float Weapon_SecondaryCanFireAt( void ); // Return the time at which this vehicle's secondary weapon can fire again
+};
+
+
+//-----------------------------------------------------------------------------
+// A driveable vehicle with a gun that shoots wherever the driver looks.
+//-----------------------------------------------------------------------------
+class CPropAPC : public CPropVehicleDriveable
+{
+ DECLARE_CLASS( CPropAPC, CPropVehicleDriveable );
+public:
+ // CBaseEntity
+ virtual void Precache( void );
+ void Think( void );
+ virtual void Spawn(void);
+ virtual void Activate();
+ virtual void UpdateOnRemove( void );
+ virtual void OnRestore( void );
+
+ // CPropVehicle
+ virtual void CreateServerVehicle( void );
+ virtual void DriveVehicle( float flFrameTime, CUserCmd *ucmd, int iButtonsDown, int iButtonsReleased );
+ virtual void ProcessMovement( CBasePlayer *pPlayer, CMoveData *pMoveData );
+ virtual Class_T ClassifyPassenger( CBaseCombatCharacter *pPassenger, Class_T defaultClassification );
+ virtual int OnTakeDamage( const CTakeDamageInfo &info );
+ virtual float PassengerDamageModifier( const CTakeDamageInfo &info );
+
+ // Weaponry
+ const Vector &GetPrimaryGunOrigin( void );
+ void AimPrimaryWeapon( const Vector &vecForward );
+ void AimSecondaryWeaponAt( CBaseEntity *pTarget );
+ float PrimaryWeaponFireTime( void ) { return m_flMachineGunTime; }
+ float SecondaryWeaponFireTime( void ) { return m_flRocketTime; }
+ float MaxAttackRange() const;
+ bool IsInPrimaryFiringCone() const { return m_bInFiringCone; }
+
+ // Muzzle flashes
+ const char *GetTracerType( void ) ;
+ void DoImpactEffect( trace_t &tr, int nDamageType );
+ void DoMuzzleFlash( void );
+
+ virtual Vector EyePosition( ); // position of eyes
+ Vector BodyTarget( const Vector &posSrc, bool bNoisy );
+
+
+ virtual void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value );
+
+private:
+ enum
+ {
+ MAX_SMOKE_TRAILS = 4,
+ MAX_EXPLOSIONS = 4,
+ };
+
+ // Should we trigger a damage effect?
+ bool ShouldTriggerDamageEffect( int nPrevHealth, int nEffectCount ) const;
+
+ // Add a smoke trail since we've taken more damage
+ void AddSmokeTrail( const Vector &vecPos );
+
+ // Creates the breakable husk of an attack chopper
+ void CreateChopperHusk();
+
+ // Pow!
+ void ExplodeAndThrowChunk( const Vector &vecExplosionPos );
+
+ void Event_Killed( const CTakeDamageInfo &info );
+
+ // Purpose:
+ void GetRocketShootPosition( Vector *pPosition );
+
+ void FireMachineGun( void );
+ void FireRocket( void );
+
+ // Death volley
+ void FireDying( );
+
+ // Create a corpse
+ void CreateCorpse( );
+
+ // Blows da shizzle up
+ void InputDestroy( inputdata_t &inputdata );
+ void InputFireMissileAt( inputdata_t &inputdata );
+
+ void CreateAPCLaserDot( void );
+
+ virtual bool ShouldAttractAutoAim( CBaseEntity *pAimingEnt );
+
+
+private:
+ // Danger sounds made by the APC
+ float m_flDangerSoundTime;
+
+ // handbrake after the fact to keep vehicles from rolling
+ float m_flHandbrakeTime;
+ bool m_bInitialHandbrake;
+
+ // Damage effects
+ int m_nSmokeTrailCount;
+
+ // Machine gun attacks
+ int m_nMachineGunMuzzleAttachment;
+ int m_nMachineGunBaseAttachment;
+ float m_flMachineGunTime;
+ int m_iMachineGunBurstLeft;
+ Vector m_vecBarrelPos;
+ bool m_bInFiringCone;
+
+ // Rocket attacks
+ EHANDLE m_hLaserDot;
+ EHANDLE m_hRocketTarget;
+ int m_iRocketSalvoLeft;
+ float m_flRocketTime;
+ int m_nRocketAttachment;
+ int m_nRocketSide;
+ EHANDLE m_hSpecificRocketTarget;
+ string_t m_strMissileHint;
+
+ COutputEvent m_OnDeath;
+ COutputEvent m_OnFiredMissile;
+ COutputEvent m_OnDamaged;
+ COutputEvent m_OnDamagedByPlayer;
+
+ DECLARE_DATADESC();
+};
+
+#endif // VEHICLE_APC_H
+