diff options
| author | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:31:46 -0800 |
|---|---|---|
| committer | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:46:31 -0800 |
| commit | f56bb35301836e56582a575a75864392a0177875 (patch) | |
| tree | de61ddd39de3e7df52759711950b4c288592f0dc /mp/src/game/server/trains.h | |
| parent | Mark some more files as text. (diff) | |
| download | source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.tar.xz source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.zip | |
Fix line endings. WHAMMY.
Diffstat (limited to 'mp/src/game/server/trains.h')
| -rw-r--r-- | mp/src/game/server/trains.h | 434 |
1 files changed, 217 insertions, 217 deletions
diff --git a/mp/src/game/server/trains.h b/mp/src/game/server/trains.h index dce6c3d3..ef7e8b7e 100644 --- a/mp/src/game/server/trains.h +++ b/mp/src/game/server/trains.h @@ -1,217 +1,217 @@ -//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-//=============================================================================//
-
-#ifndef TRAINS_H
-#define TRAINS_H
-#ifdef _WIN32
-#pragma once
-#endif
-
-
-#include "entityoutput.h"
-#include "pathtrack.h"
-
-
-// Spawnflags of CPathCorner
-#define SF_CORNER_WAITFORTRIG 0x001
-#define SF_CORNER_TELEPORT 0x002
-
-// Tracktrain spawn flags
-#define SF_TRACKTRAIN_NOPITCH 0x0001
-#define SF_TRACKTRAIN_NOCONTROL 0x0002
-#define SF_TRACKTRAIN_FORWARDONLY 0x0004
-#define SF_TRACKTRAIN_PASSABLE 0x0008
-#define SF_TRACKTRAIN_FIXED_ORIENTATION 0x0010
-#define SF_TRACKTRAIN_HL1TRAIN 0x0080
-#define SF_TRACKTRAIN_USE_MAXSPEED_FOR_PITCH 0x0100
-#define SF_TRACKTRAIN_UNBLOCKABLE_BY_PLAYER 0x0200
-
-#define TRAIN_ACTIVE 0x80
-#define TRAIN_NEW 0xc0
-#define TRAIN_OFF 0x00
-#define TRAIN_NEUTRAL 0x01
-#define TRAIN_SLOW 0x02
-#define TRAIN_MEDIUM 0x03
-#define TRAIN_FAST 0x04
-#define TRAIN_BACK 0x05
-
-
-enum TrainVelocityType_t
-{
- TrainVelocity_Instantaneous = 0,
- TrainVelocity_LinearBlend,
- TrainVelocity_EaseInEaseOut,
-};
-
-
-enum TrainOrientationType_t
-{
- TrainOrientation_Fixed = 0,
- TrainOrientation_AtPathTracks,
- TrainOrientation_LinearBlend,
- TrainOrientation_EaseInEaseOut,
-};
-
-class CFuncTrackTrain : public CBaseEntity
-{
- DECLARE_CLASS( CFuncTrackTrain, CBaseEntity );
- DECLARE_SERVERCLASS();
-
-public:
- CFuncTrackTrain();
-
- void Spawn( void );
- bool CreateVPhysics( void );
- void Precache( void );
- void UpdateOnRemove();
- void MoveDone();
-
- virtual int OnTakeDamage( const CTakeDamageInfo &info );
-
- void Blocked( CBaseEntity *pOther );
- bool KeyValue( const char *szKeyName, const char *szValue );
-
- virtual int DrawDebugTextOverlays();
- void DrawDebugGeometryOverlays();
-
- void Next( void );
- void Find( void );
- void NearestPath( void );
- void DeadEnd( void );
-
- void SetTrack( CPathTrack *track ) { m_ppath = track->Nearest(GetLocalOrigin()); }
- void SetControls( CBaseEntity *pControls );
- bool OnControls( CBaseEntity *pControls );
-
- void SoundStop( void );
- void SoundUpdate( void );
-
- void Start( void );
- void Stop( void );
-
- bool IsDirForward();
- void SetDirForward( bool bForward );
- void SetSpeed( float flSpeed, bool bAccel = false );
- void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value );
- void SetSpeedDirAccel( float flNewSpeed );
-
- // Input handlers
- void InputSetSpeed( inputdata_t &inputdata );
- void InputSetSpeedDir( inputdata_t &inputdata );
- void InputSetSpeedReal( inputdata_t &inputdata );
- void InputStop( inputdata_t &inputdata );
- void InputResume( inputdata_t &inputdata );
- void InputReverse( inputdata_t &inputdata );
- void InputStartForward( inputdata_t &inputdata );
- void InputStartBackward( inputdata_t &inputdata );
- void InputToggle( inputdata_t &inputdata );
- void InputSetSpeedDirAccel( inputdata_t &inputdata );
- void InputTeleportToPathTrack( inputdata_t &inputdata );
- void InputSetSpeedForwardModifier( inputdata_t &inputdata );
-
- static CFuncTrackTrain *Instance( edict_t *pent );
-
-#ifdef TF_DLL
- int UpdateTransmitState()
- {
- return SetTransmitState( FL_EDICT_ALWAYS );
- }
-#endif
-
- DECLARE_DATADESC();
-
- virtual int ObjectCaps( void ) { return BaseClass::ObjectCaps() | FCAP_DIRECTIONAL_USE | FCAP_USE_ONGROUND; }
-
- virtual void OnRestore( void );
-
- float GetMaxSpeed() const { return m_maxSpeed; }
- float GetCurrentSpeed() const { return m_flSpeed; }
- float GetDesiredSpeed() const { return m_flDesiredSpeed;}
-
- virtual bool IsBaseTrain( void ) const { return true; }
-
- void SetSpeedForwardModifier( float flModifier );
- void SetBlockDamage( float flDamage ) { m_flBlockDamage = flDamage; }
- void SetDamageChild( bool bDamageChild ) { m_bDamageChild = bDamageChild; }
-
-private:
-
- void ArriveAtNode( CPathTrack *pNode );
- void FirePassInputs( CPathTrack *pStart, CPathTrack *pEnd, bool forward );
-
-public:
-
- // UNDONE: Add accessors?
- CPathTrack *m_ppath;
- float m_length;
-
-#ifdef HL1_DLL
- bool m_bOnTrackChange; // we don't want to find a new node if we restore while
- // riding on a func_trackchange
-#endif
-
-private:
-
- TrainVelocityType_t GetTrainVelocityType();
- void UpdateTrainVelocity( CPathTrack *pnext, CPathTrack *pNextNext, const Vector &nextPos, float flInterval );
-
- TrainOrientationType_t GetTrainOrientationType();
- void UpdateTrainOrientation( CPathTrack *pnext, CPathTrack *pNextNext, const Vector &nextPos, float flInterval );
- void UpdateOrientationAtPathTracks( CPathTrack *pnext, CPathTrack *pNextNext, const Vector &nextPos, float flInterval );
- void UpdateOrientationBlend( TrainOrientationType_t eOrientationType, CPathTrack *pPrev, CPathTrack *pNext, const Vector &nextPos, float flInterval );
- void DoUpdateOrientation( const QAngle &curAngles, const QAngle &angles, float flInterval );
-
- void TeleportToPathTrack( CPathTrack *pTeleport );
-
-
- Vector m_controlMins;
- Vector m_controlMaxs;
- Vector m_lastBlockPos; // These are used to build a heuristic decision about being temporarily blocked by physics objects
- int m_lastBlockTick; // ^^^^^^^
- float m_flVolume;
- float m_flBank;
- float m_oldSpeed;
- float m_flBlockDamage; // Damage to inflict when blocked.
- float m_height;
- float m_maxSpeed;
- float m_dir;
-
-
- string_t m_iszSoundMove; // Looping sound to play while moving. Pitch shifted based on speed.
- string_t m_iszSoundMovePing; // Ping sound to play while moving. Interval decreased based on speed.
- string_t m_iszSoundStart; // Sound to play when starting to move.
- string_t m_iszSoundStop; // Sound to play when stopping.
-
- float m_flMoveSoundMinTime; // The most often to play the move 'ping' sound (used at max speed)
- float m_flMoveSoundMaxTime; // The least often to play the move 'ping' sound (used approaching zero speed)
- float m_flNextMoveSoundTime;
-
- int m_nMoveSoundMinPitch; // The sound pitch to approach as we come to a stop
- int m_nMoveSoundMaxPitch; // The sound pitch to approach as we approach our max speed (actually, it's hardcoded to 1000 in/sec)
-
- TrainOrientationType_t m_eOrientationType;
- TrainVelocityType_t m_eVelocityType;
- bool m_bSoundPlaying;
-
- COutputEvent m_OnStart,m_OnNext;
-
- bool m_bManualSpeedChanges; // set when we want to send entity IO to govern speed and obey our TrainVelocityType_t
- float m_flDesiredSpeed; // target speed, when m_bManualSpeedChanges is set
- float m_flSpeedChangeTime;
- float m_flAccelSpeed;
- float m_flDecelSpeed;
- bool m_bAccelToSpeed;
-
- float m_flNextMPSoundTime;
-
- float m_flSpeedForwardModifier;
- float m_flUnmodifiedDesiredSpeed;
-
- bool m_bDamageChild;
-};
-
-
-#endif // TRAINS_H
+//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//=============================================================================// + +#ifndef TRAINS_H +#define TRAINS_H +#ifdef _WIN32 +#pragma once +#endif + + +#include "entityoutput.h" +#include "pathtrack.h" + + +// Spawnflags of CPathCorner +#define SF_CORNER_WAITFORTRIG 0x001 +#define SF_CORNER_TELEPORT 0x002 + +// Tracktrain spawn flags +#define SF_TRACKTRAIN_NOPITCH 0x0001 +#define SF_TRACKTRAIN_NOCONTROL 0x0002 +#define SF_TRACKTRAIN_FORWARDONLY 0x0004 +#define SF_TRACKTRAIN_PASSABLE 0x0008 +#define SF_TRACKTRAIN_FIXED_ORIENTATION 0x0010 +#define SF_TRACKTRAIN_HL1TRAIN 0x0080 +#define SF_TRACKTRAIN_USE_MAXSPEED_FOR_PITCH 0x0100 +#define SF_TRACKTRAIN_UNBLOCKABLE_BY_PLAYER 0x0200 + +#define TRAIN_ACTIVE 0x80 +#define TRAIN_NEW 0xc0 +#define TRAIN_OFF 0x00 +#define TRAIN_NEUTRAL 0x01 +#define TRAIN_SLOW 0x02 +#define TRAIN_MEDIUM 0x03 +#define TRAIN_FAST 0x04 +#define TRAIN_BACK 0x05 + + +enum TrainVelocityType_t +{ + TrainVelocity_Instantaneous = 0, + TrainVelocity_LinearBlend, + TrainVelocity_EaseInEaseOut, +}; + + +enum TrainOrientationType_t +{ + TrainOrientation_Fixed = 0, + TrainOrientation_AtPathTracks, + TrainOrientation_LinearBlend, + TrainOrientation_EaseInEaseOut, +}; + +class CFuncTrackTrain : public CBaseEntity +{ + DECLARE_CLASS( CFuncTrackTrain, CBaseEntity ); + DECLARE_SERVERCLASS(); + +public: + CFuncTrackTrain(); + + void Spawn( void ); + bool CreateVPhysics( void ); + void Precache( void ); + void UpdateOnRemove(); + void MoveDone(); + + virtual int OnTakeDamage( const CTakeDamageInfo &info ); + + void Blocked( CBaseEntity *pOther ); + bool KeyValue( const char *szKeyName, const char *szValue ); + + virtual int DrawDebugTextOverlays(); + void DrawDebugGeometryOverlays(); + + void Next( void ); + void Find( void ); + void NearestPath( void ); + void DeadEnd( void ); + + void SetTrack( CPathTrack *track ) { m_ppath = track->Nearest(GetLocalOrigin()); } + void SetControls( CBaseEntity *pControls ); + bool OnControls( CBaseEntity *pControls ); + + void SoundStop( void ); + void SoundUpdate( void ); + + void Start( void ); + void Stop( void ); + + bool IsDirForward(); + void SetDirForward( bool bForward ); + void SetSpeed( float flSpeed, bool bAccel = false ); + void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value ); + void SetSpeedDirAccel( float flNewSpeed ); + + // Input handlers + void InputSetSpeed( inputdata_t &inputdata ); + void InputSetSpeedDir( inputdata_t &inputdata ); + void InputSetSpeedReal( inputdata_t &inputdata ); + void InputStop( inputdata_t &inputdata ); + void InputResume( inputdata_t &inputdata ); + void InputReverse( inputdata_t &inputdata ); + void InputStartForward( inputdata_t &inputdata ); + void InputStartBackward( inputdata_t &inputdata ); + void InputToggle( inputdata_t &inputdata ); + void InputSetSpeedDirAccel( inputdata_t &inputdata ); + void InputTeleportToPathTrack( inputdata_t &inputdata ); + void InputSetSpeedForwardModifier( inputdata_t &inputdata ); + + static CFuncTrackTrain *Instance( edict_t *pent ); + +#ifdef TF_DLL + int UpdateTransmitState() + { + return SetTransmitState( FL_EDICT_ALWAYS ); + } +#endif + + DECLARE_DATADESC(); + + virtual int ObjectCaps( void ) { return BaseClass::ObjectCaps() | FCAP_DIRECTIONAL_USE | FCAP_USE_ONGROUND; } + + virtual void OnRestore( void ); + + float GetMaxSpeed() const { return m_maxSpeed; } + float GetCurrentSpeed() const { return m_flSpeed; } + float GetDesiredSpeed() const { return m_flDesiredSpeed;} + + virtual bool IsBaseTrain( void ) const { return true; } + + void SetSpeedForwardModifier( float flModifier ); + void SetBlockDamage( float flDamage ) { m_flBlockDamage = flDamage; } + void SetDamageChild( bool bDamageChild ) { m_bDamageChild = bDamageChild; } + +private: + + void ArriveAtNode( CPathTrack *pNode ); + void FirePassInputs( CPathTrack *pStart, CPathTrack *pEnd, bool forward ); + +public: + + // UNDONE: Add accessors? + CPathTrack *m_ppath; + float m_length; + +#ifdef HL1_DLL + bool m_bOnTrackChange; // we don't want to find a new node if we restore while + // riding on a func_trackchange +#endif + +private: + + TrainVelocityType_t GetTrainVelocityType(); + void UpdateTrainVelocity( CPathTrack *pnext, CPathTrack *pNextNext, const Vector &nextPos, float flInterval ); + + TrainOrientationType_t GetTrainOrientationType(); + void UpdateTrainOrientation( CPathTrack *pnext, CPathTrack *pNextNext, const Vector &nextPos, float flInterval ); + void UpdateOrientationAtPathTracks( CPathTrack *pnext, CPathTrack *pNextNext, const Vector &nextPos, float flInterval ); + void UpdateOrientationBlend( TrainOrientationType_t eOrientationType, CPathTrack *pPrev, CPathTrack *pNext, const Vector &nextPos, float flInterval ); + void DoUpdateOrientation( const QAngle &curAngles, const QAngle &angles, float flInterval ); + + void TeleportToPathTrack( CPathTrack *pTeleport ); + + + Vector m_controlMins; + Vector m_controlMaxs; + Vector m_lastBlockPos; // These are used to build a heuristic decision about being temporarily blocked by physics objects + int m_lastBlockTick; // ^^^^^^^ + float m_flVolume; + float m_flBank; + float m_oldSpeed; + float m_flBlockDamage; // Damage to inflict when blocked. + float m_height; + float m_maxSpeed; + float m_dir; + + + string_t m_iszSoundMove; // Looping sound to play while moving. Pitch shifted based on speed. + string_t m_iszSoundMovePing; // Ping sound to play while moving. Interval decreased based on speed. + string_t m_iszSoundStart; // Sound to play when starting to move. + string_t m_iszSoundStop; // Sound to play when stopping. + + float m_flMoveSoundMinTime; // The most often to play the move 'ping' sound (used at max speed) + float m_flMoveSoundMaxTime; // The least often to play the move 'ping' sound (used approaching zero speed) + float m_flNextMoveSoundTime; + + int m_nMoveSoundMinPitch; // The sound pitch to approach as we come to a stop + int m_nMoveSoundMaxPitch; // The sound pitch to approach as we approach our max speed (actually, it's hardcoded to 1000 in/sec) + + TrainOrientationType_t m_eOrientationType; + TrainVelocityType_t m_eVelocityType; + bool m_bSoundPlaying; + + COutputEvent m_OnStart,m_OnNext; + + bool m_bManualSpeedChanges; // set when we want to send entity IO to govern speed and obey our TrainVelocityType_t + float m_flDesiredSpeed; // target speed, when m_bManualSpeedChanges is set + float m_flSpeedChangeTime; + float m_flAccelSpeed; + float m_flDecelSpeed; + bool m_bAccelToSpeed; + + float m_flNextMPSoundTime; + + float m_flSpeedForwardModifier; + float m_flUnmodifiedDesiredSpeed; + + bool m_bDamageChild; +}; + + +#endif // TRAINS_H |