#include "mapviewer.h" int CGame::Load(int argc, char *argv[]) { FILE *file, *conf, *conf2; char Path[512]; file = efopen("mapviewer.conf", "r"); ReadConfigLine(file, Path); fclose(file); progdir = NULL; progdir = getcwd(progdir, 256); if (chdir(Path) != 0) exiterror("Couldn't chdir to ", Path); if ((conf = fopen("DATA/GTA3.DAT", "r"))) { Game.SetVersion(Game.GetVersion() | GAMEIII); } else if ((conf = fopen("DATA/GTA_VC.DAT", "r"))) { Game.SetVersion(Game.GetVersion() | GAMEVICECITY); } else if ((conf = fopen("DATA/GTA.DAT", "r"))) { Game.SetVersion(Game.GetVersion() | GAMESANANDREAS); } else { exiterror("Couldn't open dat file", ""); } World.Init(); if ((Game.GetVersion() & GAMESANANDREAS)) { Game.SetWorldLimits(0, 0, 0, 0); /* not used yet */ file = efopen("MODELS/GTA3.IMG", "rb"); Directory.AppendFromDir(file, "MODELS/GTA3.IMG"); fclose(file); file = efopen("MODELS/GTA_INT.IMG", "rb"); Directory.AppendFromDir(file, "MODELS/GTA_INT.IMG"); fclose(file); Directory.Append("EFFECTS.TXD",0,0,"MODELS/EFFECTS.TXD", NULL); Directory.Append("PARTICLE.TXD",0,0,"MODELS/PARTICLE.TXD",NULL); Directory.Append("HUD.TXD",0,0,"MODELS/HUD.TXD", NULL); GLView.SetnRadarFiles(144); } else if ((Game.GetVersion() & GAMEVICECITY)) { Game.SetWorldLimits(-2448, -2048, 1648, 2048); file = efopen("MODELS/GTA3.DIR", "rb"); Directory.AppendFromDir(file, "MODELS/GTA3.IMG"); fclose(file); // Directory.Append("GENERIC.TXD",0,0,"MODELS/GENERIC.TXD", NULL); Directory.Append("PARTICLE.TXD",0,0,"MODELS/PARTICLE.TXD",NULL); Directory.Append("HUD.TXD",0,0,"MODELS/HUD.TXD", NULL); GLView.SetnRadarFiles(64); } else if ((Game.GetVersion() & GAMEIII)) { Game.SetWorldLimits(-2048, -2048, 2048, 2048); file = efopen("MODELS/GTA3.DIR", "rb"); Directory.AppendFromDir(file, "MODELS/GTA3.IMG"); fclose(file); // Directory.Append("MISC.TXD",0,0,"MODELS/MISC.TXD", NULL); Directory.Append("PARTICLE.TXD",0,0,"MODELS/PARTICLE.TXD",NULL); Directory.Append("HUD.TXD",0,0,"MODELS/HUD.TXD", NULL); GLView.SetnRadarFiles(64); } if ((conf2 = fopen("DATA/DEFAULT.DAT", "r"))) { ParseDat(conf2); fclose(conf2); } ParseDat(conf); fclose(conf); GLView.StartOgl(argc, argv); return 0; } void CGame::Init() { GLView.Init(); Camera.Init(); Water.Init(); Sky.Init(); Clock.Init(); RwTexDictionarySetCurrent(NULL); SetMinuteLength(1000); } void CGame::ParseDat(FILE *conf) { FILE *file; char Buffer[512]; char Type[24]; char Path[128]; char *Pos; char *FileName; while (ReadConfigLine(conf, Buffer) != NULL) { Pos = Buffer; Pos = GetWordUp(Pos, Type); Pos = GetWordUp(Pos, Path); CorrectPath(Path); cout << Path << endl; if (strcmp(Type, "IDE") == 0) { file = efopen(Path, "r"); World.AddObjsFromFile(file); fclose(file); } else if (strcmp(Type, "IPL") == 0) { file = efopen(Path, "r"); FileName = GetFileName(Path); World.AddInstancesFromFile(file, FileName); fclose(file); } else if (strcmp(Type, "TEXDICTION") == 0) { FileName = GetFileName(Path); Directory.Append(FileName, 0, 0, Path, NULL); } else if (strcmp(Type, "MODELFILE") == 0) { FileName = GetFileName(Path); Directory.Append(FileName, 0, 0, Path, NULL); } else if (strcmp(Type, "IMG") == 0) { file = efopen(Path, "rb"); Directory.AppendFromDir(file, Path); fclose(file); } } } uint CGame::GetVersion() { return Version; } void CGame::SetVersion(uint v) { Version = v; } void CGame::SetWorldLimits(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) { WorldLimits[0] = x1; WorldLimits[1] = y1; WorldLimits[2] = x2; WorldLimits[3] = y2; } void CGame::GetWorldLimits(GLfloat *v) { v[0] = WorldLimits[0]; v[1] = WorldLimits[1]; v[2] = WorldLimits[2]; v[3] = WorldLimits[3]; } void CGame::SetTime(bool b) { useTime = b; } void CGame::ToggleTime() { useTime = !useTime; } bool CGame::UseTime() { return useTime; } void CGame::SetMinuteLength(int l) { MinuteLength = l; } int CGame::GetMinuteLength() { return MinuteLength; } CGame::CGame() { useTime = false; Version = 0; } CGame::~CGame() { }