#ifndef __CONFIG
#define __CONFIG

#include "fileio.h"

enum{
	kInteriorDisplayOff,
	kInteriorDisplayPlayerOnly,
	kInteriorDisplayCloseCarsOnly,
	kInteriorDisplayAlways,
	kInteriorDisplayNumModes
};

typedef struct{
	int keyID;
	int controllerID1;
	int controllerID2;
	int elementID;
	char identifier[32];
	char controllerIdentifier[256];
}tKeyConfig;

typedef struct{
	int axisControllerID1;
	int axisControllerID2;
	int axisElementID;
	char axisIdentifier[256];
	int min,mid,max;
	float deadzone;
}tAxisConfig;

#define kMaxPersonalRecords 1024
typedef struct{
	tFileRef car,map;
	int mode,direction;
	int time;
}tPersonalRecord;

typedef struct{
	int screenXSize,screenYSize;
	int windowX,windowY;
	int fullscreen;
	int onlyRegisteredPlayers;
	int useBetaBuilds;
	int noGhost;
	float gfxDynamics;
	int allowHugeGames;
	int interfaceSounds;
	int stencil;
	int performanceStats;
	int textureQuality;
	int soundEnable;
	int maxPlayers;
	int color32Bit;
	int fsaa;
	int guideSigns;
	int motionBlur;
	int allCams;
	int cantGoBackwards;
	int ffb;
	float ffbIntensity;
	int arcade,reverse;
	int showPlayerNames;
	int trackerEnable;
	int carsOnSpeed;
	int demolition;
	int registerLapTimes;
	int metricUnits;
	int challengeData;
	int dbIndex;
	int textureFilter;
	int showReplays;
	int seperateGasBrake;
	int disableAnalogueTCS;
	int reverseGas;
	tFileRef lastCar,lastEnemy,lastRoad,lastEnv;
	int numEnemies,automatic,lastLaps,lastColor;
	float soundVolume,musicVolume;
	int maxCarSources;
	float hudTransparency;
	int interiorDisplay;
	int cameraMode;
	int numKeys,numAxis,numTaunts;
	char playerName[256];
	char gameName[256];
	char password[256];
	char (*taunts)[256];
	char confirmedVersion[256];
	tKeyConfig *keys;
	tAxisConfig *axis;
	tFileRef opponentCars[11];
	int opponentColors[11];
	int challengeRecords[32];
	int numPersonalRecords;
	tPersonalRecord records[kMaxPersonalRecords];
}tSysConfig;

extern tSysConfig *gConfig;

#define kConfigDefault16Name "default16.cfg"
#define kConfigDefault32Name "default32.cfg"
#define kConfigDefault64Name "default64.cfg"
#define kConfigFileName "Redline Preferences"
#define kConfigFilePName "\pRedline Preferences"

void ConfigInit();

#endif