171 lines
4.9 KiB
C
171 lines
4.9 KiB
C
|
//-----------------------------------------------------------------------------
|
||
|
//
|
||
|
// $Logfile:: /Quake 2 Engine/Sin/code/game/turret.h $
|
||
|
// $Revision:: 14 $
|
||
|
// $Author:: Markd $
|
||
|
// $Date:: 10/15/98 3:37p $
|
||
|
//
|
||
|
// Copyright (C) 1997 by Ritual Entertainment, Inc.
|
||
|
// All rights reserved.
|
||
|
//
|
||
|
// This source is may not be distributed and/or modified without
|
||
|
// expressly written permission by Ritual Entertainment, Inc.
|
||
|
//
|
||
|
// $Log:: /Quake 2 Engine/Sin/code/game/turret.h $
|
||
|
//
|
||
|
// 14 10/15/98 3:37p Markd
|
||
|
// Added forcefield to turrets with no health
|
||
|
//
|
||
|
// 13 10/09/98 4:55p Markd
|
||
|
// Added ExecuteThread
|
||
|
//
|
||
|
// 12 9/30/98 4:37p Aldie
|
||
|
// Fixed some weirdness with turrets not responding
|
||
|
//
|
||
|
// 11 9/22/98 4:57p Aldie
|
||
|
// Moved lagtime check right before firing
|
||
|
//
|
||
|
// 10 9/21/98 4:21p Markd
|
||
|
// Put in archive functions and rewrote all archive routines
|
||
|
//
|
||
|
// 9 9/20/98 9:11p Aldie
|
||
|
// Added lagtime and patience
|
||
|
//
|
||
|
// 8 9/20/98 5:13p Aldie
|
||
|
// Fixed some stuff with thread and target when turret sees player
|
||
|
//
|
||
|
// 7 9/19/98 6:15p Aldie
|
||
|
// Added thread to turrets
|
||
|
//
|
||
|
// 6 7/10/98 3:08p Aldie
|
||
|
// Activate and deactivate turrets
|
||
|
//
|
||
|
// 5 7/07/98 4:12p Aldie
|
||
|
// Updated to new class hierarchy
|
||
|
//
|
||
|
// 3 10/27/97 2:59p Jimdose
|
||
|
// Removed dependency on quakedef.h
|
||
|
//
|
||
|
// 2 9/26/97 5:23p Jimdose
|
||
|
// Added standard Ritual headers
|
||
|
//
|
||
|
// DESCRIPTION:
|
||
|
// Script controlled turret.
|
||
|
//
|
||
|
|
||
|
#ifndef __TURRET_H__
|
||
|
#define __TURRET_H__
|
||
|
|
||
|
#include "sentient.h"
|
||
|
|
||
|
#define TURRET_OUTOFRANGE 0
|
||
|
#define TURRET_WAKEUPRANGE 1
|
||
|
#define TURRET_FIRERANGE 2
|
||
|
|
||
|
class EXPORT_FROM_DLL Turret : public Sentient
|
||
|
{
|
||
|
protected:
|
||
|
int base;
|
||
|
int enemy;
|
||
|
float lastSightTime;
|
||
|
qboolean active;
|
||
|
qboolean attacking;
|
||
|
qboolean turning;
|
||
|
float neworientation;
|
||
|
float turntime;
|
||
|
float lagtime;
|
||
|
float firetime;
|
||
|
float patience;
|
||
|
int wakeupdistance;
|
||
|
int firingdistance;
|
||
|
qboolean activated;
|
||
|
str thread;
|
||
|
str sight_target;
|
||
|
|
||
|
public:
|
||
|
CLASS_PROTOTYPE( Turret );
|
||
|
|
||
|
Turret();
|
||
|
|
||
|
virtual qboolean CanSee( Entity *ent );
|
||
|
virtual int Range( float dist );
|
||
|
virtual float Distance( Entity *targ );
|
||
|
virtual void Pain( Event *ev );
|
||
|
virtual void Killed( Event *ev );
|
||
|
virtual qboolean FindTarget( void );
|
||
|
virtual float AdjustAngle( float maxadjust, float currangle, float targetangle );
|
||
|
virtual void Seek( Event *ev );
|
||
|
virtual void Fire( Event *ev );
|
||
|
virtual void Turn( Event *ev );
|
||
|
virtual void EndSeek( Event *ev );
|
||
|
virtual void CheckVicinity( Event *ev );
|
||
|
virtual void GoUp( Event *ev );
|
||
|
virtual void GoDown( Event *ev );
|
||
|
virtual void Down( Event *ev );
|
||
|
virtual void AttackStart( Event *ev );
|
||
|
virtual void AttackFinished( Event *ev );
|
||
|
virtual void Activate( Event *ev );
|
||
|
virtual void Deactivate( Event *ev );
|
||
|
virtual void Lagtime( Event *ev );
|
||
|
virtual void SetSightTime( Event *ev );
|
||
|
virtual void Archive( Archiver &arc );
|
||
|
virtual void Unarchive( Archiver &arc );
|
||
|
};
|
||
|
|
||
|
extern Event EV_Turret_GoUp;
|
||
|
extern Event EV_Turret_GoDown;
|
||
|
extern Event EV_Turret_Turn;
|
||
|
extern Event EV_Turret_Seek;
|
||
|
extern Event EV_Turret_Attack;
|
||
|
|
||
|
inline EXPORT_FROM_DLL void Turret::Archive
|
||
|
(
|
||
|
Archiver &arc
|
||
|
)
|
||
|
{
|
||
|
Sentient::Archive( arc );
|
||
|
arc.WriteInteger( base );
|
||
|
arc.WriteInteger( enemy );
|
||
|
arc.WriteFloat( lastSightTime );
|
||
|
arc.WriteBoolean( active );
|
||
|
arc.WriteBoolean( attacking );
|
||
|
arc.WriteBoolean( turning );
|
||
|
arc.WriteFloat( neworientation );
|
||
|
arc.WriteFloat( turntime );
|
||
|
arc.WriteFloat( lagtime );
|
||
|
arc.WriteFloat( firetime );
|
||
|
arc.WriteFloat( patience );
|
||
|
arc.WriteInteger( wakeupdistance );
|
||
|
arc.WriteInteger( firingdistance );
|
||
|
arc.WriteBoolean( activated );
|
||
|
arc.WriteString( thread );
|
||
|
arc.WriteString( sight_target );
|
||
|
}
|
||
|
|
||
|
inline EXPORT_FROM_DLL void Turret::Unarchive
|
||
|
(
|
||
|
Archiver &arc
|
||
|
)
|
||
|
{
|
||
|
Sentient::Unarchive( arc );
|
||
|
arc.ReadInteger( &base );
|
||
|
arc.ReadInteger( &enemy );
|
||
|
arc.ReadFloat( &lastSightTime );
|
||
|
arc.ReadBoolean( &active );
|
||
|
arc.ReadBoolean( &attacking );
|
||
|
arc.ReadBoolean( &turning );
|
||
|
arc.ReadFloat( &neworientation );
|
||
|
arc.ReadFloat( &turntime );
|
||
|
arc.ReadFloat( &lagtime );
|
||
|
arc.ReadFloat( &firetime );
|
||
|
arc.ReadFloat( &patience );
|
||
|
arc.ReadInteger( &wakeupdistance );
|
||
|
arc.ReadInteger( &firingdistance );
|
||
|
arc.ReadBoolean( &activated );
|
||
|
arc.ReadString( &thread );
|
||
|
arc.ReadString( &sight_target );
|
||
|
}
|
||
|
|
||
|
|
||
|
#endif /* turret.h */
|