private static bool LoadGameFromDat(RvDat rvDat, string rootdir) { if (DatFileLoader.Next != "(") { DatUpdate.SendAndShowDat("( not found after game", DatFileLoader.Filename); return false; } DatFileLoader.Gn(); string snext = DatFileLoader.Next.ToLower(); string pathextra = ""; if (snext == "rebuildto") { pathextra = VarFix.CleanFullFileName(DatFileLoader.Gn()); DatFileLoader.Gn(); snext = DatFileLoader.Next.ToLower(); } if (snext != "name") { DatUpdate.SendAndShowDat("Name not found as first object in ( )", DatFileLoader.Filename); return false; } string name = VarFix.CleanFullFileName(DatFileLoader.GnRest()); if (!String.IsNullOrEmpty(pathextra)) name = pathextra + "/" + name; DatFileLoader.Gn(); RvGame rvGame = new RvGame(); rvGame.Name = name; while (DatFileLoader.Next != ")") { switch (DatFileLoader.Next.ToLower()) { case "romof": rvGame.RomOf = VarFix.CleanFileName(DatFileLoader.GnRest()); DatFileLoader.Gn(); break; case "description": rvGame.Description = DatFileLoader.GnRest(); DatFileLoader.Gn(); break; case "sourcefile": rvGame.SourceFile = DatFileLoader.GnRest(); DatFileLoader.Gn(); break; case "cloneof": rvGame.CloneOf = DatFileLoader.GnRest(); DatFileLoader.Gn(); break; case "sampleof": rvGame.SampleOf = DatFileLoader.GnRest(); DatFileLoader.Gn(); break; case "board": rvGame.Board = DatFileLoader.GnRest(); DatFileLoader.Gn(); break; case "year": rvGame.Year = DatFileLoader.GnRest(); DatFileLoader.Gn(); break; case "manufacturer": rvGame.Manufacturer = DatFileLoader.GnRest(); DatFileLoader.Gn(); break; case "serial": DatFileLoader.GnRest(); DatFileLoader.Gn(); break; case "rebuildto": DatFileLoader.GnRest(); DatFileLoader.Gn(); break; case "sample": DatFileLoader.GnRest(); DatFileLoader.Gn(); break; case "biosset": DatFileLoader.GnRest(); DatFileLoader.Gn(); break; case "chip": DatFileLoader.GnRest(); DatFileLoader.Gn(); break; case "video": DatFileLoader.GnRest(); DatFileLoader.Gn(); break; case "sound": DatFileLoader.GnRest(); DatFileLoader.Gn(); break; case "input": DatFileLoader.GnRest(); DatFileLoader.Gn(); break; case "dipswitch": DatFileLoader.GnRest(); DatFileLoader.Gn(); break; case "driver": DatFileLoader.GnRest(); DatFileLoader.Gn(); break; case "rom": DatFileLoader.Gn(); if (!LoadRomFromDat(rvGame)) return false; DatFileLoader.Gn(); break; case "disk": DatFileLoader.Gn(); if (!LoadDiskFromDat(rvGame)) return false; DatFileLoader.Gn(); break; case "archive": DatFileLoader.Gn(); if (!LoadArchiveFromDat()) return false; DatFileLoader.Gn(); break; default: DatUpdate.SendAndShowDat("Error: key word '" + DatFileLoader.Next + "' not known in game", DatFileLoader.Filename); DatFileLoader.Gn(); break; } } rvDat.AddGame(rvGame); return true; }
private static void LoadGameFromDat(RvDat rvDat, XmlNode gameNode, string rootDir) { if (gameNode.Attributes == null) return; RvGame rvGame=new RvGame(); rvGame.Name = VarFix.CleanFullFileName(gameNode.Attributes.GetNamedItem("name")); rvGame.RomOf = VarFix.CleanFileName(gameNode.Attributes.GetNamedItem("romof")); rvGame.CloneOf = VarFix.CleanFileName(gameNode.Attributes.GetNamedItem("cloneof")); rvGame.SampleOf = VarFix.CleanFileName(gameNode.Attributes.GetNamedItem("sampleof")); rvGame.Description = VarFix.String(gameNode.SelectSingleNode("description")); rvGame.SourceFile = VarFix.String(gameNode.Attributes.GetNamedItem("sourcefile")); rvGame.IsBios = VarFix.String(gameNode.Attributes.GetNamedItem("isbios")); rvGame.Board = VarFix.String(gameNode.Attributes.GetNamedItem("board")); rvGame.Year = VarFix.String(gameNode.SelectSingleNode("year")); rvGame.Manufacturer = VarFix.String(gameNode.SelectSingleNode("manufacturer")); XmlNode trurip = gameNode.SelectSingleNode("trurip"); if (trurip != null) { rvGame.IsTrurip = true; rvGame.Publisher = VarFix.String(trurip.SelectSingleNode("publisher")); rvGame.Developer = VarFix.String(trurip.SelectSingleNode("developer")); rvGame.Edition = VarFix.String(trurip.SelectSingleNode("edition")); rvGame.Version = VarFix.String(trurip.SelectSingleNode("version")); rvGame.Type = VarFix.String(trurip.SelectSingleNode("type")); rvGame.Media = VarFix.String(trurip.SelectSingleNode("media")); rvGame.Language = VarFix.String(trurip.SelectSingleNode("language")); rvGame.Players = VarFix.String(trurip.SelectSingleNode("players")); rvGame.Ratings = VarFix.String(trurip.SelectSingleNode("ratings")); rvGame.Peripheral = VarFix.String(trurip.SelectSingleNode("peripheral")); rvGame.Genre = VarFix.String(trurip.SelectSingleNode("genre")); rvGame.MediaCatalogNumber = VarFix.String(trurip.SelectSingleNode("mediacatalognumber")); rvGame.BarCode = VarFix.String(trurip.SelectSingleNode("barcode")); } rvGame.Name = IO.Path.Combine(rootDir,rvGame.Name); rvDat.AddGame(rvGame); XmlNodeList romNodeList = gameNode.SelectNodes("rom"); if (romNodeList != null) for (int i = 0; i < romNodeList.Count; i++) LoadRomFromDat(rvGame, romNodeList[i]); XmlNodeList diskNodeList = gameNode.SelectNodes("disk"); if (diskNodeList != null) for (int i = 0; i < diskNodeList.Count; i++) LoadDiskFromDat(rvGame, diskNodeList[i]); }