Example #1
0
        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);
            }
        }
Example #2
0
        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;
                }
            }
        }
Example #3
0
        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);
        }