Exemple #1
0
        static Dictionary <SaveLanguages, string> ReadNameNodes(XmlNode parentNode)
        {
            Dictionary <SaveLanguages, string> names = new Dictionary <SaveLanguages, string>();

            foreach (XmlNode nameNode in parentNode.ChildNodes)
            {
                SaveLanguages nameLang = (SaveLanguages)Enum.Parse(typeof(SaveLanguages), nameNode.Attributes["Language"].InnerText);
                names.Add(nameLang, nameNode.InnerText);
            }
            return(names);
        }
Exemple #2
0
        public bool LoadDirectory(string directory)
        {
            foreach (string file in Directory.EnumerateFiles(directory))
            {
                using (FileStream stream = new FileStream(file, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
                {
                    BinaryReader reader = new BinaryReader(stream);

                    string signature = Encoding.ASCII.GetString(reader.ReadBytes(8));
                    stream.Seek(0, SeekOrigin.Begin);

                    if (signature == Mori4Game.ExpectedFileSignature)
                    {
                        /* Derive save language from size of Mori4Game */
                        if (stream.Length == 0x865C)
                        {
                            SaveDataHandler.SaveLanguage = SaveLanguages.English;
                        }
                        else if (stream.Length == 0x84DC)
                        {
                            SaveDataHandler.SaveLanguage = SaveLanguages.Japanese;
                        }
                        else
                        {
                            throw new Exception("Unexpected size for file of type Mori4Game");
                        }
                    }

                    switch (signature)
                    {
                    case Mori4Option.ExpectedFileSignature: DataFiles.Add(new Mori4Option(stream)); break;

                    case Mori4Map.ExpectedFileSignature: DataFiles.Add(new Mori4Map(stream)); break;

                    case Mori4Game.ExpectedFileSignature: DataFiles.Add(new Mori4Game(stream)); break;

                    case Mori4GdCard.ExpectedFileSignature: DataFiles.Add(new Mori4GdCard(stream)); break;
                    }
                }
            }

            return(IsDataLoaded);
        }