/*************************************************************************** file : raceman.h created : Sun Jan 30 22:59:17 CET 2000 copyright : (C) 2000,2002 by Eric Espie email : torcs@free.fr version : $Id: raceman.h,v 1.28 2006/02/20 20:17:43 berniw Exp $ ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ /** @file This is the race information structures. @author Eric Espie @version $Id: raceman.h,v 1.28 2006/02/20 20:17:43 berniw Exp $ @ingroup raceinfo */ #ifndef _RACEMANV1_H_ #define _RACEMANV1_H_ #include #include #include #include #include #define RCM_IDENT 0 struct RmInfo; typedef int (*tfRmRunState) (struct RmInfo *); #define RM_SYNC 0x00000001 #define RM_ASYNC 0x00000002 #define RM_END_RACE 0x00000010 #define RM_CONTINUE_RACE 0x00000020 #define RM_NEXT_STEP 0x00000100 #define RM_NEXT_RACE 0x00000200 #define RM_NEXT_EVENT 0x00000400 #define RM_ACTIVGAMESCR 0x01000000 #define RM_QUIT 0x40000000 #define RCM_MAX_DT_SIMU 0.002 #define RCM_MAX_DT_ROBOTS 0.02 /** General info on current race */ typedef struct { int ncars; /**< number of cars */ int totLaps; /**< total laps */ int state; #define RM_RACE_RUNNING 0X00000001 #define RM_RACE_FINISHING 0X00000002 #define RM_RACE_ENDED 0X00000004 #define RM_RACE_STARTING 0X00000008 #define RM_RACE_PRESTART 0X00000010 #define RM_RACE_PAUSED 0X40000000 int type; /**< Race type */ #define RM_TYPE_PRACTICE 0 /* Please keep the order */ #define RM_TYPE_QUALIF 1 #define RM_TYPE_RACE 2 int maxDammage; unsigned long fps; } tRaceAdmInfo; #define _ncars raceInfo.ncars #define _totLaps raceInfo.totLaps #define _raceState raceInfo.state #define _raceType raceInfo.type #define _maxDammage raceInfo.maxDammage /** cars situation used to inform the GUI and the drivers */ typedef struct Situation { tRaceAdmInfo raceInfo; double deltaTime; double currentTime; /**< current time in sec since the beginning of the simulation */ int nbPlayers; /**< number of human player in local (splitted screen) */ tCarElt **cars; /**< list of cars */ } tSituation; /** Race Engine */ typedef struct { tTrackItf trackItf; tGraphicItf graphicItf; tSimItf simItf; } tRaceModIft; #define RE_STATE_CONFIG 0 #define RE_STATE_EVENT_INIT 1 #define RE_STATE_PRE_RACE 3 #define RE_STATE_RACE_START 5 #define RE_STATE_RACE 6 #define RE_STATE_RACE_STOP 7 #define RE_STATE_RACE_END 8 #define RE_STATE_POST_RACE 9 #define RE_STATE_EVENT_SHUTDOWN 11 #define RE_STATE_SHUTDOWN 12 #define RE_STATE_ERROR 13 #define RE_STATE_EXIT 14 /** Race Engine Car Information about the race */ typedef struct { tTrkLocPos prevTrkPos; tdble sTime; int lapFlag; char *raceMsg; double totalPitTime; double startPitTime; tdble topSpd; tdble botSpd; tdble fuel; } tReCarInfo; /** Race Engine Information. @image html raceenginestate.gif */ typedef struct { int state; void *param; tRaceModIft itf; void *gameScreen; void *menuScreen; char *filename; char *name; char *raceName; tReCarInfo *carInfo; double curTime; double lastTime; double timeMult; int running; #define RM_DISP_MODE_NORMAL 0 #define RM_DISP_MODE_CAPTURE 1 #define RM_DISP_MODE_NONE 2 int displayMode; int refreshDisplay; } tRaceEngineInfo; #define _reState raceEngineInfo.state #define _reParam raceEngineInfo.param #define _reRacemanItf raceEngineInfo.itf.racemanItf #define _reTrackItf raceEngineInfo.itf.trackItf #define _reGraphicItf raceEngineInfo.itf.graphicItf #define _reSimItf raceEngineInfo.itf.simItf #define _reGameScreen raceEngineInfo.gameScreen #define _reMenuScreen raceEngineInfo.menuScreen #define _reFilename raceEngineInfo.filename #define _reName raceEngineInfo.name #define _reRaceName raceEngineInfo.raceName #define _reCarInfo raceEngineInfo.carInfo #define _reCurTime raceEngineInfo.curTime #define _reTimeMult raceEngineInfo.timeMult #define _reRunning raceEngineInfo.running #define _reLastTime raceEngineInfo.lastTime #define _displayMode raceEngineInfo.displayMode #define _refreshDisplay raceEngineInfo.refreshDisplay #define RM_PNST_DRIVETHROUGH 0x00000001 #define RM_PNST_STOPANDGO 0x00000002 #define RM_PNST_STOPANDGO_OK 0x00000004 #define RM_PNST_SPD 0x00010000 #define RM_PNST_STNGO 0x00020000 typedef struct RmCarRules { int ruleState; } tRmCarRules; typedef struct RmMovieCapture { int enabled; int state; double deltaSimu; double deltaFrame; double lastFrame; char *outputBase; int currentCapture; int currentFrame; } tRmMovieCapture; /** * Race Manager General Info */ typedef struct RmInfo { tCarElt *carList; /**< List of all the cars racing */ tSituation *s; /**< Situation during race */ tTrack *track; /**< Current track */ void *params; /**< Raceman parameters */ void *results; /**< Race results */ tModList **modList; /**< drivers loaded */ tRmCarRules *rules; /**< by car rules */ tRaceEngineInfo raceEngineInfo; tRmMovieCapture movieCapture; } tRmInfo; /* * Parameters name definitions for Race Managers */ #define RM_SECT_HEADER "Header" #define RM_SECT_DRIVERS "Drivers" #define RM_SECT_STARTINGGRID "Starting Grid" #define RM_SECT_RACES "Races" #define RM_SECT_TRACKS "Tracks" #define RM_SECT_CONF "Configuration" #define RM_SECT_OPTIONS "Options" #define RM_SECT_POINTS "Points" #define RM_SECT_DRIVERS_RACING "Drivers Start List" #define RM_ATTR_CUR_CONF "current configuration" #define RM_ATTR_START_ORDER "starting order" #define RM_ATTR_ALLOW_RESTART "restart" #define RM_ATTR_MUST_COMPLETE "must complete" #define RM_ATTR_SPLASH_MENU "splash menu" #define RM_ATTR_DISP_START_GRID "display starting grid" #define RM_ATTR_MAXNUM "maximum number" #define RM_ATTR_MAX_DRV "maximum drivers" #define RM_ATTR_CAR "car" #define RM_ATTR_PRIO "priority" #define RM_ATTR_NAME "name" #define RM_ATTR_DRVNAME "driver name" #define RM_ATTR_CATEGORY "category" #define RM_ATTR_DESCR "description" #define RM_ATTR_BGIMG "menu image" #define RM_ATTR_RUNIMG "run image" #define RM_ATTR_STARTIMG "start image" #define RM_ATTR_MODULE "module" #define RM_ATTR_IDX "idx" #define RM_ATTR_FOCUSED "focused module" #define RM_ATTR_FOCUSEDIDX "focused idx" #define RM_ATTR_DISPMODE "display mode" #define RM_ATTR_DISPRES "display results" #define RM_ATTR_TIMESTEP "time step" #define RM_ATTR_TYPE "type" #define RM_ATTR_RACE "race" #define RM_ATTR_ROWS "rows" #define RM_ATTR_TOSTART "distance to start" #define RM_ATTR_COLDIST "distance between columns" #define RM_ATTR_COLOFFSET "offset within a column" #define RM_ATTR_INITSPEED "initial speed" #define RM_ATTR_INITHEIGHT "initial height" #define RM_ATTR_SHOW_RACE "show race" #define RM_ATTR_MAX_DMG "maximum dammage" #define RM_ATTR_DISTANCE "distance" #define RM_ATTR_LAPS "laps" #define RM_ATTR_QUAL_LAPS "Qualification laps" #define RM_ATTR_POLE "pole position side" #define RM_ATTR_CARSPERPIT "cars per pit" #define RM_ATTR_POINTS "points" #define RM_VAL_TRACKSEL "track select" #define RM_VAL_DRVSEL "drivers select" #define RM_VAL_RACECONF "race config" #define RM_VAL_CONFRACELEN "race length" #define RM_VAL_CONFDISPMODE "display mode" #define RM_VAL_DRV_LIST_ORDER "drivers list" #define RM_VAL_LAST_RACE_ORDER "last race" #define RM_VAL_LAST_RACE_RORDER "last race reversed" #define RM_VAL_RACE "race" #define RM_VAL_QUALIF "qualifications" #define RM_VAL_PRACTICE "practice" #define RM_VAL_YES "yes" #define RM_VAL_NO "no" #define RM_VAL_VISIBLE "normal" #define RM_VAL_INVISIBLE "results only" #define RM_SECT_MOVIE_CAPTURE "Movie Capture" #define RM_ATT_CAPTURE_ENABLE "enable capture" #define RM_ATT_CAPTURE_FPS "fps" #define RM_ATT_CAPTURE_OUT_DIR "output directory" /* RESULTS */ #define RE_SECT_HEADER "Header" #define RE_ATTR_DATE "date" #define RE_ATTR_TYPE "race" #define RE_SECT_CURRENT "Current" #define RE_ATTR_CUR_RACE "current race" #define RE_ATTR_CUR_TRACK "current track" #define RE_ATTR_CUR_DRIVER "current driver" #define RE_SECT_DRIVERS "Drivers" #define RE_SECT_DRIVER "Driver" #define RE_ATTR_DLL_NAME "dll name" #define RE_ATTR_INDEX "index" #define RE_SECT_STANDINGS "Standings" #define RE_SECT_RESULTS "Results" #define RE_SECT_STARTINGGRID "Starting Grid" #define RE_SECT_QUALIF "Qualifications" #define RE_SECT_FINAL "Final" #define RE_SECT_RANK "Rank" #define RE_ATTR_NAME "name" #define RE_ATTR_CAR "car" #define RE_ATTR_MODULE "module" #define RE_ATTR_IDX "idx" #define RE_ATTR_LAPS "laps" #define RE_ATTR_BEST_LAP_TIME "best lap time" #define RE_ATTR_TIME "time" #define RE_ATTR_TOP_SPEED "top speed" #define RE_ATTR_BOT_SPEED "bottom speed" #define RE_ATTR_DAMMAGES "dammages" #define RE_ATTR_NB_PIT_STOPS "pits stops" #define RE_ATTR_POINTS "points" #endif /* _RACEMANV1_H_ */