diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/server/iservervehicle.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'game/server/iservervehicle.h')
| -rw-r--r-- | game/server/iservervehicle.h | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/game/server/iservervehicle.h b/game/server/iservervehicle.h new file mode 100644 index 0000000..60be008 --- /dev/null +++ b/game/server/iservervehicle.h @@ -0,0 +1,139 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//=============================================================================// + +#ifndef ISERVERVEHICLE_H +#define ISERVERVEHICLE_H + +#ifdef _WIN32 +#pragma once +#endif + +#include "IVehicle.h" +#include "vphysics/vehicles.h" + +class CBaseEntity; +class CBasePlayer; +class CBaseCombatCharacter; +class CNPC_VehicleDriver; +enum VehicleSeatQuery_e; + +// This is used by the player to access vehicles. It's an interface so the +// vehicles are not restricted in what they can derive from. +abstract_class IServerVehicle : public IVehicle +{ +public: + // Get the entity associated with the vehicle. + virtual CBaseEntity* GetVehicleEnt() = 0; + + // Get and set the current driver. Use PassengerRole_t enum in shareddefs.h for adding passengers + virtual void SetPassenger( int nRole, CBaseCombatCharacter *pPassenger ) = 0; + + // Is the player visible while in the vehicle? (this is a constant the vehicle) + virtual bool IsPassengerVisible( int nRole = VEHICLE_ROLE_DRIVER ) = 0; + + // Can a given passenger take damage? + virtual bool IsPassengerDamagable( int nRole = VEHICLE_ROLE_DRIVER ) = 0; + virtual bool PassengerShouldReceiveDamage( CTakeDamageInfo &info ) = 0; + + // Is the vehicle upright? + virtual bool IsVehicleUpright( void ) = 0; + + // Whether or not we're in a transitional phase + virtual bool IsPassengerEntering( void ) = 0; + virtual bool IsPassengerExiting( void ) = 0; + + // Get a position in *world space* inside the vehicle for the player to start at + virtual void GetPassengerSeatPoint( int nRole, Vector *pPoint, QAngle *pAngles ) = 0; + + virtual void HandlePassengerEntry( CBaseCombatCharacter *pPassenger, bool bAllowEntryOutsideZone = false ) = 0; + virtual bool HandlePassengerExit( CBaseCombatCharacter *pPassenger ) = 0; + + // Get a point in *world space* to leave the vehicle from (may be in solid) + virtual bool GetPassengerExitPoint( int nRole, Vector *pPoint, QAngle *pAngles ) = 0; + virtual int GetEntryAnimForPoint( const Vector &vecPoint ) = 0; + virtual int GetExitAnimToUse( Vector &vecEyeExitEndpoint, bool &bAllPointsBlocked ) = 0; + virtual void HandleEntryExitFinish( bool bExitAnimOn, bool bResetAnim ) = 0; + + virtual Class_T ClassifyPassenger( CBaseCombatCharacter *pPassenger, Class_T defaultClassification ) = 0; + virtual float PassengerDamageModifier( const CTakeDamageInfo &info ) = 0; + + // Get me the parameters for this vehicle + virtual const vehicleparams_t *GetVehicleParams( void ) = 0; + // If I'm a physics vehicle, get the controller + virtual IPhysicsVehicleController *GetVehicleController() = 0; + + virtual int NPC_GetAvailableSeat( CBaseCombatCharacter *pPassenger, string_t strRoleName, VehicleSeatQuery_e nQueryType ) = 0; + virtual bool NPC_AddPassenger( CBaseCombatCharacter *pPassenger, string_t strRoleName, int nSeat ) = 0; + virtual bool NPC_RemovePassenger( CBaseCombatCharacter *pPassenger ) = 0; + virtual bool NPC_GetPassengerSeatPosition( CBaseCombatCharacter *pPassenger, Vector *vecResultPos, QAngle *vecResultAngle ) = 0; + virtual bool NPC_GetPassengerSeatPositionLocal( CBaseCombatCharacter *pPassenger, Vector *vecResultPos, QAngle *vecResultAngle ) = 0; + virtual int NPC_GetPassengerSeatAttachment( CBaseCombatCharacter *pPassenger ) = 0; + virtual bool NPC_HasAvailableSeat( string_t strRoleName ) = 0; + + virtual const PassengerSeatAnims_t *NPC_GetPassengerSeatAnims( CBaseCombatCharacter *pPassenger, PassengerSeatAnimType_t nType ) = 0; + virtual CBaseCombatCharacter *NPC_GetPassengerInSeat( int nRoleID, int nSeatID ) = 0; + + virtual void RestorePassengerInfo( void ) = 0; + + // NPC Driving + virtual bool NPC_CanDrive( void ) = 0; + virtual void NPC_SetDriver( CNPC_VehicleDriver *pDriver ) = 0; + virtual void NPC_DriveVehicle( void ) = 0; + virtual void NPC_ThrottleCenter( void ) = 0; + virtual void NPC_ThrottleReverse( void ) = 0; + virtual void NPC_ThrottleForward( void ) = 0; + virtual void NPC_Brake( void ) = 0; + virtual void NPC_TurnLeft( float flDegrees ) = 0; + virtual void NPC_TurnRight( float flDegrees ) = 0; + virtual void NPC_TurnCenter( void ) = 0; + virtual void NPC_PrimaryFire( void ) = 0; + virtual void NPC_SecondaryFire( void ) = 0; + virtual bool NPC_HasPrimaryWeapon( void ) = 0; + virtual bool NPC_HasSecondaryWeapon( void ) = 0; + virtual void NPC_AimPrimaryWeapon( Vector vecTarget ) = 0; + virtual void NPC_AimSecondaryWeapon( Vector vecTarget ) = 0; + + // Weapon handling + virtual void Weapon_PrimaryRanges( float *flMinRange, float *flMaxRange ) = 0; + virtual void Weapon_SecondaryRanges( float *flMinRange, float *flMaxRange ) = 0; + virtual float Weapon_PrimaryCanFireAt( void ) = 0; // Return the time at which this vehicle's primary weapon can fire again + virtual float Weapon_SecondaryCanFireAt( void ) = 0; // Return the time at which this vehicle's secondary weapon can fire again + + // debugging, script file flushed + virtual void ReloadScript() = 0; +}; + +// This is an interface to derive from if your class contains an IServerVehicle +// handler (i.e. something derived CBaseServerVehicle. +abstract_class IDrivableVehicle +{ +public: + virtual CBaseEntity *GetDriver( void ) = 0; + + // Process movement + virtual void ItemPostFrame( CBasePlayer *pPlayer ) = 0; + virtual void SetupMove( CBasePlayer *player, CUserCmd *ucmd, IMoveHelper *pHelper, CMoveData *move ) = 0; + virtual void ProcessMovement( CBasePlayer *pPlayer, CMoveData *pMoveData ) = 0; + virtual void FinishMove( CBasePlayer *player, CUserCmd *ucmd, CMoveData *move ) = 0; + + // Entering / Exiting + virtual bool CanEnterVehicle( CBaseEntity *pEntity ) = 0; + virtual bool CanExitVehicle( CBaseEntity *pEntity ) = 0; + virtual void SetVehicleEntryAnim( bool bOn ) = 0; + virtual void SetVehicleExitAnim( bool bOn, Vector vecEyeExitEndpoint ) = 0; + virtual void EnterVehicle( CBaseCombatCharacter *pPassenger ) = 0; + + virtual void PreExitVehicle( CBaseCombatCharacter *pPassenger, int nRole ) = 0; + virtual void ExitVehicle( int nRole ) = 0; + virtual bool AllowBlockedExit( CBaseCombatCharacter *pPassenger, int nRole ) = 0; + virtual bool AllowMidairExit( CBaseCombatCharacter *pPassenger, int nRole ) = 0; + virtual string_t GetVehicleScriptName() = 0; + + virtual bool PassengerShouldReceiveDamage( CTakeDamageInfo &info ) = 0; +}; + +#endif // IVEHICLE_H |