public static bool ReadDat(string strFilename, out RvDat rvDat) { HeaderFileType datFileType = HeaderFileType.Nothing; rvDat = new RvDat(); int errorCode = DatFileLoader.LoadDat(strFilename); if (errorCode != 0) { DatUpdate.ShowDat(new Win32Exception(errorCode).Message, strFilename); return(false); } string filename = Path.GetFileName(strFilename); DatFileLoader.Gn(); if (DatFileLoader.EndOfStream()) { return(false); } if (DatFileLoader.Next.ToLower() == "doscenter") { DatFileLoader.Gn(); if (!LoadHeaderFromDat(filename, rvDat, out datFileType)) { return(false); } DatFileLoader.Gn(); } while (!DatFileLoader.EndOfStream()) { switch (DatFileLoader.Next.ToLower()) { case "game": DatFileLoader.Gn(); if (!LoadGameFromDat(rvDat, "", datFileType)) { return(false); } DatFileLoader.Gn(); break; default: DatUpdate.SendAndShowDat("Error on line " + DatFileLoader.LineNumber + ": key word '" + DatFileLoader.Next + "' not known", DatFileLoader.Filename); DatFileLoader.Gn(); break; } } DatFileLoader.Close(); return(true); }
public static bool ReadDat(ref RvDir tDat, string strFilename) { RvDir tNow = tDat; FileType thisFileType = FileType.Unknown; int errorCode = DatFileLoader.LoadDat(strFilename); if (errorCode != 0) { DatUpdate.ShowDat(new Win32Exception(errorCode).Message, strFilename); return(false); } DatFileLoader.Gn(); while (!DatFileLoader.EndOfStream()) { switch (DatFileLoader.Next.ToLower()) { case "doscenter": _cleanFileNames = true; DatFileLoader.Gn(); if (!LoadHeaderFromDat(ref tNow, ref thisFileType)) { return(false); } DatFileLoader.Gn(); break; case "game": DatFileLoader.Gn(); if (!LoadGameFromDat(ref tNow, thisFileType)) { return(false); } DatFileLoader.Gn(); break; default: DatUpdate.SendAndShowDat(Resources.DatCmpReader_ReadDat_Error_keyword + DatFileLoader.Next + Resources.DatCmpReader_ReadDat_not_known, DatFileLoader.Filename); DatFileLoader.Gn(); break; } } DatFileLoader.Close(); return(true); }
public static bool ReadDat(string strFilename, long fileTimeStamp, out RvDat rvDat) { rvDat = new RvDat(); int errorCode = DatFileLoader.LoadDat(strFilename); if (errorCode != 0) { DatUpdate.ShowDat(new Win32Exception(errorCode).Message, strFilename); return(false); } string Filename = IO.Path.GetFileName(strFilename); DatFileLoader.Gn(); if (DatFileLoader.EndOfStream()) { return(false); } if (DatFileLoader.Next.ToLower() == "clrmamepro") { DatFileLoader.Gn(); if (!LoadHeaderFromDat(Filename, fileTimeStamp, rvDat)) { return(false); } DatFileLoader.Gn(); } if (DatFileLoader.Next.ToLower() == "romvault") { DatFileLoader.Gn(); if (!LoadHeaderFromDat(Filename, fileTimeStamp, rvDat)) { return(false); } DatFileLoader.Gn(); } while (!DatFileLoader.EndOfStream()) { switch (DatFileLoader.Next.ToLower()) { case "dir": DatFileLoader.Gn(); if (!LoadDirFromDat(rvDat, "")) { return(false); } DatFileLoader.Gn(); break; case "game": DatFileLoader.Gn(); if (!LoadGameFromDat(rvDat, "")) { return(false); } DatFileLoader.Gn(); break; case "resource": DatFileLoader.Gn(); if (!LoadGameFromDat(rvDat, "")) { return(false); } DatFileLoader.Gn(); break; case "emulator": DatFileLoader.Gn(); if (!LoadEmulator()) { return(false); } DatFileLoader.Gn(); break; default: DatUpdate.SendAndShowDat("Error: key word '" + DatFileLoader.Next + "' not known", DatFileLoader.Filename); DatFileLoader.Gn(); break; } } DatFileLoader.Close(); return(true); }
public static bool ReadDat(ref RvDir tDat, string strFilename) { RvDir tNow = tDat; FileType thisFileType = FileType.ZipFile; int errorCode = DatFileLoader.LoadDat(strFilename); if (errorCode != 0) { DatUpdate.ShowDat(new Win32Exception(errorCode).Message, strFilename); return(false); } DatFileLoader.Gn(); if (DatFileLoader.EndOfStream()) { return(false); } if (DatFileLoader.Next.ToLower() == "clrmamepro") { _cleanFileNames = true; DatFileLoader.Gn(); if (!LoadHeaderFromDat(ref tNow, ref thisFileType)) { return(false); } DatFileLoader.Gn(); } if (DatFileLoader.Next.ToLower() == "romvault") { _cleanFileNames = false; DatFileLoader.Gn(); if (!LoadHeaderFromDat(ref tNow, ref thisFileType)) { return(false); } DatFileLoader.Gn(); } if (tNow.Dat == null) { tNow.Dat = new RvDat(); string cleanedName = Path.GetFileNameWithoutExtension(strFilename); tNow.Dat.AddData(RvDat.DatData.DatName, cleanedName); tNow.Dat.AddData(RvDat.DatData.Description, cleanedName); } while (!DatFileLoader.EndOfStream()) { switch (DatFileLoader.Next.ToLower()) { case "dir": DatFileLoader.Gn(); if (!LoadDirFromDat(ref tNow, ref thisFileType)) { return(false); } DatFileLoader.Gn(); break; case "game": DatFileLoader.Gn(); if (!LoadGameFromDat(ref tNow, false, thisFileType)) { return(false); } DatFileLoader.Gn(); break; case "resource": DatFileLoader.Gn(); if (!LoadGameFromDat(ref tNow, true, thisFileType)) { return(false); } DatFileLoader.Gn(); break; case "emulator": DatFileLoader.Gn(); if (!LoadEmulator()) { return(false); } DatFileLoader.Gn(); break; default: DatUpdate.SendAndShowDat(Resources.DatCmpReader_ReadDat_Error_keyword + DatFileLoader.Next + Resources.DatCmpReader_ReadDat_not_known, DatFileLoader.Filename); DatFileLoader.Gn(); break; } } DatFileLoader.Close(); return(true); }
public static bool ReadDat(string strFilename, out RvDat rvDat) { HeaderFileType datFileType = HeaderFileType.Nothing; rvDat = new RvDat(); int errorCode = DatFileLoader.LoadDat(strFilename); if (errorCode != 0) { DatUpdate.ShowDat(new Win32Exception(errorCode).Message, strFilename); return(false); } string filename = Path.GetFileName(strFilename); DatFileLoader.Gn(); if (DatFileLoader.EndOfStream()) { return(false); } if (DatFileLoader.Next.ToLower() == "[credits]") { if (!LoadHeaderFromDat(filename, rvDat, out datFileType, DatFileLoader.Next.ToLower())) { return(false); } DatFileLoader.Gn(); } else if (DatFileLoader.Next.ToLower() == "[dat]") { if (!LoadHeaderFromDat(filename, rvDat, out datFileType, DatFileLoader.Next.ToLower())) { return(false); } DatFileLoader.Gn(); } else if (DatFileLoader.Next.ToLower() == "[emulator]") { if (!LoadHeaderFromDat(filename, rvDat, out datFileType, DatFileLoader.Next.ToLower())) { return(false); } DatFileLoader.Gn(); } // Everything else if a rom/game string lastgame = ""; bool foundgame = false; RvGame rvGame = new RvGame(); while (!DatFileLoader.EndOfStream()) { // Set loop variables foundgame = true; string game = "", description = "", romof = "", cloneof = ""; RvRom rvRom = new RvRom(); if (!LoadRomFromDat("", datFileType, out rvRom, out game, out description, out romof, out cloneof)) { return(false); } DatFileLoader.Gn(); // If we have a new game finally, add the last one if (lastgame != game && lastgame != "") { rvDat.AddGame(rvGame); foundgame = false; rvGame = new RvGame(); } // For everything else, add to the new rvGame rvGame.Name = (String.IsNullOrEmpty(rvGame.Name) ? game : rvGame.Name); rvGame.Description = (String.IsNullOrEmpty(rvGame.Description) ? description : rvGame.Description); rvGame.CloneOf = (String.IsNullOrEmpty(rvGame.CloneOf) ? cloneof : rvGame.CloneOf); rvGame.RomOf = (String.IsNullOrEmpty(rvGame.RomOf) ? romof : rvGame.RomOf); rvGame.AddRom(rvRom); lastgame = game; } // If we had a lingering game, add it if (foundgame) { rvDat.AddGame(rvGame); } DatFileLoader.Close(); return(true); }