mirror of
https://github.com/SabreTools/SabreTools.Models.git
synced 2026-02-08 05:44:30 +00:00
Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bf02266f0f | ||
|
|
b521e503c2 | ||
|
|
48e79d26ed | ||
|
|
989ef41c6d | ||
|
|
6b0c4c3024 | ||
|
|
4b54d0f4dc | ||
|
|
2bc1cfc5d0 | ||
|
|
362abfdc64 | ||
|
|
a06ff8f8b3 | ||
|
|
7269e91913 | ||
|
|
c118271565 | ||
|
|
71ccbc6ab1 | ||
|
|
ed5c1a7173 |
@@ -5,7 +5,6 @@ namespace SabreTools.Models.AACS
|
||||
/// <summary>
|
||||
/// This record type is undocumented but found in real media key blocks
|
||||
/// </summary>
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public sealed class CopyrightRecord : Record
|
||||
{
|
||||
/// <summary>
|
||||
|
||||
@@ -21,6 +21,6 @@ namespace SabreTools.Models.AACS
|
||||
/// <summary>
|
||||
/// Revocation list entries
|
||||
/// </summary>
|
||||
public DriveRevocationSignatureBlock?[]? SignatureBlocks { get; set; }
|
||||
public DriveRevocationSignatureBlock[]? SignatureBlocks { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -12,6 +12,6 @@ namespace SabreTools.Models.AACS
|
||||
/// A list of 8-byte Host Drive List Entry fields, the length of this
|
||||
/// list being equal to the number in the signature block.
|
||||
/// </summary>
|
||||
public DriveRevocationListEntry?[]? EntryFields { get; set; }
|
||||
public DriveRevocationListEntry[]? EntryFields { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,6 @@ namespace SabreTools.Models.AACS
|
||||
/// <summary>
|
||||
/// In this record, each subset-difference is encoded with 5 bytes.
|
||||
/// </summary>
|
||||
public SubsetDifference?[]? SubsetDifferences { get; set; }
|
||||
public SubsetDifference[]? SubsetDifferences { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -24,6 +24,6 @@ namespace SabreTools.Models.AACS
|
||||
/// <summary>
|
||||
/// Revocation list entries
|
||||
/// </summary>
|
||||
public HostRevocationSignatureBlock?[]? SignatureBlocks { get; set; }
|
||||
public HostRevocationSignatureBlock[]? SignatureBlocks { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -12,6 +12,6 @@ namespace SabreTools.Models.AACS
|
||||
/// A list of 8-byte Host Revocation List Entry fields, the length of this
|
||||
/// list being equal to the number in the signature block.
|
||||
/// </summary>
|
||||
public HostRevocationListEntry?[]? EntryFields { get; set; }
|
||||
public HostRevocationListEntry[]? EntryFields { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -9,6 +9,6 @@ namespace SabreTools.Models.AACS
|
||||
/// <summary>
|
||||
/// Records
|
||||
/// </summary>
|
||||
public Record?[]? Records { get; set; }
|
||||
public Record[]? Records { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,6 @@ namespace SabreTools.Models.ArchiveDotOrg
|
||||
public class Files
|
||||
{
|
||||
[XmlElement("file")]
|
||||
public File?[]? File { get; set; }
|
||||
public File[]? File { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,6 @@ namespace SabreTools.Models.AttractMode
|
||||
[Required]
|
||||
public string[]? Header { get; set; }
|
||||
|
||||
public Row?[]? Row { get; set; }
|
||||
public Row[]? Row { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace SabreTools.Models.BDPlus
|
||||
{
|
||||
/// <see href="https://github.com/mwgoldsmith/bdplus/blob/master/src/libbdplus/bdsvm/loader.c"/>
|
||||
@@ -6,40 +8,39 @@ namespace SabreTools.Models.BDPlus
|
||||
/// <summary>
|
||||
/// "BDSVM_CC"
|
||||
/// </summary>
|
||||
/// <remarks>8 bytes</remarks>
|
||||
public string? Signature { get; set; }
|
||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
|
||||
public string? Signature;
|
||||
|
||||
/// <summary>
|
||||
/// Unknown data
|
||||
/// </summary>
|
||||
/// <remarks>5 bytes</remarks>
|
||||
public byte[]? Unknown1 { get; set; }
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
|
||||
public byte[]? Unknown1 = new byte[5];
|
||||
|
||||
/// <summary>
|
||||
/// Version year
|
||||
/// </summary>
|
||||
public ushort Year { get; set; }
|
||||
public ushort Year;
|
||||
|
||||
/// <summary>
|
||||
/// Version month
|
||||
/// </summary>
|
||||
public byte Month { get; set; }
|
||||
public byte Month;
|
||||
|
||||
/// <summary>
|
||||
/// Version day
|
||||
/// </summary>
|
||||
public byte Day { get; set; }
|
||||
public byte Day;
|
||||
|
||||
/// <summary>
|
||||
/// Unknown data
|
||||
/// </summary>
|
||||
/// <remarks>4 bytes</remarks>
|
||||
public byte[]? Unknown2 { get; set; }
|
||||
public uint Unknown2;
|
||||
|
||||
/// <summary>
|
||||
/// Length
|
||||
/// </summary>
|
||||
public uint Length { get; set; }
|
||||
public uint Length;
|
||||
|
||||
/// <summary>
|
||||
/// Length bytes of data
|
||||
|
||||
@@ -34,6 +34,11 @@ namespace SabreTools.Models.BSP
|
||||
/// </summary>
|
||||
public VerticesLump? VerticesLump { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// LUMP_VISIBILITY [4]
|
||||
/// </summary>
|
||||
public VisibilityLump? VisibilityLump { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// LUMP_NODES [5]
|
||||
/// </summary>
|
||||
|
||||
@@ -17,6 +17,7 @@ namespace SabreTools.Models.BSP
|
||||
/// Lumps
|
||||
/// </summary>
|
||||
/// <remarks>15 entries</remarks>
|
||||
public BspLumpEntry[]? Lumps { get; set; }
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = Constants.BSP_HEADER_LUMPS)]
|
||||
public BspLumpEntry[]? Lumps;
|
||||
}
|
||||
}
|
||||
@@ -27,17 +27,17 @@ namespace SabreTools.Models.BSP
|
||||
/// <summary>
|
||||
/// Defines bounding box
|
||||
/// </summary>
|
||||
public Vector3D Mins;
|
||||
public Vector3D? Mins;
|
||||
|
||||
/// <summary>
|
||||
/// Defines bounding box
|
||||
/// </summary>
|
||||
public Vector3D Maxs;
|
||||
public Vector3D? Maxs;
|
||||
|
||||
/// <summary>
|
||||
/// Coordinates to move the coordinate system
|
||||
/// </summary>
|
||||
public Vector3D OriginVector;
|
||||
public Vector3D? OriginVector;
|
||||
|
||||
/// <summary>
|
||||
/// Index into nodes array
|
||||
|
||||
@@ -22,7 +22,7 @@ namespace SabreTools.Models.BSP
|
||||
/// <summary>
|
||||
/// S-vector
|
||||
/// </summary>
|
||||
public Vector3D SVector;
|
||||
public Vector3D? SVector;
|
||||
|
||||
/// <summary>
|
||||
/// Texture shift in the S direction
|
||||
@@ -32,7 +32,7 @@ namespace SabreTools.Models.BSP
|
||||
/// <summary>
|
||||
/// T-vector
|
||||
/// </summary>
|
||||
public Vector3D TVector;
|
||||
public Vector3D? TVector;
|
||||
|
||||
/// <summary>
|
||||
/// Texture shift in the T direction
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace SabreTools.Models.BSP
|
||||
/// </summary>
|
||||
/// <see href="https://developer.valvesoftware.com/wiki/BSP_(Source)"/>
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct ColorRGBExp32
|
||||
public class ColorRGBExp32
|
||||
{
|
||||
public byte Red;
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace SabreTools.Models.BSP
|
||||
/// </summary>
|
||||
/// <see href="https://developer.valvesoftware.com/wiki/BSP_(Source)"/>
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct CompressedLightCube
|
||||
public class CompressedLightCube
|
||||
{
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
|
||||
public ColorRGBExp32[]? Colors;
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace SabreTools.Models.BSP
|
||||
/// <summary>
|
||||
/// Start position used for orientation
|
||||
/// </summary>
|
||||
public Vector3D startPosition;
|
||||
public Vector3D? StartPosition;
|
||||
|
||||
/// <summary>
|
||||
/// Index into LUMP_DISP_VERTS.
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace SabreTools.Models.BSP
|
||||
/// <summary>
|
||||
/// Vector field defining displacement volume.
|
||||
/// </summary>
|
||||
public Vector3D Vec;
|
||||
public Vector3D? Vec;
|
||||
|
||||
/// <summary>
|
||||
/// Displacement distances.
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace SabreTools.Models.BSP
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public sealed class LeafAmbientLighting
|
||||
{
|
||||
public CompressedLightCube Cube;
|
||||
public CompressedLightCube? Cube;
|
||||
|
||||
/// <summary>
|
||||
/// Fixed point fraction of leaf bounds
|
||||
|
||||
@@ -13,6 +13,6 @@ namespace SabreTools.Models.BSP
|
||||
/// Lightmap RGB values
|
||||
/// </summary>
|
||||
/// <remarks>Array of 3-byte values</remarks>
|
||||
public byte[,]? Lightmap { get; set; }
|
||||
public byte[][]? Lightmap { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -27,12 +27,12 @@ namespace SabreTools.Models.BSP
|
||||
/// <summary>
|
||||
/// Minima of all vertices
|
||||
/// </summary>
|
||||
public Vector3D Mins;
|
||||
public Vector3D? Mins;
|
||||
|
||||
/// <summary>
|
||||
/// Maxima of all vertices
|
||||
/// </summary>
|
||||
public Vector3D Maxs;
|
||||
public Vector3D? Maxs;
|
||||
|
||||
/// <remarks>Since v1</remarks>
|
||||
public int Area;
|
||||
|
||||
@@ -41,6 +41,6 @@ namespace SabreTools.Models.BSP
|
||||
/// <summary>
|
||||
/// <see cref="VertexIndexCount">
|
||||
/// </summary>
|
||||
public int[]? VertexIndices;
|
||||
public int[]? VertexIndicies;
|
||||
}
|
||||
}
|
||||
@@ -41,8 +41,8 @@ namespace SabreTools.Models.BSP
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
|
||||
public Vector3D[]? UVPoints = new Vector3D[4];
|
||||
|
||||
public Vector3D Origin;
|
||||
public Vector3D? Origin;
|
||||
|
||||
public Vector3D BasisNormal;
|
||||
public Vector3D? BasisNormal;
|
||||
}
|
||||
}
|
||||
43
SabreTools.Models/BSP/PakfileLump.cs
Normal file
43
SabreTools.Models/BSP/PakfileLump.cs
Normal file
@@ -0,0 +1,43 @@
|
||||
namespace SabreTools.Models.BSP
|
||||
{
|
||||
/// <summary>
|
||||
/// The Pakfile lump (Lump 40) is a special lump that can contains
|
||||
/// multiple files which are embedded into the bsp file. Usually,
|
||||
/// they contain special texture (.vtf) and material (.vmt) files
|
||||
/// which are used to store the reflection maps from env_cubemap
|
||||
/// entities in the map; these files are built and placed in the
|
||||
/// Pakfile lump when the buildcubemaps console command is executed.
|
||||
/// The Pakfile can optionally contain such things as custom textures
|
||||
/// and prop models used in the map, and are placed into the bsp file
|
||||
/// by using the BSPZIP program (or alternate programs such as Pakrat).
|
||||
/// These files are integrated into the game engine's file system
|
||||
/// and will be loaded preferentially before externally located
|
||||
/// files are used.
|
||||
///
|
||||
/// The format of the Pakfile lump is identical to that used by the
|
||||
/// Zip compression utility when no compression is specified (i.e.,
|
||||
/// the individual files are stored in uncompressed format). In some
|
||||
/// branches, such as , LZMA compression can be used as well. If the
|
||||
/// Pakfile lump is extracted and written to a file, it can therefore
|
||||
/// be opened with WinZip and similar programs.
|
||||
///
|
||||
/// The header public/zip_uncompressed.h defines the structures
|
||||
/// present in the Pakfile lump. The last element in the lump is a
|
||||
/// ZIP_EndOfCentralDirRecord structure. This points to an array of
|
||||
/// ZIP_FileHeader structures immediately preceeding it, one for each
|
||||
/// file present in the Pak. Each of these headers then point to
|
||||
/// ZIP_LocalFileHeader structures that are followed by that file's
|
||||
/// data.
|
||||
///
|
||||
/// The Pakfile lump is usually the last element of the bsp file.
|
||||
/// </summary>
|
||||
/// <see href="https://developer.valvesoftware.com/wiki/BSP_(Source)"/>
|
||||
public sealed class PakfileLump
|
||||
{
|
||||
/// <summary>
|
||||
/// Pakfile data
|
||||
/// </summary>
|
||||
/// TODO: Split and/or decompress data?
|
||||
public byte[]? Data;
|
||||
}
|
||||
}
|
||||
11
SabreTools.Models/BSP/PhysCollideLump.cs
Normal file
11
SabreTools.Models/BSP/PhysCollideLump.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
namespace SabreTools.Models.BSP
|
||||
{
|
||||
/// <see href="https://developer.valvesoftware.com/wiki/BSP_(Source)"/>
|
||||
public sealed class PhysCollideLump : Lump
|
||||
{
|
||||
/// <summary>
|
||||
/// Models
|
||||
/// </summary>
|
||||
public PhysModel[]? Models { get; set; }
|
||||
}
|
||||
}
|
||||
42
SabreTools.Models/BSP/PhysModel.cs
Normal file
42
SabreTools.Models/BSP/PhysModel.cs
Normal file
@@ -0,0 +1,42 @@
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace SabreTools.Models.BSP
|
||||
{
|
||||
/// <summary>
|
||||
/// The physcollide lump (Lump 29) contains physics data for the world.
|
||||
/// </summary>
|
||||
/// <see href="https://developer.valvesoftware.com/wiki/BSP_(Source)"/>
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public sealed class PhysModel
|
||||
{
|
||||
/// <summary>
|
||||
/// Perhaps the index of the model to which this physics model applies?
|
||||
/// </summary>
|
||||
public int ModelIndex;
|
||||
|
||||
/// <summary>
|
||||
/// Total size of the collision data sections
|
||||
/// </summary>
|
||||
public int DataSize;
|
||||
|
||||
/// <summary>
|
||||
/// Size of the text section
|
||||
/// </summary>
|
||||
public int KeydataSize;
|
||||
|
||||
/// <summary>
|
||||
/// Number of collision data sections
|
||||
/// </summary>
|
||||
public int SolidCount;
|
||||
|
||||
/// <summary>
|
||||
/// Collision data of length <see cref="SolidCount"/>
|
||||
/// </summary>
|
||||
public PhysSolid[]? Solids;
|
||||
|
||||
/// <summary>
|
||||
/// Key data of size <see cref="KeydataSize"/>
|
||||
/// </summary>
|
||||
public byte[]? TextData;
|
||||
}
|
||||
}
|
||||
25
SabreTools.Models/BSP/PhysSolid.cs
Normal file
25
SabreTools.Models/BSP/PhysSolid.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace SabreTools.Models.BSP
|
||||
{
|
||||
/// <summary>
|
||||
/// The last two parts appear to be identical to the PHY file format,
|
||||
/// which means their exact contents are unknown. Note that the
|
||||
/// compactsurfaceheader_t structure contains the data size of each
|
||||
/// collision data section (including the rest of the header)
|
||||
/// </summary>
|
||||
/// <see href="https://developer.valvesoftware.com/wiki/BSP_(Source)"/>
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public sealed class PhysSolid
|
||||
{
|
||||
/// <summary>
|
||||
/// Size of the collision data
|
||||
/// </summary>
|
||||
public int Size;
|
||||
|
||||
/// <summary>
|
||||
/// Collision data of length <see cref="Size"/>
|
||||
/// </summary>
|
||||
public byte[]? CollisionData;
|
||||
}
|
||||
}
|
||||
@@ -25,7 +25,7 @@ namespace SabreTools.Models.BSP
|
||||
/// <summary>
|
||||
/// The planes normal vector
|
||||
/// </summary>
|
||||
public Vector3D NormalVector;
|
||||
public Vector3D? NormalVector;
|
||||
|
||||
/// <summary>
|
||||
/// Plane equation is: vNormal * X = fDist
|
||||
|
||||
@@ -8,10 +8,10 @@ namespace SabreTools.Models.BSP
|
||||
/// from the cardinal Z axis.
|
||||
/// </summary>
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct QAngle
|
||||
public class QAngle
|
||||
{
|
||||
public float X { get; set; }
|
||||
public float Y { get; set; }
|
||||
public float Z { get; set; }
|
||||
public float X;
|
||||
public float Y;
|
||||
public float Z;
|
||||
}
|
||||
}
|
||||
@@ -19,6 +19,6 @@ namespace SabreTools.Models.BSP
|
||||
/// Model name
|
||||
/// </summary>
|
||||
/// <remarks>[dictEntries][128]</remarks>
|
||||
public char[,]? Name;
|
||||
public char[][]? Name;
|
||||
}
|
||||
}
|
||||
@@ -39,12 +39,12 @@ namespace SabreTools.Models.BSP
|
||||
/// <summary>
|
||||
/// Origin
|
||||
/// </summary>
|
||||
public Vector3D Origin;
|
||||
public Vector3D? Origin;
|
||||
|
||||
/// <summary>
|
||||
/// Orientation (pitch yaw roll)
|
||||
/// </summary>
|
||||
public QAngle Angles;
|
||||
public QAngle? Angles;
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -90,7 +90,7 @@ namespace SabreTools.Models.BSP
|
||||
/// <summary>
|
||||
/// For lighting
|
||||
/// </summary>
|
||||
public Vector3D LightingOrigin;
|
||||
public Vector3D? LightingOrigin;
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -151,7 +151,7 @@ namespace SabreTools.Models.BSP
|
||||
/// <summary>
|
||||
/// Per instance color and alpha modulation
|
||||
/// </summary>
|
||||
public ColorRGBExp32 DiffuseModulation;
|
||||
public ColorRGBExp32? DiffuseModulation;
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace SabreTools.Models.BSP
|
||||
/// <summary>
|
||||
/// RGB reflectivity
|
||||
/// </summary>
|
||||
public Vector3D Reflectivity;
|
||||
public Vector3D? Reflectivity;
|
||||
|
||||
/// <summary>
|
||||
/// Index into TexdataStringTable
|
||||
|
||||
@@ -153,7 +153,7 @@ namespace SabreTools.Models.BSP
|
||||
/// <summary>
|
||||
/// LUMP_DISPINFO [26]
|
||||
/// </summary>
|
||||
public DispInfosLump? DispInfoLump { get; set; }
|
||||
public DispInfosLump? DispInfosLump { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// LUMP_ORIGINALFACES [27]
|
||||
@@ -166,8 +166,10 @@ namespace SabreTools.Models.BSP
|
||||
/// TODO: Find definition and implement
|
||||
// public PhysDispLump? PhysDispLump { get; set; }
|
||||
|
||||
// TODO: Implement Lump 29
|
||||
// https://developer.valvesoftware.com/wiki/BSP_(Source)#Physics
|
||||
/// <summary>
|
||||
/// LUMP_PHYSCOLLIDE [29]
|
||||
/// </summary>
|
||||
public PhysCollideLump? PhysCollideLump { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// LUMP_VERTNORMALS [30]
|
||||
@@ -190,7 +192,7 @@ namespace SabreTools.Models.BSP
|
||||
/// <summary>
|
||||
/// LUMP_DISP_VERTS [33]
|
||||
/// </summary>
|
||||
public DispVertsLump? DispVertLump { get; set; }
|
||||
public DispVertsLump? DispVertsLump { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// LUMP_DISP_LIGHTMAP_SAMPLE_POSITIONS [34]
|
||||
@@ -227,8 +229,10 @@ namespace SabreTools.Models.BSP
|
||||
/// TODO: Find definition and implement
|
||||
// public PrimIndicesLump? PrimIndicesLump { get; set; }
|
||||
|
||||
// TODO: Implement Lump 40
|
||||
// https://developer.valvesoftware.com/wiki/BSP_(Source)#Pakfile
|
||||
/// <summary>
|
||||
/// LUMP_PAKFILE [40]
|
||||
/// </summary>
|
||||
public PakfileLump? PakfileLump { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// LUMP_CLIPPORTALVERTS [41]
|
||||
@@ -239,7 +243,7 @@ namespace SabreTools.Models.BSP
|
||||
/// <summary>
|
||||
/// LUMP_CUBEMAPS [42]
|
||||
/// </summary>
|
||||
public CubemapsLump? CubemapLump { get; set; }
|
||||
public CubemapsLump? CubemapsLump { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// LUMP_TEXDATA_STRING_DATA [43]
|
||||
@@ -304,7 +308,7 @@ namespace SabreTools.Models.BSP
|
||||
/// <summary>
|
||||
/// LUMP_WORLDLIGHTS_HDR [54]
|
||||
/// </summary>
|
||||
public WorldLightsLump? WorldLightsLump { get; set; }
|
||||
public WorldLightsLump? HDRWorldLightsLump { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// LUMP_LEAF_AMBIENT_LIGHTING_HDR [55]
|
||||
@@ -353,7 +357,7 @@ namespace SabreTools.Models.BSP
|
||||
// public PhysLevelLump? PhysLevelLump { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// LUMP_DISP_MULTIBLEND [64]
|
||||
/// LUMP_DISP_MULTIBLEND [63]
|
||||
/// </summary>
|
||||
/// TODO: Find definition and implement
|
||||
// public DispMultiBlendLump? DispMultiBlendLump { get; set; }
|
||||
|
||||
@@ -83,7 +83,7 @@ namespace SabreTools.Models.BSP
|
||||
/// <summary>
|
||||
/// Precaculated light info for entities.
|
||||
/// </summary>
|
||||
public CompressedLightCube AmbientLighting;
|
||||
public CompressedLightCube? AmbientLighting;
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -15,17 +15,17 @@ namespace SabreTools.Models.BSP
|
||||
/// <summary>
|
||||
/// Bounding box
|
||||
/// </summary>
|
||||
public Vector3D Mins;
|
||||
public Vector3D? Mins;
|
||||
|
||||
/// <summary>
|
||||
/// Bounding box
|
||||
/// </summary>
|
||||
public Vector3D Maxs;
|
||||
public Vector3D? Maxs;
|
||||
|
||||
/// <summary>
|
||||
/// For sounds or lights
|
||||
/// </summary>
|
||||
public Vector3D OriginVector;
|
||||
public Vector3D? OriginVector;
|
||||
|
||||
/// <summary>
|
||||
/// Index into nodes
|
||||
|
||||
@@ -22,7 +22,7 @@ namespace SabreTools.Models.BSP
|
||||
/// <summary>
|
||||
/// Texture S-vector
|
||||
/// </summary>
|
||||
public Vector3D TextureSVector;
|
||||
public Vector3D? TextureSVector;
|
||||
|
||||
/// <summary>
|
||||
/// Texture shift in the S direction
|
||||
@@ -32,7 +32,7 @@ namespace SabreTools.Models.BSP
|
||||
/// <summary>
|
||||
/// Texture T-vector
|
||||
/// </summary>
|
||||
public Vector3D TextureTVector;
|
||||
public Vector3D? TextureTVector;
|
||||
|
||||
/// <summary>
|
||||
/// Texture shift in the T direction
|
||||
@@ -42,7 +42,7 @@ namespace SabreTools.Models.BSP
|
||||
/// <summary>
|
||||
/// Lightmap S-vector
|
||||
/// </summary>
|
||||
public Vector3D LightmapSVector;
|
||||
public Vector3D? LightmapSVector;
|
||||
|
||||
/// <summary>
|
||||
/// Lightmap shift in the S direction
|
||||
@@ -52,7 +52,7 @@ namespace SabreTools.Models.BSP
|
||||
/// <summary>
|
||||
/// Lightmap T-vector
|
||||
/// </summary>
|
||||
public Vector3D LightmapTVector;
|
||||
public Vector3D? LightmapTVector;
|
||||
|
||||
/// <summary>
|
||||
/// Lightmap shift in the T direction
|
||||
|
||||
@@ -8,10 +8,10 @@ namespace SabreTools.Models.BSP
|
||||
/// spec and the code of the hlbsp project.
|
||||
/// </summary>
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct Vector3D
|
||||
public class Vector3D
|
||||
{
|
||||
public float X { get; set; }
|
||||
public float Y { get; set; }
|
||||
public float Z { get; set; }
|
||||
public float X;
|
||||
public float Y;
|
||||
public float Z;
|
||||
}
|
||||
}
|
||||
@@ -17,6 +17,6 @@ namespace SabreTools.Models.BSP
|
||||
public int NumClusters { get; set; }
|
||||
|
||||
/// <remarks>[numclusters][2]</remarks>
|
||||
public int[,]? ByteOffsets { get; set; }
|
||||
public int[][]? ByteOffsets { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -14,14 +14,14 @@ namespace SabreTools.Models.BSP
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public sealed class WorldLight
|
||||
{
|
||||
public Vector3D Origin;
|
||||
public Vector3D? Origin;
|
||||
|
||||
public Vector3D Intensity;
|
||||
public Vector3D? Intensity;
|
||||
|
||||
/// <summary>
|
||||
/// For surfaces and spotlights
|
||||
/// </summary>
|
||||
public Vector3D Normal;
|
||||
public Vector3D? Normal;
|
||||
|
||||
public int Cluster;
|
||||
|
||||
|
||||
@@ -6,6 +6,6 @@ namespace SabreTools.Models.ClrMamePro
|
||||
public ClrMamePro? ClrMamePro { get; set; }
|
||||
|
||||
/// <remarks>game, machine, resource, set</remarks>
|
||||
public GameBase?[]? Game { get; set; }
|
||||
public GameBase[]? Game { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,7 @@ namespace SabreTools.Models.Compression.Quantum
|
||||
/// order in the table, and with every symbol in the table
|
||||
/// having a frequency of 1
|
||||
/// </remarks>
|
||||
public ModelSymbol?[]? Symbols { get; set; }
|
||||
public ModelSymbol[]? Symbols { get; set; }
|
||||
|
||||
/// <remarks>
|
||||
/// The initial total frequency is equal to the number of entries
|
||||
|
||||
@@ -25,6 +25,6 @@ namespace SabreTools.Models.CueSheets
|
||||
/// <summary>
|
||||
/// List of TRACK in FILE
|
||||
/// </summary>
|
||||
public CueTrack?[]? Tracks { get; set; }
|
||||
public CueTrack[]? Tracks { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,6 +36,6 @@ namespace SabreTools.Models.CueSheets
|
||||
/// <summary>
|
||||
/// List of FILE in cuesheet
|
||||
/// </summary>
|
||||
public CueFile?[]? Files { get; set; }
|
||||
public CueFile[]? Files { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ namespace SabreTools.Models.CueSheets
|
||||
/// List of INDEX in TRACK
|
||||
/// </summary>
|
||||
/// <remarks>Must start with 0 or 1 and then sequential</remarks>
|
||||
public CueIndex?[]? Indices { get; set; }
|
||||
public CueIndex[]? Indices { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// POSTGAP
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace SabreTools.Models.GCF
|
||||
/// <summary>
|
||||
/// Block entries data
|
||||
/// </summary>
|
||||
public BlockEntry?[]? BlockEntries { get; set; }
|
||||
public BlockEntry[]? BlockEntries { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Fragmentation map header data
|
||||
@@ -31,7 +31,7 @@ namespace SabreTools.Models.GCF
|
||||
/// <summary>
|
||||
/// Fragmentation map data
|
||||
/// </summary>
|
||||
public FragmentationMap?[]? FragmentationMaps { get; set; }
|
||||
public FragmentationMap[]? FragmentationMaps { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Block entry map header data
|
||||
@@ -43,7 +43,7 @@ namespace SabreTools.Models.GCF
|
||||
/// Block entry map data
|
||||
/// </summary>
|
||||
/// <remarks>Part of version 5 but not version 6.</remarks>
|
||||
public BlockEntryMap?[]? BlockEntryMaps { get; set; }
|
||||
public BlockEntryMap[]? BlockEntryMaps { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Directory header data
|
||||
@@ -53,7 +53,7 @@ namespace SabreTools.Models.GCF
|
||||
/// <summary>
|
||||
/// Directory entries data
|
||||
/// </summary>
|
||||
public DirectoryEntry?[]? DirectoryEntries { get; set; }
|
||||
public DirectoryEntry[]? DirectoryEntries { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Directory names data
|
||||
@@ -63,22 +63,22 @@ namespace SabreTools.Models.GCF
|
||||
/// <summary>
|
||||
/// Directory info 1 entries data
|
||||
/// </summary>
|
||||
public DirectoryInfo1Entry?[]? DirectoryInfo1Entries { get; set; }
|
||||
public DirectoryInfo1Entry[]? DirectoryInfo1Entries { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Directory info 2 entries data
|
||||
/// </summary>
|
||||
public DirectoryInfo2Entry?[]? DirectoryInfo2Entries { get; set; }
|
||||
public DirectoryInfo2Entry[]? DirectoryInfo2Entries { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Directory copy entries data
|
||||
/// </summary>
|
||||
public DirectoryCopyEntry?[]? DirectoryCopyEntries { get; set; }
|
||||
public DirectoryCopyEntry[]? DirectoryCopyEntries { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Directory local entries data
|
||||
/// </summary>
|
||||
public DirectoryLocalEntry?[]? DirectoryLocalEntries { get; set; }
|
||||
public DirectoryLocalEntry[]? DirectoryLocalEntries { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Directory map header data
|
||||
@@ -88,7 +88,7 @@ namespace SabreTools.Models.GCF
|
||||
/// <summary>
|
||||
/// Directory map entries data
|
||||
/// </summary>
|
||||
public DirectoryMapEntry?[]? DirectoryMapEntries { get; set; }
|
||||
public DirectoryMapEntry[]? DirectoryMapEntries { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Checksum header data
|
||||
@@ -103,12 +103,12 @@ namespace SabreTools.Models.GCF
|
||||
/// <summary>
|
||||
/// Checksum map entries data
|
||||
/// </summary>
|
||||
public ChecksumMapEntry?[]? ChecksumMapEntries { get; set; }
|
||||
public ChecksumMapEntry[]? ChecksumMapEntries { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Checksum entries data
|
||||
/// </summary>
|
||||
public ChecksumEntry?[]? ChecksumEntries { get; set; }
|
||||
public ChecksumEntry[]? ChecksumEntries { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Data block header data
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace SabreTools.Models.InstallShieldCabinet
|
||||
/// <summary>
|
||||
/// Standard file descriptors
|
||||
/// </summary>
|
||||
public FileDescriptor?[]? FileDescriptors { get; set; }
|
||||
public FileDescriptor[]? FileDescriptors { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -54,7 +54,7 @@ namespace SabreTools.Models.InstallShieldCabinet
|
||||
/// <summary>
|
||||
/// File groups
|
||||
/// </summary>
|
||||
public FileGroup?[]? FileGroups { get; set; }
|
||||
public FileGroup[]? FileGroups { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -68,7 +68,7 @@ namespace SabreTools.Models.InstallShieldCabinet
|
||||
/// <summary>
|
||||
/// Components
|
||||
/// </summary>
|
||||
public Component?[]? Components { get; set; }
|
||||
public Component[]? Components { get; set; }
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
@@ -51,6 +51,6 @@
|
||||
/// <summary>
|
||||
/// Table entries in the bundle
|
||||
/// </summary>
|
||||
public EntryTableEntry?[]? TableEntries { get; set; }
|
||||
public EntryTableEntry[]? TableEntries { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,69 +23,69 @@ namespace SabreTools.Models.LinearExecutable
|
||||
/// <summary>
|
||||
/// Object table
|
||||
/// </summary>
|
||||
public ObjectTableEntry?[]? ObjectTable { get; set; }
|
||||
public ObjectTableEntry[]? ObjectTable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Object page map
|
||||
/// </summary>
|
||||
public ObjectPageMapEntry?[]? ObjectPageMap { get; set; }
|
||||
public ObjectPageMapEntry[]? ObjectPageMap { get; set; }
|
||||
|
||||
// TODO: Object iterate data map table (Undefined)
|
||||
|
||||
/// <summary>
|
||||
/// Resource table
|
||||
/// </summary>
|
||||
public ResourceTableEntry?[]? ResourceTable { get; set; }
|
||||
public ResourceTableEntry[]? ResourceTable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Resident Name table
|
||||
/// </summary>
|
||||
public ResidentNamesTableEntry?[]? ResidentNamesTable { get; set; }
|
||||
public ResidentNamesTableEntry[]? ResidentNamesTable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Entry table
|
||||
/// </summary>
|
||||
public EntryTableBundle?[]? EntryTable { get; set; }
|
||||
public EntryTableBundle[]? EntryTable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Module format directives table (optional)
|
||||
/// </summary>
|
||||
public ModuleFormatDirectivesTableEntry?[]? ModuleFormatDirectivesTable { get; set; }
|
||||
public ModuleFormatDirectivesTableEntry[]? ModuleFormatDirectivesTable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Verify record directive table (optional)
|
||||
/// </summary>
|
||||
public VerifyRecordDirectiveTableEntry?[]? VerifyRecordDirectiveTable { get; set; }
|
||||
public VerifyRecordDirectiveTableEntry[]? VerifyRecordDirectiveTable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Fix-up page table
|
||||
/// </summary>
|
||||
public FixupPageTableEntry?[]? FixupPageTable { get; set; }
|
||||
public FixupPageTableEntry[]? FixupPageTable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Fix-up record table
|
||||
/// </summary>
|
||||
public FixupRecordTableEntry?[]? FixupRecordTable { get; set; }
|
||||
public FixupRecordTableEntry[]? FixupRecordTable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Import module name table
|
||||
/// </summary>
|
||||
public ImportModuleNameTableEntry?[]? ImportModuleNameTable { get; set; }
|
||||
public ImportModuleNameTableEntry[]? ImportModuleNameTable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Import procedure name table
|
||||
/// </summary>
|
||||
public ImportModuleProcedureNameTableEntry?[]? ImportModuleProcedureNameTable { get; set; }
|
||||
public ImportModuleProcedureNameTableEntry[]? ImportModuleProcedureNameTable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Per-Page checksum table
|
||||
/// </summary>
|
||||
public PerPageChecksumTableEntry?[]? PerPageChecksumTable { get; set; }
|
||||
public PerPageChecksumTableEntry[]? PerPageChecksumTable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Non-Resident Name table
|
||||
/// </summary>
|
||||
public NonResidentNamesTableEntry?[]? NonResidentNamesTable { get; set; }
|
||||
public NonResidentNamesTableEntry[]? NonResidentNamesTable { get; set; }
|
||||
|
||||
// TODO: Non-resident directives data (Undefined)
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
namespace SabreTools.Models.LinearExecutable
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace SabreTools.Models.LinearExecutable
|
||||
{
|
||||
/// <summary>
|
||||
/// The resident and non-resident name tables define the ASCII names and ordinal
|
||||
@@ -25,6 +27,7 @@
|
||||
/// </summary>
|
||||
/// <see href="https://faydoc.tripod.com/formats/exe-LE.htm"/>
|
||||
/// <see href="http://www.edm2.com/index.php/LX_-_Linear_eXecutable_Module_Format_Description"/>
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public sealed class NonResidentNamesTableEntry
|
||||
{
|
||||
/// <summary>
|
||||
@@ -39,7 +42,7 @@
|
||||
/// signifies that additional information is contained in the linear EXE module and
|
||||
/// will be used in the future for parameter type checking.
|
||||
/// </remarks>
|
||||
public byte Length { get; set; } // TODO: Remove in lieu of AnsiBStr
|
||||
public byte Length { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// ASCII String.
|
||||
|
||||
@@ -24,6 +24,6 @@ namespace SabreTools.Models.MSDOS
|
||||
/// make the loader add start segment address to the value at offset
|
||||
/// 1*0x10+0x1A=0x2A within the program data.
|
||||
/// </summary>
|
||||
public RelocationEntry?[]? RelocationTable { get; set; }
|
||||
public RelocationEntry[]? RelocationTable { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,6 +51,6 @@
|
||||
/// <summary>
|
||||
/// Data blocks associated with this folder
|
||||
/// </summary>
|
||||
public CFDATA?[]? DataBlocks { get; set; }
|
||||
public CFDATA[]? DataBlocks { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,11 +17,11 @@
|
||||
/// <summary>
|
||||
/// One or more CFFOLDER entries
|
||||
/// </summary>
|
||||
public CFFOLDER?[]? Folders { get; set; }
|
||||
public CFFOLDER[]? Folders { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// A series of one or more cabinet file (CFFILE) entries
|
||||
/// </summary>
|
||||
public CFFILE?[]? Files { get; set; }
|
||||
public CFFILE[]? Files { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,12 +37,12 @@
|
||||
/// <summary>
|
||||
/// Hash Table (optional)
|
||||
/// </summary>
|
||||
public HashEntry?[]? HashTable { get; set; }
|
||||
public HashEntry[]? HashTable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Block Table (optional)
|
||||
/// </summary>
|
||||
public BlockEntry?[]? BlockTable { get; set; }
|
||||
public BlockEntry[]? BlockTable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Hi-Block Table (optional)
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace SabreTools.Models.N3DS
|
||||
/// <remarks>
|
||||
/// https://www.3dbrew.org/wiki/CIA#Certificate_Chain
|
||||
/// </remarks>
|
||||
public Certificate?[]? CertificateChain { get; set; }
|
||||
public Certificate[]? CertificateChain { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Ticket
|
||||
@@ -40,7 +40,7 @@ namespace SabreTools.Models.N3DS
|
||||
/// <summary>
|
||||
/// Content file data
|
||||
/// </summary>
|
||||
public NCCHHeader?[]? Partitions { get; set; }
|
||||
public NCCHHeader[]? Partitions { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Content file data
|
||||
|
||||
@@ -23,21 +23,21 @@ namespace SabreTools.Models.N3DS
|
||||
/// <summary>
|
||||
/// NCCH partitions
|
||||
/// </summary>
|
||||
public NCCHHeader?[]? Partitions { get; set; }
|
||||
public NCCHHeader[]? Partitions { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// NCCH extended headers
|
||||
/// </summary>
|
||||
public NCCHExtendedHeader?[]? ExtendedHeaders { get; set; }
|
||||
public NCCHExtendedHeader[]? ExtendedHeaders { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// ExeFS headers associated with each partition
|
||||
/// </summary>
|
||||
public ExeFSHeader?[]? ExeFSHeaders { get; set; }
|
||||
public ExeFSHeader[]? ExeFSHeaders { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// RomFS headers associated with each partition
|
||||
/// </summary>
|
||||
public RomFSHeader?[]? RomFSHeaders { get; set; }
|
||||
public RomFSHeader[]? RomFSHeaders { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,7 @@
|
||||
/// <summary>
|
||||
/// File headers (10 headers maximum, 16 bytes each)
|
||||
/// </summary>
|
||||
public ExeFSFileHeader?[]? FileHeaders { get; set; }
|
||||
public ExeFSFileHeader[]? FileHeaders { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Reserved
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
/// <summary>
|
||||
/// Offset & Length partition table, in media units
|
||||
/// </summary>
|
||||
public PartitionTableEntry?[]? PartitionsTable { get; set; }
|
||||
public PartitionTableEntry[]? PartitionsTable { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -173,6 +173,6 @@ namespace SabreTools.Models.N3DS
|
||||
/// <remarks>
|
||||
/// https://www.3dbrew.org/wiki/Ticket#Certificate_Chain
|
||||
/// </remarks>
|
||||
public Certificate?[]? CertificateChain { get; set; }
|
||||
public Certificate[]? CertificateChain { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,13 +136,13 @@ namespace SabreTools.Models.N3DS
|
||||
/// <summary>
|
||||
/// There are 64 of these records, usually only the first is used.
|
||||
/// </summary>
|
||||
public ContentInfoRecord?[]? ContentInfoRecords { get; set; }
|
||||
public ContentInfoRecord[]? ContentInfoRecords { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// There is one of these for each content contained in this title.
|
||||
/// (Determined by "Content Count" in the TMD Header).
|
||||
/// </summary>
|
||||
public ContentChunkRecord?[]? ContentChunkRecords { get; set; }
|
||||
public ContentChunkRecord[]? ContentChunkRecords { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Certificate chain
|
||||
@@ -150,6 +150,6 @@ namespace SabreTools.Models.N3DS
|
||||
/// <remarks>
|
||||
/// https://www.3dbrew.org/wiki/Title_metadata#Certificate_Chain
|
||||
/// </remarks>
|
||||
public Certificate?[]? CertificateChain { get; set; }
|
||||
public Certificate[]? CertificateChain { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -21,7 +21,7 @@ namespace SabreTools.Models.NCF
|
||||
/// <summary>
|
||||
/// Directory entries data
|
||||
/// </summary>
|
||||
public DirectoryEntry?[]? DirectoryEntries { get; set; }
|
||||
public DirectoryEntry[]? DirectoryEntries { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Directory names data
|
||||
@@ -31,22 +31,22 @@ namespace SabreTools.Models.NCF
|
||||
/// <summary>
|
||||
/// Directory info 1 entries data
|
||||
/// </summary>
|
||||
public DirectoryInfo1Entry?[]? DirectoryInfo1Entries { get; set; }
|
||||
public DirectoryInfo1Entry[]? DirectoryInfo1Entries { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Directory info 2 entries data
|
||||
/// </summary>
|
||||
public DirectoryInfo2Entry?[]? DirectoryInfo2Entries { get; set; }
|
||||
public DirectoryInfo2Entry[]? DirectoryInfo2Entries { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Directory copy entries data
|
||||
/// </summary>
|
||||
public DirectoryCopyEntry?[]? DirectoryCopyEntries { get; set; }
|
||||
public DirectoryCopyEntry[]? DirectoryCopyEntries { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Directory local entries data
|
||||
/// </summary>
|
||||
public DirectoryLocalEntry?[]? DirectoryLocalEntries { get; set; }
|
||||
public DirectoryLocalEntry[]? DirectoryLocalEntries { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Unknown header data
|
||||
@@ -56,7 +56,7 @@ namespace SabreTools.Models.NCF
|
||||
/// <summary>
|
||||
/// Unknown entries data
|
||||
/// </summary>
|
||||
public UnknownEntry?[]? UnknownEntries { get; set; }
|
||||
public UnknownEntry[]? UnknownEntries { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Checksum header data
|
||||
@@ -71,11 +71,11 @@ namespace SabreTools.Models.NCF
|
||||
/// <summary>
|
||||
/// Checksum map entries data
|
||||
/// </summary>
|
||||
public ChecksumMapEntry?[]? ChecksumMapEntries { get; set; }
|
||||
public ChecksumMapEntry[]? ChecksumMapEntries { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Checksum entries data
|
||||
/// </summary>
|
||||
public ChecksumEntry?[]? ChecksumEntries { get; set; }
|
||||
public ChecksumEntry[]? ChecksumEntries { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,6 @@
|
||||
/// <summary>
|
||||
/// A table of relocation records follows.
|
||||
/// </summary>
|
||||
public RelocationRecord?[]? RelocationRecords { get; set; }
|
||||
public RelocationRecord[]? RelocationRecords { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ namespace SabreTools.Models.NewExecutable
|
||||
/// <summary>
|
||||
/// A table of resource type information blocks follows.
|
||||
/// </summary>
|
||||
public ResourceTypeInformationEntry?[]? ResourceTypes { get; set; }
|
||||
public ResourceTypeInformationEntry[]? ResourceTypes { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Resource type and name strings are stored at the end of the
|
||||
|
||||
@@ -29,6 +29,6 @@
|
||||
/// <summary>
|
||||
/// A table of resources for this type follows.
|
||||
/// </summary>
|
||||
public ResourceTypeResourceEntry?[]? Resources { get; set; }
|
||||
public ResourceTypeResourceEntry[]? Resources { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,6 @@ namespace SabreTools.Models.Nitro
|
||||
/// <summary>
|
||||
/// File allocation table
|
||||
/// </summary>
|
||||
public FileAllocationTableEntry?[]? FileAllocationTable { get; set; }
|
||||
public FileAllocationTableEntry[]? FileAllocationTable { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -15,11 +15,11 @@ namespace SabreTools.Models.Nitro
|
||||
/// <summary>
|
||||
/// Folder allocation table
|
||||
/// </summary>
|
||||
public FolderAllocationTableEntry?[]? FolderAllocationTable { get; set; }
|
||||
public FolderAllocationTableEntry[]? FolderAllocationTable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Name list
|
||||
/// </summary>
|
||||
public NameListEntry?[]? NameList { get; set; }
|
||||
public NameListEntry[]? NameList { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -14,6 +14,6 @@ namespace SabreTools.Models.PAK
|
||||
/// <summary>
|
||||
/// Deserialized directory items data
|
||||
/// </summary>
|
||||
public DirectoryItem?[]? DirectoryItems { get; set; }
|
||||
public DirectoryItem[]? DirectoryItems { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace SabreTools.Models.PFF
|
||||
/// <summary>
|
||||
/// Segments
|
||||
/// </summary>
|
||||
public Segment?[]? Segments { get; set; }
|
||||
public Segment[]? Segments { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Footer
|
||||
|
||||
@@ -29,6 +29,6 @@
|
||||
/// <summary>
|
||||
/// Disc information and emergency brake units
|
||||
/// </summary>
|
||||
public DiscInformationUnit?[]? Units { get; set; }
|
||||
public DiscInformationUnit[]? Units { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace SabreTools.Models.PKZIP
|
||||
/// Encryption headers, may appear second in each group
|
||||
/// </summary>
|
||||
/// TODO: Determine the model for the encryption headers
|
||||
public byte[]?[]? EncryptionHeaders { get; set; }
|
||||
public byte[][]? EncryptionHeaders { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// File data, appears after the encryption header
|
||||
@@ -28,12 +28,12 @@ namespace SabreTools.Models.PKZIP
|
||||
/// <summary>
|
||||
/// Data descriptors, appears after the file data
|
||||
/// </summary>
|
||||
public DataDescriptor?[]? DataDescriptors { get; set; }
|
||||
public DataDescriptor[]? DataDescriptors { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// ZIP64 Data descriptors, appears after the file data
|
||||
/// </summary>
|
||||
public DataDescriptor64?[]? ZIP64DataDescriptors { get; set; }
|
||||
public DataDescriptor64[]? ZIP64DataDescriptors { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace SabreTools.Models.PlayJ
|
||||
/// <summary>
|
||||
/// Data files (V2 only)
|
||||
/// </summary>
|
||||
public DataFile?[]? DataFiles { get; set; }
|
||||
public DataFile[]? DataFiles { get; set; }
|
||||
|
||||
// After the data files is a block starting with 0x00000001
|
||||
// This block then contains highly repeating data, possible audio samples?
|
||||
|
||||
@@ -13,6 +13,6 @@ namespace SabreTools.Models.PlayJ
|
||||
/// <summary>
|
||||
/// Embedded audio files / headers
|
||||
/// </summary>
|
||||
public AudioFile?[]? AudioFiles { get; set; }
|
||||
public AudioFile[]? AudioFiles { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -12,10 +12,10 @@ namespace SabreTools.Models.PortableExecutable
|
||||
#region Group
|
||||
|
||||
[XmlElement("assemblyIdentity")]
|
||||
public AssemblyIdentity?[]? AssemblyIdentities { get; set; }
|
||||
public AssemblyIdentity[]? AssemblyIdentities { get; set; }
|
||||
|
||||
[XmlElement("noInheritable")]
|
||||
public AssemblyNoInheritable?[]? NoInheritables { get; set; }
|
||||
public AssemblyNoInheritable[]? NoInheritables { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -31,19 +31,19 @@ namespace SabreTools.Models.PortableExecutable
|
||||
//public AssemblyNoInheritable NoInheritable { get; set; }
|
||||
|
||||
[XmlElement("comInterfaceExternalProxyStub")]
|
||||
public AssemblyCOMInterfaceExternalProxyStub?[]? COMInterfaceExternalProxyStub { get; set; }
|
||||
public AssemblyCOMInterfaceExternalProxyStub[]? COMInterfaceExternalProxyStub { get; set; }
|
||||
|
||||
[XmlElement("dependency")]
|
||||
public AssemblyDependency?[]? Dependency { get; set; }
|
||||
public AssemblyDependency[]? Dependency { get; set; }
|
||||
|
||||
[XmlElement("file")]
|
||||
public AssemblyFile?[]? File { get; set; }
|
||||
public AssemblyFile[]? File { get; set; }
|
||||
|
||||
[XmlElement("clrClass")]
|
||||
public AssemblyCommonLanguageRuntimeClass?[]? CLRClass { get; set; }
|
||||
public AssemblyCommonLanguageRuntimeClass[]? CLRClass { get; set; }
|
||||
|
||||
[XmlElement("clrSurrogate")]
|
||||
public AssemblyCommonLanguageSurrogateClass?[]? CLRSurrogate { get; set; }
|
||||
public AssemblyCommonLanguageSurrogateClass[]? CLRSurrogate { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -94,7 +94,7 @@ namespace SabreTools.Models.PortableExecutable
|
||||
public string? Description { get; set; }
|
||||
|
||||
[XmlElement("progid")]
|
||||
public AssemblyProgID?[]? ProgIDs { get; set; }
|
||||
public AssemblyProgID[]? ProgIDs { get; set; }
|
||||
}
|
||||
|
||||
/// <see href="https://learn.microsoft.com/en-us/windows/win32/sbscs/manifest-file-schema"/>
|
||||
@@ -166,7 +166,7 @@ namespace SabreTools.Models.PortableExecutable
|
||||
public string? ThreadingModel { get; set; }
|
||||
|
||||
[XmlElement("progid")]
|
||||
public AssemblyProgID?[]? ProgIDs { get; set; }
|
||||
public AssemblyProgID[]? ProgIDs { get; set; }
|
||||
}
|
||||
|
||||
/// <see href="https://learn.microsoft.com/en-us/windows/win32/sbscs/manifest-file-schema"/>
|
||||
@@ -199,7 +199,7 @@ namespace SabreTools.Models.PortableExecutable
|
||||
public AssemblyIdentity? AssemblyIdentity { get; set; }
|
||||
|
||||
[XmlElement("bindingRedirect")]
|
||||
public AssemblyBindingRedirect?[]? BindingRedirect { get; set; }
|
||||
public AssemblyBindingRedirect[]? BindingRedirect { get; set; }
|
||||
}
|
||||
|
||||
/// <see href="https://learn.microsoft.com/en-us/windows/win32/sbscs/manifest-file-schema"/>
|
||||
@@ -255,16 +255,16 @@ namespace SabreTools.Models.PortableExecutable
|
||||
#region Group
|
||||
|
||||
[XmlElement("comClass")]
|
||||
public AssemblyCOMClass?[]? COMClass { get; set; }
|
||||
public AssemblyCOMClass[]? COMClass { get; set; }
|
||||
|
||||
[XmlElement("comInterfaceProxyStub")]
|
||||
public AssemblyCOMInterfaceProxyStub?[]? COMInterfaceProxyStub { get; set; }
|
||||
public AssemblyCOMInterfaceProxyStub[]? COMInterfaceProxyStub { get; set; }
|
||||
|
||||
[XmlElement("typelib")]
|
||||
public AssemblyTypeLib?[]? Typelib { get; set; }
|
||||
public AssemblyTypeLib[]? Typelib { get; set; }
|
||||
|
||||
[XmlElement("windowClass")]
|
||||
public AssemblyWindowClass?[]? WindowClass { get; set; }
|
||||
public AssemblyWindowClass[]? WindowClass { get; set; }
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
@@ -46,6 +46,6 @@
|
||||
/// in the Page RVA field for the block. This offset
|
||||
/// specifies where the base relocation is to be applied.
|
||||
/// </summary>
|
||||
public BaseRelocationTypeOffsetFieldEntry?[]? TypeOffsetFieldEntries { get; set; }
|
||||
public BaseRelocationTypeOffsetFieldEntry[]? TypeOffsetFieldEntries { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,6 +33,6 @@
|
||||
/// file and is not mapped into the run-time address space). If it is mapped,
|
||||
/// the RVA is its address.
|
||||
/// </summary>
|
||||
public DebugDirectoryEntry?[]? DebugDirectoryTable { get; set; }
|
||||
public DebugDirectoryEntry[]? DebugDirectoryTable { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
/// box. The cdit member specifies the number of DLGITEMTEMPLATE structures in the template.
|
||||
/// These DLGITEMTEMPLATE structures must be aligned on DWORD boundaries.
|
||||
/// </summary>
|
||||
public DialogItemTemplate?[]? DialogItemTemplates { get; set; }
|
||||
public DialogItemTemplate[]? DialogItemTemplates { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Following the DLGTEMPLATEEX header in an extended dialog box template is one or more
|
||||
@@ -39,7 +39,7 @@
|
||||
/// member of the DLGITEMTEMPLATEEX structure specifies the number of DLGITEMTEMPLATEEX
|
||||
/// structures that follow in the template.
|
||||
/// </summary>
|
||||
public DialogItemTemplateExtended?[]? ExtendedDialogItemTemplates { get; set; }
|
||||
public DialogItemTemplateExtended[]? ExtendedDialogItemTemplates { get; set; }
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
@@ -40,12 +40,12 @@ namespace SabreTools.Models.PortableExecutable
|
||||
/// <summary>
|
||||
/// Section table
|
||||
/// </summary>
|
||||
public SectionHeader?[]? SectionTable { get; set; }
|
||||
public SectionHeader[]? SectionTable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// COFF symbol table
|
||||
/// </summary>
|
||||
public COFFSymbolTableEntry?[]? COFFSymbolTable { get; set; }
|
||||
public COFFSymbolTableEntry[]? COFFSymbolTable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// COFF string table
|
||||
@@ -55,7 +55,7 @@ namespace SabreTools.Models.PortableExecutable
|
||||
/// <summary>
|
||||
/// Attribute certificate table
|
||||
/// </summary>
|
||||
public AttributeCertificateTableEntry?[]? AttributeCertificateTable { get; set; }
|
||||
public AttributeCertificateTableEntry[]? AttributeCertificateTable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Delay-load directory table
|
||||
@@ -71,7 +71,7 @@ namespace SabreTools.Models.PortableExecutable
|
||||
/// <summary>
|
||||
/// Base relocation table (.reloc)
|
||||
/// </summary>
|
||||
public BaseRelocationBlock?[]? BaseRelocationTable { get; set; }
|
||||
public BaseRelocationBlock[]? BaseRelocationTable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Debug table (.debug*)
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
/// can import a symbol by using an index to this table (an ordinal) or, optionally, by
|
||||
/// using the public name that corresponds to the ordinal if a public name is defined.
|
||||
/// </summary>
|
||||
public ExportAddressTableEntry?[]? ExportAddressTable { get; set; }
|
||||
public ExportAddressTableEntry[]? ExportAddressTable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// An array of pointers to the public export names, sorted in ascending order.
|
||||
|
||||
@@ -16,6 +16,6 @@
|
||||
/// A structure that contains a unique ordinal identifier for each font in the resource. The DE
|
||||
/// member is a placeholder for the variable-length array of DIRENTRY structures.
|
||||
/// </summary>
|
||||
public DirEntry?[]? DE { get; set; }
|
||||
public DirEntry[]? DE { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,23 +23,23 @@ namespace SabreTools.Models.PortableExecutable
|
||||
/// The import information begins with the import directory table, which describes the
|
||||
/// remainder of the import information.
|
||||
/// </summary>
|
||||
public ImportDirectoryTableEntry?[]? ImportDirectoryTable { get; set; }
|
||||
public ImportDirectoryTableEntry[]? ImportDirectoryTable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// An import lookup table is an array of 32-bit numbers for PE32 or an array of 64-bit
|
||||
/// numbers for PE32+.
|
||||
/// </summary>
|
||||
public Dictionary<int, ImportLookupTableEntry?[]?>? ImportLookupTables { get; set; }
|
||||
public Dictionary<int, ImportLookupTableEntry[]?>? ImportLookupTables { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// These addresses are the actual memory addresses of the symbols, although technically
|
||||
/// they are still called "virtual addresses".
|
||||
/// </summary>
|
||||
public Dictionary<int, ImportAddressTableEntry?[]?>? ImportAddressTables { get; set; }
|
||||
public Dictionary<int, ImportAddressTableEntry[]?>? ImportAddressTables { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// One hint/name table suffices for the entire import section.
|
||||
/// </summary>
|
||||
public HintNameTableEntry?[]? HintNameTable { get; set; }
|
||||
public HintNameTableEntry[]? HintNameTable { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,6 @@
|
||||
/// <summary>
|
||||
/// Menu items
|
||||
/// </summary>
|
||||
public MenuItem?[]? MenuItems { get; set; }
|
||||
public MenuItem[]? MenuItems { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace SabreTools.Models.PortableExecutable
|
||||
/// <summary>
|
||||
/// An array of structures. The array is the size indicated by the NumberOfBlocks member.
|
||||
/// </summary>
|
||||
public MessageResourceBlock?[]? Blocks { get; set; }
|
||||
public MessageResourceBlock[]? Blocks { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Message resource entries
|
||||
|
||||
@@ -54,6 +54,6 @@
|
||||
/// strings to identify Type, Name, or Language entries (depending on the
|
||||
/// level of the table).
|
||||
/// </summary>
|
||||
public ResourceDirectoryEntry?[]? Entries { get; set; }
|
||||
public ResourceDirectoryEntry[]? Entries { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,11 +100,11 @@
|
||||
/// <summary>
|
||||
/// COFF Relocations (Object Only)
|
||||
/// </summary>
|
||||
public COFFRelocation?[]? COFFRelocations { get; set; }
|
||||
public COFFRelocation[]? COFFRelocations { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// COFF Line Numbers (Deprecated)
|
||||
/// </summary>
|
||||
public COFFLineNumber?[]? COFFLineNumbers { get; set; }
|
||||
public COFFLineNumber[]? COFFLineNumbers { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,6 +56,6 @@ namespace SabreTools.Models.PortableExecutable
|
||||
/// <summary>
|
||||
/// Entry table
|
||||
/// </summary>
|
||||
public SecuROMAddDEntry?[]? Entries { get; set; }
|
||||
public SecuROMAddDEntry[]? Entries { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,6 +38,6 @@
|
||||
/// member indicates the appropriate language and code page for displaying the text in
|
||||
/// that StringTable structure.
|
||||
/// </summary>
|
||||
public StringTable?[]? Children { get; set; }
|
||||
public StringTable[]? Children { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,6 +41,6 @@
|
||||
/// <summary>
|
||||
/// An array of one or more StringData structures.
|
||||
/// </summary>
|
||||
public StringData?[]? Children { get; set; }
|
||||
public StringData[]? Children { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,6 +36,6 @@
|
||||
/// <summary>
|
||||
/// Typically contains a list of languages that the application or DLL supports.
|
||||
/// </summary>
|
||||
public VarData?[]? Children { get; set; }
|
||||
public VarData[]? Children { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace SabreTools.Models.Quantum
|
||||
/// <summary>
|
||||
/// This is immediately followed by the list of files
|
||||
/// </summary>
|
||||
public FileDescriptor?[]? FileList { get; set; }
|
||||
public FileDescriptor[]? FileList { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Immediately following the list of files is the compressed data
|
||||
|
||||
@@ -23,11 +23,11 @@
|
||||
/// <summary>
|
||||
/// Files
|
||||
/// </summary>
|
||||
public FileEntry?[]? Files { get; set; }
|
||||
public FileEntry[]? Files { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// File headers
|
||||
/// </summary>
|
||||
public FileHeader?[]? FileHeaders { get; set; }
|
||||
public FileHeader[]? FileHeaders { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
19
SabreTools.Models/SGA/Archive.cs
Normal file
19
SabreTools.Models/SGA/Archive.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
namespace SabreTools.Models.SGA
|
||||
{
|
||||
/// <summary>
|
||||
/// SGA game archive
|
||||
/// </summary>
|
||||
/// <see href="https://github.com/RavuAlHemio/hllib/blob/master/HLLib/SGAFile.h"/>
|
||||
public sealed class Archive
|
||||
{
|
||||
/// <summary>
|
||||
///Header data
|
||||
/// </summary>
|
||||
public Header? Header { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Directory data
|
||||
/// </summary>
|
||||
public Directory? Directory { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,50 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace SabreTools.Models.SGA
|
||||
{
|
||||
/// <see href="https://github.com/RavuAlHemio/hllib/blob/master/HLLib/SGAFile.h"/>
|
||||
public abstract class Directory { }
|
||||
public abstract class Directory
|
||||
{
|
||||
/// <summary>
|
||||
/// Source SGA file
|
||||
/// </summary>
|
||||
public Archive? File { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Specialization File7 and up where the CRC moved to the header and the CRC is of the compressed data and there are stronger hashes.
|
||||
/// </summary>
|
||||
/// <see href="https://github.com/RavuAlHemio/hllib/blob/master/HLLib/SGAFile.h"/>
|
||||
public class Directory<THeader, TDirectoryHeader, TSection, TFolder, TFile, U> : Directory
|
||||
where THeader : Header
|
||||
where TDirectoryHeader : DirectoryHeader<U>
|
||||
where TSection : Section<U>
|
||||
where TFolder : Folder<U>
|
||||
where TFile : File
|
||||
{
|
||||
/// <summary>
|
||||
/// Directory header data
|
||||
/// </summary>
|
||||
public TDirectoryHeader? DirectoryHeader { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Sections data
|
||||
/// </summary>
|
||||
public TSection[]? Sections { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Folders data
|
||||
/// </summary>
|
||||
public TFolder[]? Folders { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Files data
|
||||
/// </summary>
|
||||
public TFile[]? Files { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// String table data
|
||||
/// </summary>
|
||||
public Dictionary<long, string?>? StringTable { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
namespace SabreTools.Models.SGA
|
||||
{
|
||||
/// <see href="https://github.com/RavuAlHemio/hllib/blob/master/HLLib/SGAFile.h"/>
|
||||
public sealed class Directory4 : SpecializedDirectory<Header4, DirectoryHeader4, Section4, Folder4, File4, ushort> { }
|
||||
public sealed class Directory4 : Directory<Header4, DirectoryHeader4, Section4, Folder4, File4, ushort> { }
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
namespace SabreTools.Models.SGA
|
||||
{
|
||||
/// <see href="https://github.com/RavuAlHemio/hllib/blob/master/HLLib/SGAFile.h"/>
|
||||
public sealed class Directory5 : SpecializedDirectory<Header4, DirectoryHeader5, Section5, Folder5, File4, uint> { }
|
||||
public sealed class Directory5 : Directory<Header4, DirectoryHeader5, Section5, Folder5, File4, uint> { }
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
namespace SabreTools.Models.SGA
|
||||
{
|
||||
/// <see href="https://github.com/RavuAlHemio/hllib/blob/master/HLLib/SGAFile.h"/>
|
||||
public sealed class Directory6 : SpecializedDirectory<Header6, DirectoryHeader5, Section5, Folder5, File6, uint> { }
|
||||
public sealed class Directory6 : Directory<Header6, DirectoryHeader5, Section5, Folder5, File6, uint> { }
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
namespace SabreTools.Models.SGA
|
||||
{
|
||||
/// <see href="https://github.com/RavuAlHemio/hllib/blob/master/HLLib/SGAFile.h"/>
|
||||
public sealed class Directory7 : SpecializedDirectory<Header6, DirectoryHeader7, Section5, Folder5, File7, uint> { }
|
||||
public sealed class Directory7 : Directory<Header6, DirectoryHeader7, Section5, Folder5, File7, uint> { }
|
||||
}
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
namespace SabreTools.Models.SGA
|
||||
{
|
||||
/// <see href="https://github.com/RavuAlHemio/hllib/blob/master/HLLib/SGAFile.h"/>
|
||||
public abstract class DirectoryHeader
|
||||
{
|
||||
// All logic lives in the typed version
|
||||
}
|
||||
|
||||
/// <see href="https://github.com/RavuAlHemio/hllib/blob/master/HLLib/SGAFile.h"/>
|
||||
public abstract class DirectoryHeader<T>
|
||||
{
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
namespace SabreTools.Models.SGA
|
||||
{
|
||||
/// <see href="https://github.com/RavuAlHemio/hllib/blob/master/HLLib/SGAFile.h"/>
|
||||
public class DirectoryHeader5 : DirectoryHeader<uint> { }
|
||||
public sealed class DirectoryHeader5 : DirectoryHeader<uint> { }
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
namespace SabreTools.Models.SGA
|
||||
{
|
||||
/// <see href="https://github.com/RavuAlHemio/hllib/blob/master/HLLib/SGAFile.h"/>
|
||||
public sealed class DirectoryHeader7 : DirectoryHeader5
|
||||
public sealed class DirectoryHeader7 : DirectoryHeader<uint>
|
||||
{
|
||||
public uint HashTableOffset { get; set; }
|
||||
|
||||
|
||||
@@ -1,19 +1,22 @@
|
||||
namespace SabreTools.Models.SGA
|
||||
{
|
||||
/// <summary>
|
||||
/// SGA game archive
|
||||
/// </summary>
|
||||
/// <see href="https://github.com/RavuAlHemio/hllib/blob/master/HLLib/SGAFile.h"/>
|
||||
public sealed class File
|
||||
public abstract class File
|
||||
{
|
||||
/// <summary>
|
||||
///Header data
|
||||
/// </summary>
|
||||
public Header? Header { get; set; }
|
||||
public uint NameOffset { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Directory data
|
||||
/// </summary>
|
||||
public Directory? Directory { get; set; }
|
||||
public string? Name { get; set; }
|
||||
|
||||
public uint Offset { get; set; }
|
||||
|
||||
public uint SizeOnDisk { get; set; }
|
||||
|
||||
public uint Size { get; set; }
|
||||
|
||||
public uint TimeModified { get; set; }
|
||||
|
||||
public byte Dummy0 { get; set; }
|
||||
|
||||
public byte Type { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,22 +1,5 @@
|
||||
namespace SabreTools.Models.SGA
|
||||
{
|
||||
/// <see href="https://github.com/RavuAlHemio/hllib/blob/master/HLLib/SGAFile.h"/>
|
||||
public class File4
|
||||
{
|
||||
public uint NameOffset { get; set; }
|
||||
|
||||
public string? Name { get; set; }
|
||||
|
||||
public uint Offset { get; set; }
|
||||
|
||||
public uint SizeOnDisk { get; set; }
|
||||
|
||||
public uint Size { get; set; }
|
||||
|
||||
public uint TimeModified { get; set; }
|
||||
|
||||
public byte Dummy0 { get; set; }
|
||||
|
||||
public byte Type { get; set; }
|
||||
}
|
||||
public sealed class File4 : File { }
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user