public void SaveEventListToDirectory(string directory) { string datDirectory = string.Format("{0}/dat", directory); if (!Directory.Exists(datDirectory)) { Directory.CreateDirectory(datDirectory); } WEventList eventlist = GetChildrenOfType <WEventList>()[0]; string filePath = string.Format("{0}/event_list.dat", datDirectory); using (EndianBinaryWriter writer = new EndianBinaryWriter(File.Open(filePath, FileMode.Create), Endian.Big)) { eventlist.ExportToStream(writer); } }
public override void Load(string filePath) { base.Load(filePath); foreach (var folder in Directory.GetDirectories(filePath)) { string folderName = Path.GetFileNameWithoutExtension(folder); switch (folderName.ToLower()) { case "dzs": { string fileName = Path.Combine(folder, "stage.dzs"); if (File.Exists(fileName)) { LoadLevelEntitiesFromFile(fileName); } } break; //case "bmd": case "bdl": { LoadStageModels(folder); } break; case "dat": { string fileName = Path.Combine(folder, "event_list.dat"); if (File.Exists(fileName)) { WEventList evlist = new WEventList(m_world, fileName); CategoryDOMNode evCategory = new CategoryDOMNode("Event List", m_world); evCategory.SetParent(this); evlist.SetParent(evCategory); } } break; } } }
public override VirtualFilesystemDirectory ExportToVFS() { VirtualFilesystemDirectory new_dir = SourceDirectory; new_dir.Name = Name; VirtualFilesystemFile dzs_file = SourceDirectory.GetFileAtPath("dzs/stage.dzs"); using (MemoryStream mem = new MemoryStream()) { using (EndianBinaryWriter writer = new EndianBinaryWriter(mem, Endian.Big)) { SceneDataExporter exporter = new SceneDataExporter(); exporter.ExportToStream(writer, this); writer.Flush(); dzs_file.Data = mem.ToArray(); } } List <J3DNode> meshes = GetChildrenOfType <J3DNode>(); for (int i = 0; i < meshes.Count; i++) { string modelExt = meshes[i].Model.StudioType == "bdl4" ? "bdl" : "bmd"; VirtualFilesystemFile modelFile = SourceDirectory.GetFileAtPath($"{ modelExt }/{ meshes[i].Name }.{ modelExt }"); byte[] data = File.ReadAllBytes(meshes[i].Filename); if (modelFile != null) { modelFile.Data = data; } else { VirtualFilesystemDirectory modelDir = null; foreach (VirtualFilesystemNode n in new_dir.Children) { if (n.Name == modelExt) { modelDir = n as VirtualFilesystemDirectory; break; } } if (modelDir == null) { modelDir = new VirtualFilesystemDirectory(modelExt); new_dir.Children.Add(modelDir); } modelDir.Children.Add(new VirtualFilesystemFile(meshes[i].Name, $".{ modelExt }", data)); } } VirtualFilesystemFile dat_file = SourceDirectory.GetFileAtPath("dat/event_list.dat"); WEventList eventlist = GetChildrenOfType <WEventList>()[0]; using (MemoryStream ev_strm = new MemoryStream()) { using (EndianBinaryWriter writer = new EndianBinaryWriter(ev_strm, Endian.Big)) { eventlist.ExportToStream(writer); writer.Flush(); dat_file.Data = ev_strm.ToArray(); } } return(new_dir); }