Example #1
0
        public bool ReadDat(string fullname, out DatHeader rvDat)
        {
            rvDat = null;

            System.Diagnostics.Debug.WriteLine("Reading : " + fullname);

            StreamReader myfile  = File.OpenText(fullname, Enc);
            string       strLine = null;

            while (string.IsNullOrWhiteSpace(strLine) && !myfile.EndOfStream)
            {
                strLine = myfile.ReadLine();
            }
            myfile.Close();

            if (strLine == null)
            {
                return(false);
            }


            if (strLine.ToLower().IndexOf("xml", StringComparison.Ordinal) >= 0)
            {
                if (!ReadXMLDat(fullname, out rvDat))
                {
                    return(false);
                }
            }
            else if ((strLine.ToLower().IndexOf("clrmamepro", StringComparison.Ordinal) >= 0) || (strLine.ToLower().IndexOf("clrmame", StringComparison.Ordinal) >= 0) || (strLine.ToLower().IndexOf("romvault", StringComparison.Ordinal) >= 0) || (strLine.ToLower().IndexOf("game", StringComparison.Ordinal) >= 0) || (strLine.ToLower().IndexOf("machine", StringComparison.Ordinal) >= 0))
            {
                DatCmpReader dcr = new DatCmpReader(ErrorReport);
                if (!dcr.ReadDat(fullname, out rvDat))
                {
                    return(false);
                }
            }
            else if (strLine.ToLower().IndexOf("doscenter", StringComparison.Ordinal) >= 0)
            {
                DatDOSReader ddr = new DatDOSReader(ErrorReport);
                if (!ddr.ReadDat(fullname, out rvDat))
                {
                    return(false);
                }
            }
            else if (strLine.ToLower().IndexOf("[credits]", StringComparison.Ordinal) >= 0)
            {
                DatROMCenterReader drcr = new DatROMCenterReader(ErrorReport);
                if (!drcr.ReadDat(fullname, out rvDat))
                {
                    return(false);
                }
            }
            else
            {
                ErrorReport?.Invoke(fullname, "Invalid DAT File");
                return(false);
            }

            return(true);
        }