Files
SabreTools.Models/GCF/File.cs

202 lines
5.2 KiB
C#
Raw Permalink Normal View History

2023-09-04 00:11:04 -04:00
using System.Collections.Generic;
2023-09-04 00:12:49 -04:00
namespace SabreTools.Models.GCF
2023-09-04 00:11:04 -04:00
{
/// <summary>
/// Half-Life Game Cache File
/// </summary>
/// <see href="https://github.com/RavuAlHemio/hllib/blob/master/HLLib/GCFFile.h"/>
public sealed class File
{
/// <summary>
/// Header data
/// </summary>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-04 00:11:04 -04:00
public Header Header { get; set; }
2023-09-04 21:14:41 -04:00
#else
public Header? Header { get; set; }
#endif
2023-09-04 00:11:04 -04:00
/// <summary>
/// Block entry header data
/// </summary>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-04 00:11:04 -04:00
public BlockEntryHeader BlockEntryHeader { get; set; }
2023-09-04 21:14:41 -04:00
#else
public BlockEntryHeader? BlockEntryHeader { get; set; }
#endif
2023-09-04 00:11:04 -04:00
/// <summary>
/// Block entries data
/// </summary>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-04 00:11:04 -04:00
public BlockEntry[] BlockEntries { get; set; }
2023-09-04 21:14:41 -04:00
#else
2023-09-10 20:27:14 -04:00
public BlockEntry?[]? BlockEntries { get; set; }
2023-09-04 21:14:41 -04:00
#endif
2023-09-04 00:11:04 -04:00
/// <summary>
/// Fragmentation map header data
/// </summary>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-04 00:11:04 -04:00
public FragmentationMapHeader FragmentationMapHeader { get; set; }
2023-09-04 21:14:41 -04:00
#else
public FragmentationMapHeader? FragmentationMapHeader { get; set; }
#endif
2023-09-04 00:11:04 -04:00
/// <summary>
/// Fragmentation map data
/// </summary>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-04 00:11:04 -04:00
public FragmentationMap[] FragmentationMaps { get; set; }
2023-09-04 21:14:41 -04:00
#else
2023-09-10 20:27:14 -04:00
public FragmentationMap?[]? FragmentationMaps { get; set; }
2023-09-04 21:14:41 -04:00
#endif
2023-09-04 00:11:04 -04:00
/// <summary>
/// Block entry map header data
/// </summary>
/// <remarks>Part of version 5 but not version 6.</remarks>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-04 00:11:04 -04:00
public BlockEntryMapHeader BlockEntryMapHeader { get; set; }
2023-09-04 21:14:41 -04:00
#else
public BlockEntryMapHeader? BlockEntryMapHeader { get; set; }
#endif
2023-09-04 00:11:04 -04:00
/// <summary>
/// Block entry map data
/// </summary>
/// <remarks>Part of version 5 but not version 6.</remarks>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-04 00:11:04 -04:00
public BlockEntryMap[] BlockEntryMaps { get; set; }
2023-09-04 21:14:41 -04:00
#else
2023-09-10 20:27:14 -04:00
public BlockEntryMap?[]? BlockEntryMaps { get; set; }
2023-09-04 21:14:41 -04:00
#endif
2023-09-04 00:11:04 -04:00
/// <summary>
/// Directory header data
/// </summary>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-04 00:11:04 -04:00
public DirectoryHeader DirectoryHeader { get; set; }
2023-09-04 21:14:41 -04:00
#else
public DirectoryHeader? DirectoryHeader { get; set; }
#endif
2023-09-04 00:11:04 -04:00
/// <summary>
/// Directory entries data
/// </summary>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-04 00:11:04 -04:00
public DirectoryEntry[] DirectoryEntries { get; set; }
2023-09-04 21:14:41 -04:00
#else
2023-09-10 20:27:14 -04:00
public DirectoryEntry?[]? DirectoryEntries { get; set; }
2023-09-04 21:14:41 -04:00
#endif
2023-09-04 00:11:04 -04:00
/// <summary>
/// Directory names data
/// </summary>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-04 00:11:04 -04:00
public Dictionary<long, string> DirectoryNames { get; set; }
2023-09-04 21:14:41 -04:00
#else
public Dictionary<long, string?>? DirectoryNames { get; set; }
#endif
2023-09-04 00:11:04 -04:00
/// <summary>
/// Directory info 1 entries data
/// </summary>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-04 00:11:04 -04:00
public DirectoryInfo1Entry[] DirectoryInfo1Entries { get; set; }
2023-09-04 21:14:41 -04:00
#else
2023-09-10 20:27:14 -04:00
public DirectoryInfo1Entry?[]? DirectoryInfo1Entries { get; set; }
2023-09-04 21:14:41 -04:00
#endif
2023-09-04 00:11:04 -04:00
/// <summary>
/// Directory info 2 entries data
/// </summary>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-04 00:11:04 -04:00
public DirectoryInfo2Entry[] DirectoryInfo2Entries { get; set; }
2023-09-04 21:14:41 -04:00
#else
2023-09-10 20:27:14 -04:00
public DirectoryInfo2Entry?[]? DirectoryInfo2Entries { get; set; }
2023-09-04 21:14:41 -04:00
#endif
2023-09-04 00:11:04 -04:00
/// <summary>
/// Directory copy entries data
/// </summary>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-04 00:11:04 -04:00
public DirectoryCopyEntry[] DirectoryCopyEntries { get; set; }
2023-09-04 21:14:41 -04:00
#else
2023-09-10 20:27:14 -04:00
public DirectoryCopyEntry?[]? DirectoryCopyEntries { get; set; }
2023-09-04 21:14:41 -04:00
#endif
2023-09-04 00:11:04 -04:00
/// <summary>
/// Directory local entries data
/// </summary>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-04 00:11:04 -04:00
public DirectoryLocalEntry[] DirectoryLocalEntries { get; set; }
2023-09-04 21:14:41 -04:00
#else
2023-09-10 20:27:14 -04:00
public DirectoryLocalEntry?[]? DirectoryLocalEntries { get; set; }
2023-09-04 21:14:41 -04:00
#endif
2023-09-04 00:11:04 -04:00
/// <summary>
/// Directory map header data
/// </summary>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-04 00:11:04 -04:00
public DirectoryMapHeader DirectoryMapHeader { get; set; }
2023-09-04 21:14:41 -04:00
#else
public DirectoryMapHeader? DirectoryMapHeader { get; set; }
#endif
2023-09-04 00:11:04 -04:00
/// <summary>
/// Directory map entries data
/// </summary>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-04 00:11:04 -04:00
public DirectoryMapEntry[] DirectoryMapEntries { get; set; }
2023-09-04 21:14:41 -04:00
#else
2023-09-10 20:27:14 -04:00
public DirectoryMapEntry?[]? DirectoryMapEntries { get; set; }
2023-09-04 21:14:41 -04:00
#endif
2023-09-04 00:11:04 -04:00
/// <summary>
/// Checksum header data
/// </summary>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-04 00:11:04 -04:00
public ChecksumHeader ChecksumHeader { get; set; }
2023-09-04 21:14:41 -04:00
#else
public ChecksumHeader? ChecksumHeader { get; set; }
#endif
2023-09-04 00:11:04 -04:00
/// <summary>
/// Checksum map header data
/// </summary>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-04 00:11:04 -04:00
public ChecksumMapHeader ChecksumMapHeader { get; set; }
2023-09-04 21:14:41 -04:00
#else
public ChecksumMapHeader? ChecksumMapHeader { get; set; }
#endif
2023-09-04 00:11:04 -04:00
/// <summary>
/// Checksum map entries data
/// </summary>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-04 00:11:04 -04:00
public ChecksumMapEntry[] ChecksumMapEntries { get; set; }
2023-09-04 21:14:41 -04:00
#else
2023-09-10 20:27:14 -04:00
public ChecksumMapEntry?[]? ChecksumMapEntries { get; set; }
2023-09-04 21:14:41 -04:00
#endif
2023-09-04 00:11:04 -04:00
/// <summary>
/// Checksum entries data
/// </summary>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-04 00:11:04 -04:00
public ChecksumEntry[] ChecksumEntries { get; set; }
2023-09-04 21:14:41 -04:00
#else
2023-09-10 20:27:14 -04:00
public ChecksumEntry?[]? ChecksumEntries { get; set; }
2023-09-04 21:14:41 -04:00
#endif
2023-09-04 00:11:04 -04:00
/// <summary>
/// Data block header data
/// </summary>
2023-09-04 21:14:41 -04:00
#if NET48
2023-09-04 00:11:04 -04:00
public DataBlockHeader DataBlockHeader { get; set; }
2023-09-04 21:14:41 -04:00
#else
public DataBlockHeader? DataBlockHeader { get; set; }
#endif
2023-09-04 00:11:04 -04:00
}
}