From 05cc24882ec1cfcadcab301d9abfb6acb1edb65f Mon Sep 17 00:00:00 2001 From: alcexhim Date: Sun, 16 Nov 2014 00:09:20 -0500 Subject: [PATCH] Added NScripter NSA archive format (incomplete) --- .../FileSystem/NScripter/NSA/NSADataFormat.cs | 58 +++++++++++++++++++ .../UniversalEditor.Plugins.FileSystem.csproj | 1 + 2 files changed, 59 insertions(+) create mode 100644 CSharp/Plugins/UniversalEditor.Plugins.FileSystem/DataFormats/FileSystem/NScripter/NSA/NSADataFormat.cs diff --git a/CSharp/Plugins/UniversalEditor.Plugins.FileSystem/DataFormats/FileSystem/NScripter/NSA/NSADataFormat.cs b/CSharp/Plugins/UniversalEditor.Plugins.FileSystem/DataFormats/FileSystem/NScripter/NSA/NSADataFormat.cs new file mode 100644 index 00000000..3bc52df9 --- /dev/null +++ b/CSharp/Plugins/UniversalEditor.Plugins.FileSystem/DataFormats/FileSystem/NScripter/NSA/NSADataFormat.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UniversalEditor.IO; +using UniversalEditor.ObjectModels.FileSystem; + +namespace UniversalEditor.DataFormats.FileSystem.NScripter.NSA +{ + public class NSADataFormat : DataFormat + { + private static DataFormatReference _dfr = null; + public override DataFormatReference MakeReference() + { + if (_dfr == null) + { + _dfr = base.MakeReference(); + _dfr.Capabilities.Add(typeof(FileSystemObjectModel), DataFormatCapabilities.All); + _dfr.Filters.Add("NScripter NSA archive", new string[] { "*.nsa" }); + } + return _dfr; + } + + protected override void LoadInternal(ref ObjectModel objectModel) + { + FileSystemObjectModel fsom = (objectModel as FileSystemObjectModel); + if (fsom == null) throw new ObjectModelNotSupportedException(); + + Reader reader = base.Accessor.Reader; + reader.Endianness = Endianness.BigEndian; + + ushort fileCount = reader.ReadUInt16(); + ushort unknown1 = reader.ReadUInt16(); + + byte unknown2 = reader.ReadByte(); + + for (ushort i = 0; i < fileCount; i++) + { + byte unknown3 = reader.ReadByte(); + string fileName = reader.ReadNullTerminatedString(); + + ushort unknown4 = reader.ReadUInt16(); + ushort unknown5 = reader.ReadUInt16(); + + uint unknown6 = reader.ReadUInt32(); + uint unknown7 = reader.ReadUInt32(); + + File file = fsom.AddFile(fileName); + + } + } + + protected override void SaveInternal(ObjectModel objectModel) + { + throw new NotImplementedException(); + } + } +} diff --git a/CSharp/Plugins/UniversalEditor.Plugins.FileSystem/UniversalEditor.Plugins.FileSystem.csproj b/CSharp/Plugins/UniversalEditor.Plugins.FileSystem/UniversalEditor.Plugins.FileSystem.csproj index 376bc58e..798c443a 100644 --- a/CSharp/Plugins/UniversalEditor.Plugins.FileSystem/UniversalEditor.Plugins.FileSystem.csproj +++ b/CSharp/Plugins/UniversalEditor.Plugins.FileSystem/UniversalEditor.Plugins.FileSystem.csproj @@ -133,6 +133,7 @@ +