Main Page | Alphabetical List | Compound List | File List | Compound Members | File Members

track.h

Go to the documentation of this file.
00001 #ifndef TRACK_H
00002 #define TRACK_H
00003 
00004 #include        "genesis.h"
00005 #include    "bit.h"
00006 #include        "genvsi.h"
00007 
00008 // For ease of development these are set up as static sized arrays 
00009 // Can be changed later if needed 
00010 
00011 #define MAX_TRACKS 100
00012 #define MAX_TRACK_POINTS 30
00013 #define MAX_TRACK_VIS 20
00014 
00015 typedef struct Track Track;
00016 
00017 typedef struct 
00018     {
00019         geVec3d *Pos;
00020     geVec3d *WatchPos;
00021     int32 Action;
00022     int32 ShootTimes;
00023     int32 ActionDir;
00024         int32 Flags;
00025         float           Time;
00026         float           Dist;
00027         float           VelocityScale;
00028     }TrackPt;
00029 
00030 typedef struct Track
00031     {
00032     TrackPt                     PointList[MAX_TRACK_POINTS];
00033     int32                       PointCount;
00034         int32                   Type;
00035     int32                       Flags;
00036         Track*          Vis[MAX_TRACK_VIS+1];
00037         int32                   VisFlag[MAX_TRACK_VIS+1];
00038         }Track;
00039     
00040 
00041 typedef struct
00042     {
00043     int32           TrackNdx;
00044     int32                       PointNdx;
00045         int32                   TrackDir;
00046     }TrackData;
00047 
00048 typedef struct TrackCB
00049         {
00050         geBoolean (*CB)(GenVSI *VSI, void *Data, Track *Track);
00051         void *Data;
00052         }TrackCB;
00053 
00054 extern int32 TrackCount;
00055 extern Track TrackList[];
00056 
00057 geBoolean Track_OnTrack(TrackData *td);
00058 void Track_ClearTrack(TrackData *td);
00059 Track *Track_GetTrack(TrackData *td);
00060 int32 Track_GetDir(TrackData *td);
00061 geBoolean Track_PastStartPoint(TrackData *td);
00062 TrackPt *Track_NextPoint(TrackData *td);
00063 TrackPt *Track_PrevPoint(TrackData *td);
00064 TrackPt *Track_GetPoint(TrackData *td);
00065 float Track_Length(Track* t);
00066 TrackPt* Track_GetEndPoint(TrackData *td);
00067 TrackPt* Track_GetFirstPoint(TrackData *td);
00068 geBoolean Track_IsOneWay(Track *t);
00069 Track* Track_FindTrack(GenVSI *VSI, geVec3d *StartPos, geVec3d *TgtPos, int32 player_dir, int32 *track_type, TrackData *td);
00070 Track* Track_FindFarTrack(GenVSI *VSI, geVec3d *StartPos);
00071 geBoolean Track_FindMultiTrack(GenVSI *VSI, geVec3d *StartPos, geVec3d *EndPos, int32 dir, TrackCB*, Stack *nodestack);
00072 geBoolean Track_NextMultiTrack(GenVSI *VSI, geVec3d *StartPos, int32 TrackNdx, TrackData *td);
00073 void Track_LinkTracks(geWorld *World);
00074 Track* Track_GetNextTrack(Track *t);
00075 
00076 //=====================================================================================
00077 // TRACK TYPES
00078 //=====================================================================================
00079 
00080 #define TRACK_TYPE_UP                           1       // Gets bot higher
00081 #define TRACK_TYPE_DOWN                         2       // Gets bot lower
00082 #define TRACK_TYPE_ELEVATOR_UP          3       // 
00083 #define TRACK_TYPE_ELEVATOR_DOWN        4       // Shortcut - just fall down it
00084 #define TRACK_TYPE_MOVING_PLAT          5       // 
00085 #define TRACK_TYPE_SCAN                         6       // Run to this point and look for something else
00086 #define TRACK_TYPE_HIDE                         7       // Move to this point and wait for player
00087 #define TRACK_TYPE_EXIT                         8       // There is an exit here
00088 #define TRACK_TYPE_SCAN_HEALTH          9       // Bot can see health from here
00089 #define TRACK_TYPE_TRAVERSE                     10      // Traverse a obsticles
00090 #define TRACK_TYPE_SCAN_LOOP            11      // Run around in this loop to search for player
00091 #define TRACK_TYPE_SCAN_WEAPON_AMMO     12      // Bot can see weapons or ammo from here
00092 #define TRACK_TYPE_TRAVERSE_DOOR        13      // Bot can see weapons or ammo from here
00093 #define TRACK_TYPE_TRAVERSE_ONEWAY  14  // Bot can see weapons or ammo from here
00094 
00095 #define TRACK_FLAG_LOOP             BIT(0)
00096 
00097 //=====================================================================================
00098 //POINT TYPES
00099 //=====================================================================================
00100 
00101 #define POINT_TYPE_JUMP                                         1
00102 #define POINT_TYPE_WAIT_POINT_DIST              2
00103 #define POINT_TYPE_ROCKET_JUMP                          3
00104 #define POINT_TYPE_WAIT_FOR_PLAYER                      4               //
00105 #define POINT_TYPE_WAIT_POINT_VISIBLE       5           //doors
00106 #define POINT_TYPE_LOOK_FOR_ITEMS                       6
00107 #define POINT_TYPE_BLASTER_JUMP                         7
00108 
00109 #define POINT_TYPE_SHOOT_BLASTER                20
00110 #define POINT_TYPE_SHOOT_GRENADE                21
00111 #define POINT_TYPE_SHOOT_ROCKET                 22
00112 #define POINT_TYPE_SHOOT_SHREDDER               23
00113 
00114 #endif

Generated on Tue Sep 30 12:36:34 2003 for GTestAndEngine by doxygen 1.3.2