Files
Matt Nadareski 7689c6dd07 Libraries
This change looks dramatic, but it's just separating out the already-split namespaces into separate top-level folders. In theory, every single one could be built into their own Nuget package. `SabreTools.Serialization` still builds the normal Nuget package that is used by all other projects and includes all namespaces.
2026-03-21 16:26:56 -04:00

62 lines
1.9 KiB
C#

namespace SabreTools.Data.Models.MoPaQ
{
/// <summary>
/// MPQ (MoPaQ) is an archive format developed by Blizzard Entertainment,
/// purposed for storing data files, images, sounds, music and videos for
/// their games. The name MoPaQ comes from the author of the format,
/// Mike O'Brien (Mike O'brien PaCK).
/// </summary>
/// <see href="http://zezula.net/en/mpq/mpqformat.html"/>
public sealed class Archive
{
// TODO: Data before archive, ignored
/// <summary>
/// MPQ User Data (optional)
/// </summary>
public UserData? UserData { get; set; }
/// <summary>
/// MPQ Header (required)
/// </summary>
public ArchiveHeader ArchiveHeader { get; set; } = new();
// TODO: Files (optional)
// TODO: Special files (optional)
/// <summary>
/// HET Table (optional)
/// </summary>
public HetTable? HetTable { get; set; }
/// <summary>
/// BET Table (optional)
/// </summary>
public BetTable? BetTable { get; set; }
/// <summary>
/// Hash Table (optional)
/// </summary>
public HashEntry[]? HashTable { get; set; }
/// <summary>
/// Block Table (optional)
/// </summary>
public BlockEntry[]? BlockTable { get; set; }
/// <summary>
/// Hi-Block Table (optional)
/// </summary>
/// <remarks>
/// Since World of Warcraft - The Burning Crusade, Blizzard extended
/// the MPQ format to support archives larger than 4GB. The hi-block
/// table holds the higher 16-bits of the file position in the MPQ.
/// Hi-block table is plain array of 16-bit values. This table is
/// not encrypted.
/// </remarks>
public short[]? HiBlockTable { get; set; }
// TODO: Strong digital signature
}
}