00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00027 #ifndef _RACEMANV1_H_
00028 #define _RACEMANV1_H_
00029
00030 #include <tgf.h>
00031 #include <car.h>
00032 #include <track.h>
00033 #include <graphic.h>
00034 #include <simu.h>
00035
00036 #define RCM_IDENT 0
00037
00038 struct RmInfo;
00039
00040 typedef int (*tfRmRunState) (struct RmInfo *);
00041
00042 #define RM_SYNC 0x00000001
00043 #define RM_ASYNC 0x00000002
00044
00045 #define RM_END_RACE 0x00000010
00046 #define RM_CONTINUE_RACE 0x00000020
00047
00048 #define RM_NEXT_STEP 0x00000100
00049 #define RM_NEXT_RACE 0x00000200
00050 #define RM_NEXT_EVENT 0x00000400
00051
00052 #define RM_ACTIVGAMESCR 0x01000000
00053 #define RM_QUIT 0x40000000
00054
00055
00056 #define RCM_MAX_DT_SIMU 0.002
00057 #define RCM_MAX_DT_ROBOTS 0.02
00058
00060 typedef struct {
00061 int ncars;
00062 int totLaps;
00063 int state;
00064 #define RM_RACE_RUNNING 0X00000001
00065 #define RM_RACE_FINISHING 0X00000002
00066 #define RM_RACE_ENDED 0X00000004
00067 #define RM_RACE_STARTING 0X00000008
00068 #define RM_RACE_PRESTART 0X00000010
00069 #define RM_RACE_PAUSED 0X40000000
00070 int type;
00071 #define RM_TYPE_PRACTICE 0
00072 #define RM_TYPE_QUALIF 1
00073 #define RM_TYPE_RACE 2
00074 int maxDammage;
00075 unsigned long fps;
00076 } tRaceAdmInfo;
00077
00078 #define _ncars raceInfo.ncars
00079 #define _totLaps raceInfo.totLaps
00080 #define _raceState raceInfo.state
00081 #define _raceType raceInfo.type
00082 #define _maxDammage raceInfo.maxDammage
00083
00085 typedef struct Situation {
00086 tRaceAdmInfo raceInfo;
00087 double deltaTime;
00088 double currentTime;
00089 int nbPlayers;
00090 tCarElt **cars;
00091 } tSituation;
00092
00094 typedef struct
00095 {
00096 tTrackItf trackItf;
00097 tGraphicItf graphicItf;
00098 tSimItf simItf;
00099 } tRaceModIft;
00100
00101 #define RE_STATE_CONFIG 0
00102 #define RE_STATE_EVENT_INIT 1
00103 #define RE_STATE_PRE_RACE 3
00104 #define RE_STATE_RACE_START 5
00105 #define RE_STATE_RACE 6
00106 #define RE_STATE_RACE_STOP 7
00107 #define RE_STATE_RACE_END 8
00108 #define RE_STATE_POST_RACE 9
00109 #define RE_STATE_EVENT_SHUTDOWN 11
00110 #define RE_STATE_SHUTDOWN 12
00111 #define RE_STATE_ERROR 13
00112 #define RE_STATE_EXIT 14
00113
00115 typedef struct
00116 {
00117 tTrkLocPos prevTrkPos;
00118 tdble sTime;
00119 int lapFlag;
00120 char *raceMsg;
00121 double totalPitTime;
00122 double startPitTime;
00123 tdble topSpd;
00124 tdble botSpd;
00125 tdble fuel;
00126 } tReCarInfo;
00127
00131 typedef struct
00132 {
00133 int state;
00134 void *param;
00135 tRaceModIft itf;
00136 void *gameScreen;
00137 void *menuScreen;
00138 char *filename;
00139 char *name;
00140 char *raceName;
00141 tReCarInfo *carInfo;
00142 double curTime;
00143 double lastTime;
00144 double timeMult;
00145 int running;
00146 #define RM_DISP_MODE_NORMAL 0
00147 #define RM_DISP_MODE_CAPTURE 1
00148 #define RM_DISP_MODE_NONE 2
00149 int displayMode;
00150 int refreshDisplay;
00151 } tRaceEngineInfo;
00152
00153 #define _reState raceEngineInfo.state
00154 #define _reParam raceEngineInfo.param
00155 #define _reRacemanItf raceEngineInfo.itf.racemanItf
00156 #define _reTrackItf raceEngineInfo.itf.trackItf
00157 #define _reGraphicItf raceEngineInfo.itf.graphicItf
00158 #define _reSimItf raceEngineInfo.itf.simItf
00159 #define _reGameScreen raceEngineInfo.gameScreen
00160 #define _reMenuScreen raceEngineInfo.menuScreen
00161 #define _reFilename raceEngineInfo.filename
00162 #define _reName raceEngineInfo.name
00163 #define _reRaceName raceEngineInfo.raceName
00164 #define _reCarInfo raceEngineInfo.carInfo
00165 #define _reCurTime raceEngineInfo.curTime
00166 #define _reTimeMult raceEngineInfo.timeMult
00167 #define _reRunning raceEngineInfo.running
00168 #define _reLastTime raceEngineInfo.lastTime
00169 #define _displayMode raceEngineInfo.displayMode
00170 #define _refreshDisplay raceEngineInfo.refreshDisplay
00171
00172 #define RM_PNST_DRIVETHROUGH 0x00000001
00173 #define RM_PNST_STOPANDGO 0x00000002
00174 #define RM_PNST_STOPANDGO_OK 0x00000004
00175 #define RM_PNST_SPD 0x00010000
00176 #define RM_PNST_STNGO 0x00020000
00177
00178 typedef struct RmCarRules
00179 {
00180 int ruleState;
00181 } tRmCarRules;
00182
00183 typedef struct RmMovieCapture
00184 {
00185 int enabled;
00186 int state;
00187 double deltaSimu;
00188 double deltaFrame;
00189 double lastFrame;
00190 char *outputBase;
00191 int currentCapture;
00192 int currentFrame;
00193 } tRmMovieCapture;
00194
00195
00199 typedef struct RmInfo
00200 {
00201 tCarElt *carList;
00202 tSituation *s;
00203 tTrack *track;
00204 void *params;
00205 void *results;
00206 tModList **modList;
00207 tRmCarRules *rules;
00208 tRaceEngineInfo raceEngineInfo;
00209 tRmMovieCapture movieCapture;
00210 } tRmInfo;
00211
00212
00213
00214
00215 #define RM_SECT_HEADER "Header"
00216 #define RM_SECT_DRIVERS "Drivers"
00217 #define RM_SECT_STARTINGGRID "Starting Grid"
00218 #define RM_SECT_RACES "Races"
00219 #define RM_SECT_TRACKS "Tracks"
00220 #define RM_SECT_CONF "Configuration"
00221 #define RM_SECT_OPTIONS "Options"
00222 #define RM_SECT_POINTS "Points"
00223
00224 #define RM_SECT_DRIVERS_RACING "Drivers Start List"
00225
00226 #define RM_ATTR_CUR_CONF "current configuration"
00227 #define RM_ATTR_START_ORDER "starting order"
00228 #define RM_ATTR_ALLOW_RESTART "restart"
00229 #define RM_ATTR_MUST_COMPLETE "must complete"
00230 #define RM_ATTR_SPLASH_MENU "splash menu"
00231 #define RM_ATTR_DISP_START_GRID "display starting grid"
00232
00233 #define RM_ATTR_MAXNUM "maximum number"
00234 #define RM_ATTR_MAX_DRV "maximum drivers"
00235 #define RM_ATTR_CAR "car"
00236
00237 #define RM_ATTR_PRIO "priority"
00238 #define RM_ATTR_NAME "name"
00239 #define RM_ATTR_DRVNAME "driver name"
00240 #define RM_ATTR_CATEGORY "category"
00241 #define RM_ATTR_DESCR "description"
00242 #define RM_ATTR_BGIMG "menu image"
00243 #define RM_ATTR_RUNIMG "run image"
00244 #define RM_ATTR_STARTIMG "start image"
00245
00246 #define RM_ATTR_MODULE "module"
00247 #define RM_ATTR_IDX "idx"
00248 #define RM_ATTR_FOCUSED "focused module"
00249 #define RM_ATTR_FOCUSEDIDX "focused idx"
00250 #define RM_ATTR_DISPMODE "display mode"
00251 #define RM_ATTR_DISPRES "display results"
00252
00253 #define RM_ATTR_TIMESTEP "time step"
00254
00255 #define RM_ATTR_TYPE "type"
00256 #define RM_ATTR_RACE "race"
00257 #define RM_ATTR_ROWS "rows"
00258 #define RM_ATTR_TOSTART "distance to start"
00259 #define RM_ATTR_COLDIST "distance between columns"
00260 #define RM_ATTR_COLOFFSET "offset within a column"
00261 #define RM_ATTR_INITSPEED "initial speed"
00262 #define RM_ATTR_INITHEIGHT "initial height"
00263 #define RM_ATTR_SHOW_RACE "show race"
00264 #define RM_ATTR_MAX_DMG "maximum dammage"
00265 #define RM_ATTR_DISTANCE "distance"
00266 #define RM_ATTR_LAPS "laps"
00267 #define RM_ATTR_QUAL_LAPS "Qualification laps"
00268 #define RM_ATTR_POLE "pole position side"
00269
00270 #define RM_ATTR_POINTS "points"
00271
00272 #define RM_VAL_TRACKSEL "track select"
00273 #define RM_VAL_DRVSEL "drivers select"
00274 #define RM_VAL_RACECONF "race config"
00275 #define RM_VAL_CONFRACELEN "race length"
00276 #define RM_VAL_CONFDISPMODE "display mode"
00277
00278 #define RM_VAL_DRV_LIST_ORDER "drivers list"
00279 #define RM_VAL_LAST_RACE_ORDER "last race"
00280 #define RM_VAL_LAST_RACE_RORDER "last race reversed"
00281
00282 #define RM_VAL_RACE "race"
00283 #define RM_VAL_QUALIF "qualifications"
00284 #define RM_VAL_PRACTICE "practice"
00285
00286 #define RM_VAL_YES "yes"
00287 #define RM_VAL_NO "no"
00288
00289 #define RM_VAL_VISIBLE "normal"
00290 #define RM_VAL_INVISIBLE "results only"
00291
00292
00293 #define RM_SECT_MOVIE_CAPTURE "Movie Capture"
00294
00295 #define RM_ATT_CAPTURE_ENABLE "enable capture"
00296 #define RM_ATT_CAPTURE_FPS "fps"
00297 #define RM_ATT_CAPTURE_OUT_DIR "output directory"
00298
00299
00300
00301 #define RE_SECT_HEADER "Header"
00302 #define RE_ATTR_DATE "date"
00303 #define RE_ATTR_TYPE "race"
00304
00305 #define RE_SECT_CURRENT "Current"
00306 #define RE_ATTR_CUR_RACE "current race"
00307 #define RE_ATTR_CUR_TRACK "current track"
00308 #define RE_ATTR_CUR_DRIVER "current driver"
00309
00310 #define RE_SECT_DRIVERS "Drivers"
00311 #define RE_SECT_DRIVER "Driver"
00312 #define RE_ATTR_DLL_NAME "dll name"
00313 #define RE_ATTR_INDEX "index"
00314
00315 #define RE_SECT_STANDINGS "Standings"
00316
00317 #define RE_SECT_RESULTS "Results"
00318 #define RE_SECT_STARTINGGRID "Starting Grid"
00319
00320 #define RE_SECT_QUALIF "Qualifications"
00321
00322 #define RE_SECT_FINAL "Final"
00323
00324 #define RE_SECT_RANK "Rank"
00325
00326 #define RE_ATTR_NAME "name"
00327 #define RE_ATTR_CAR "car"
00328 #define RE_ATTR_MODULE "module"
00329 #define RE_ATTR_IDX "idx"
00330 #define RE_ATTR_LAPS "laps"
00331 #define RE_ATTR_BEST_LAP_TIME "best lap time"
00332 #define RE_ATTR_TIME "time"
00333 #define RE_ATTR_TOP_SPEED "top speed"
00334 #define RE_ATTR_BOT_SPEED "bottom speed"
00335 #define RE_ATTR_DAMMAGES "dammages"
00336 #define RE_ATTR_NB_PIT_STOPS "pits stops"
00337 #define RE_ATTR_POINTS "points"
00338
00339 #endif
00340
00341
00342