cs16-client-legacy/dlls/trains.h

120 lines
3.1 KiB
C++

/***
*
* Copyright (c) 1996-2002, Valve LLC. All rights reserved.
*
* This product contains software technology licensed from Id
* Software, Inc. ("Id Technology"). Id Technology (c) 1996 Id Software, Inc.
* All Rights Reserved.
*
* Use, distribution, and modification of this source code and/or resulting
* object code is restricted to non-commercial enhancements to products from
* Valve LLC. All other use, distribution, or modification is prohibited
* without written permission from Valve LLC.
*
****/
#ifndef TRAINS_H
#define TRAINS_H
#define SF_TRACKTRAIN_NOPITCH 0x0001
#define SF_TRACKTRAIN_NOCONTROL 0x0002
#define SF_TRACKTRAIN_FORWARDONLY 0x0004
#define SF_TRACKTRAIN_PASSABLE 0x0008
#define SF_PATH_DISABLED 0x00000001
#define SF_PATH_FIREONCE 0x00000002
#define SF_PATH_ALTREVERSE 0x00000004
#define SF_PATH_DISABLE_TRAIN 0x00000008
#define SF_PATH_ALTERNATE 0x00008000
#define SF_CORNER_WAITFORTRIG 0x001
#define SF_CORNER_TELEPORT 0x002
#define SF_CORNER_FIREONCE 0x004
class CPathTrack : public CPointEntity
{
public:
void Spawn(void);
void Activate(void);
void KeyValue(KeyValueData *pkvd);
int Save(CSave &save);
int Restore(CRestore &restore);
void SetPrevious(CPathTrack *pprevious);
void Link(void);
void Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
CPathTrack *ValidPath(CPathTrack *ppath, int testFlag);
void Project(CPathTrack *pstart, CPathTrack *pend, Vector *origin, float dist);
public:
static CPathTrack *Instance(edict_t *pent);
public:
CPathTrack *LookAhead(Vector *origin, float dist, int move);
CPathTrack *Nearest(Vector origin);
CPathTrack *GetNext(void);
CPathTrack *GetPrevious(void);
public:
static TYPEDESCRIPTION m_SaveData[];
public:
float m_length;
string_t m_altName;
CPathTrack *m_pnext;
CPathTrack *m_pprevious;
CPathTrack *m_paltpath;
};
class CFuncTrackTrain : public CBaseEntity
{
public:
void Spawn(void);
void Restart(void);
void Precache(void);
void Blocked(CBaseEntity *pOther);
void Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
void KeyValue(KeyValueData *pkvd);
int Save(CSave &save);
int Restore(CRestore &restore);
int ObjectCaps(void) { return (CBaseEntity::ObjectCaps() & ~FCAP_ACROSS_TRANSITION) | FCAP_DIRECTIONAL_USE; }
void OverrideReset(void);
public:
void EXPORT Next(void);
void EXPORT Find(void);
void EXPORT NearestPath(void);
void EXPORT DeadEnd(void);
public:
void NextThink(float thinkTime, BOOL alwaysThink);
void SetTrack(CPathTrack *track) { m_ppath = track->Nearest(pev->origin); }
void SetControls(entvars_t *pevControls);
BOOL OnControls(entvars_t *pev);
void StopSound(void);
void UpdateSound(void);
public:
static CFuncTrackTrain *Instance(edict_t *pent);
public:
static TYPEDESCRIPTION m_SaveData[];
public:
CPathTrack *m_ppath;
float m_length;
float m_height;
float m_speed;
float m_dir;
float m_startSpeed;
Vector m_controlMins;
Vector m_controlMaxs;
int m_soundPlaying;
int m_sounds;
float m_flVolume;
float m_flBank;
float m_oldSpeed;
private:
unsigned short m_usAdjustPitch;
};
#endif