Exemplo n.º 1
0
        static void ExportData(ArchiveFileManager manager, InibinConverter converter)
        {
            var itemFiles = manager.GetFileEntriesFrom("DATA/Items", true);

            foreach (var entry in itemFiles)
            {
                var saveDirectory = Path.GetDirectoryName(string.Format("Content/{0}", entry.FullName));
                if (!Directory.Exists(saveDirectory))
                {
                    Directory.CreateDirectory(saveDirectory);
                }
                var compressedFile = manager.ReadFile(entry.FullName, true);
                if (compressedFile == null)
                {
                    continue;
                }
                var file = compressedFile.Uncompress();

                if (entry.FullName.Contains(".inibin") || entry.FullName.Contains(".troybin"))
                {
                    var inibin = Inibin.DeserializeInibin(file, entry.FullName);
                    foreach (var kvp in inibin.Content)
                    {
                        converter.AddByHash(kvp.Key, kvp.Value);
                    }
                    var itemContent     = converter.Deserialize();
                    var itemContentJson = JsonConvert.SerializeObject(itemContent, Formatting.Indented);

                    var savePath = string.Format("Content/{0}", entry.FullName.Replace(".inibin", ".json"));
                    if (entry.FullName.Contains(".troybin"))
                    {
                        savePath = string.Format("Content/{0}", entry.FullName.Replace(".troybin", ".troybin.json"));
                    }

                    File.WriteAllText(savePath, itemContentJson);
                    converter.Clear();
                }
                else
                {
                    var savePath = string.Format("Content/{0}", entry.FullName);
                    File.WriteAllBytes(savePath, file);
                }
            }
        }