Kursach_StealthAction/Assets/Tremble/IO/WAD/WadFile.cs
2026-10-11 19:16:11 +03:00

304 lines
9.8 KiB
C#

//
// This file is part of the Tremble package by Tiny Goose.
// Copyright (c) 2024-2026 TinyGoose Ltd., All Rights Reserved.
//
using System.Collections.Generic;
using UnityEngine;
namespace TinyGoose.Tremble
{
public class WadPalette
{
private Color32[] m_Colours;
public ref Color32 Get(int pos) => ref m_Colours[pos];
private static WadPalette s_QuakePalette;
public static WadPalette QuakePalette
{
get
{
if (s_QuakePalette == null)
{
s_QuakePalette = new()
{
m_Colours = new Color32[]
{
new(0x00, 0x00, 0x00, 0xFF),
new(0x0F, 0x0F, 0x0F, 0xFF),
new(0x1F, 0x1F, 0x1F, 0xFF),
new(0x2F, 0x2F, 0x2F, 0xFF),
new(0x3F, 0x3F, 0x3F, 0xFF),
new(0x4B, 0x4B, 0x4B, 0xFF),
new(0x5B, 0x5B, 0x5B, 0xFF),
new(0x6B, 0x6B, 0x6B, 0xFF),
new(0x7B, 0x7B, 0x7B, 0xFF),
new(0x8B, 0x8B, 0x8B, 0xFF),
new(0x9B, 0x9B, 0x9B, 0xFF),
new(0xAB, 0xAB, 0xAB, 0xFF),
new(0xBB, 0xBB, 0xBB, 0xFF),
new(0xCB, 0xCB, 0xCB, 0xFF),
new(0xDB, 0xDB, 0xDB, 0xFF),
new(0xEB, 0xEB, 0xEB, 0xFF),
new(0x0F, 0x0B, 0x07, 0xFF),
new(0x17, 0x0F, 0x0B, 0xFF),
new(0x1F, 0x17, 0x0B, 0xFF),
new(0x27, 0x1B, 0x0F, 0xFF),
new(0x2F, 0x23, 0x13, 0xFF),
new(0x37, 0x2B, 0x17, 0xFF),
new(0x3F, 0x2F, 0x17, 0xFF),
new(0x4B, 0x37, 0x1B, 0xFF),
new(0x53, 0x3B, 0x1B, 0xFF),
new(0x5B, 0x43, 0x1F, 0xFF),
new(0x63, 0x4B, 0x1F, 0xFF),
new(0x6B, 0x53, 0x1F, 0xFF),
new(0x73, 0x57, 0x1F, 0xFF),
new(0x7B, 0x5F, 0x23, 0xFF),
new(0x83, 0x67, 0x23, 0xFF),
new(0x8F, 0x6F, 0x23, 0xFF),
new(0x0B, 0x0B, 0x0F, 0xFF),
new(0x13, 0x13, 0x1B, 0xFF),
new(0x1B, 0x1B, 0x27, 0xFF),
new(0x27, 0x27, 0x33, 0xFF),
new(0x2F, 0x2F, 0x3F, 0xFF),
new(0x37, 0x37, 0x4B, 0xFF),
new(0x3F, 0x3F, 0x57, 0xFF),
new(0x47, 0x47, 0x67, 0xFF),
new(0x4F, 0x4F, 0x73, 0xFF),
new(0x5B, 0x5B, 0x7F, 0xFF),
new(0x63, 0x63, 0x8B, 0xFF),
new(0x6B, 0x6B, 0x97, 0xFF),
new(0x73, 0x73, 0xA3, 0xFF),
new(0x7B, 0x7B, 0xAF, 0xFF),
new(0x83, 0x83, 0xBB, 0xFF),
new(0x8B, 0x8B, 0xCB, 0xFF),
new(0x00, 0x00, 0x00, 0xFF),
new(0x07, 0x07, 0x00, 0xFF),
new(0x0B, 0x0B, 0x00, 0xFF),
new(0x13, 0x13, 0x00, 0xFF),
new(0x1B, 0x1B, 0x00, 0xFF),
new(0x23, 0x23, 0x00, 0xFF),
new(0x2B, 0x2B, 0x07, 0xFF),
new(0x2F, 0x2F, 0x07, 0xFF),
new(0x37, 0x37, 0x07, 0xFF),
new(0x3F, 0x3F, 0x07, 0xFF),
new(0x47, 0x47, 0x07, 0xFF),
new(0x4B, 0x4B, 0x0B, 0xFF),
new(0x53, 0x53, 0x0B, 0xFF),
new(0x5B, 0x5B, 0x0B, 0xFF),
new(0x63, 0x63, 0x0B, 0xFF),
new(0x6B, 0x6B, 0x0F, 0xFF),
new(0x07, 0x00, 0x00, 0xFF),
new(0x0F, 0x00, 0x00, 0xFF),
new(0x17, 0x00, 0x00, 0xFF),
new(0x1F, 0x00, 0x00, 0xFF),
new(0x27, 0x00, 0x00, 0xFF),
new(0x2F, 0x00, 0x00, 0xFF),
new(0x37, 0x00, 0x00, 0xFF),
new(0x3F, 0x00, 0x00, 0xFF),
new(0x47, 0x00, 0x00, 0xFF),
new(0x4F, 0x00, 0x00, 0xFF),
new(0x57, 0x00, 0x00, 0xFF),
new(0x5F, 0x00, 0x00, 0xFF),
new(0x67, 0x00, 0x00, 0xFF),
new(0x6F, 0x00, 0x00, 0xFF),
new(0x77, 0x00, 0x00, 0xFF),
new(0x7F, 0x00, 0x00, 0xFF),
new(0x13, 0x13, 0x00, 0xFF),
new(0x1B, 0x1B, 0x00, 0xFF),
new(0x23, 0x23, 0x00, 0xFF),
new(0x2F, 0x2B, 0x00, 0xFF),
new(0x37, 0x2F, 0x00, 0xFF),
new(0x43, 0x37, 0x00, 0xFF),
new(0x4B, 0x3B, 0x07, 0xFF),
new(0x57, 0x43, 0x07, 0xFF),
new(0x5F, 0x47, 0x07, 0xFF),
new(0x6B, 0x4B, 0x0B, 0xFF),
new(0x77, 0x53, 0x0F, 0xFF),
new(0x83, 0x57, 0x13, 0xFF),
new(0x8B, 0x5B, 0x13, 0xFF),
new(0x97, 0x5F, 0x1B, 0xFF),
new(0xA3, 0x63, 0x1F, 0xFF),
new(0xAF, 0x67, 0x23, 0xFF),
new(0x23, 0x13, 0x07, 0xFF),
new(0x2F, 0x17, 0x0B, 0xFF),
new(0x3B, 0x1F, 0x0F, 0xFF),
new(0x4B, 0x23, 0x13, 0xFF),
new(0x57, 0x2B, 0x17, 0xFF),
new(0x63, 0x2F, 0x1F, 0xFF),
new(0x73, 0x37, 0x23, 0xFF),
new(0x7F, 0x3B, 0x2B, 0xFF),
new(0x8F, 0x43, 0x33, 0xFF),
new(0x9F, 0x4F, 0x33, 0xFF),
new(0xAF, 0x63, 0x2F, 0xFF),
new(0xBF, 0x77, 0x2F, 0xFF),
new(0xCF, 0x8F, 0x2B, 0xFF),
new(0xDF, 0xAB, 0x27, 0xFF),
new(0xEF, 0xCB, 0x1F, 0xFF),
new(0xFF, 0xF3, 0x1B, 0xFF),
new(0x0B, 0x07, 0x00, 0xFF),
new(0x1B, 0x13, 0x00, 0xFF),
new(0x2B, 0x23, 0x0F, 0xFF),
new(0x37, 0x2B, 0x13, 0xFF),
new(0x47, 0x33, 0x1B, 0xFF),
new(0x53, 0x37, 0x23, 0xFF),
new(0x63, 0x3F, 0x2B, 0xFF),
new(0x6F, 0x47, 0x33, 0xFF),
new(0x7F, 0x53, 0x3F, 0xFF),
new(0x8B, 0x5F, 0x47, 0xFF),
new(0x9B, 0x6B, 0x53, 0xFF),
new(0xA7, 0x7B, 0x5F, 0xFF),
new(0xB7, 0x87, 0x6B, 0xFF),
new(0xC3, 0x93, 0x7B, 0xFF),
new(0xD3, 0xA3, 0x8B, 0xFF),
new(0xE3, 0xB3, 0x97, 0xFF),
new(0xAB, 0x8B, 0xA3, 0xFF),
new(0x9F, 0x7F, 0x97, 0xFF),
new(0x93, 0x73, 0x87, 0xFF),
new(0x8B, 0x67, 0x7B, 0xFF),
new(0x7F, 0x5B, 0x6F, 0xFF),
new(0x77, 0x53, 0x63, 0xFF),
new(0x6B, 0x4B, 0x57, 0xFF),
new(0x5F, 0x3F, 0x4B, 0xFF),
new(0x57, 0x37, 0x43, 0xFF),
new(0x4B, 0x2F, 0x37, 0xFF),
new(0x43, 0x27, 0x2F, 0xFF),
new(0x37, 0x1F, 0x23, 0xFF),
new(0x2B, 0x17, 0x1B, 0xFF),
new(0x23, 0x13, 0x13, 0xFF),
new(0x17, 0x0B, 0x0B, 0xFF),
new(0x0F, 0x07, 0x07, 0xFF),
new(0xBB, 0x73, 0x9F, 0xFF),
new(0xAF, 0x6B, 0x8F, 0xFF),
new(0xA3, 0x5F, 0x83, 0xFF),
new(0x97, 0x57, 0x77, 0xFF),
new(0x8B, 0x4F, 0x6B, 0xFF),
new(0x7F, 0x4B, 0x5F, 0xFF),
new(0x73, 0x43, 0x53, 0xFF),
new(0x6B, 0x3B, 0x4B, 0xFF),
new(0x5F, 0x33, 0x3F, 0xFF),
new(0x53, 0x2B, 0x37, 0xFF),
new(0x47, 0x23, 0x2B, 0xFF),
new(0x3B, 0x1F, 0x23, 0xFF),
new(0x2F, 0x17, 0x1B, 0xFF),
new(0x23, 0x13, 0x13, 0xFF),
new(0x17, 0x0B, 0x0B, 0xFF),
new(0x0F, 0x07, 0x07, 0xFF),
new(0xDB, 0xC3, 0xBB, 0xFF),
new(0xCB, 0xB3, 0xA7, 0xFF),
new(0xBF, 0xA3, 0x9B, 0xFF),
new(0xAF, 0x97, 0x8B, 0xFF),
new(0xA3, 0x87, 0x7B, 0xFF),
new(0x97, 0x7B, 0x6F, 0xFF),
new(0x87, 0x6F, 0x5F, 0xFF),
new(0x7B, 0x63, 0x53, 0xFF),
new(0x6B, 0x57, 0x47, 0xFF),
new(0x5F, 0x4B, 0x3B, 0xFF),
new(0x53, 0x3F, 0x33, 0xFF),
new(0x43, 0x33, 0x27, 0xFF),
new(0x37, 0x2B, 0x1F, 0xFF),
new(0x27, 0x1F, 0x17, 0xFF),
new(0x1B, 0x13, 0x0F, 0xFF),
new(0x0F, 0x0B, 0x07, 0xFF),
new(0x6F, 0x83, 0x7B, 0xFF),
new(0x67, 0x7B, 0x6F, 0xFF),
new(0x5F, 0x73, 0x67, 0xFF),
new(0x57, 0x6B, 0x5F, 0xFF),
new(0x4F, 0x63, 0x57, 0xFF),
new(0x47, 0x5B, 0x4F, 0xFF),
new(0x3F, 0x53, 0x47, 0xFF),
new(0x37, 0x4B, 0x3F, 0xFF),
new(0x2F, 0x43, 0x37, 0xFF),
new(0x2B, 0x3B, 0x2F, 0xFF),
new(0x23, 0x33, 0x27, 0xFF),
new(0x1F, 0x2B, 0x1F, 0xFF),
new(0x17, 0x23, 0x17, 0xFF),
new(0x0F, 0x1B, 0x13, 0xFF),
new(0x0B, 0x13, 0x0B, 0xFF),
new(0x07, 0x0B, 0x07, 0xFF),
new(0xFF, 0xF3, 0x1B, 0xFF),
new(0xEF, 0xDF, 0x17, 0xFF),
new(0xDB, 0xCB, 0x13, 0xFF),
new(0xCB, 0xB7, 0x0F, 0xFF),
new(0xBB, 0xA7, 0x0F, 0xFF),
new(0xAB, 0x97, 0x0B, 0xFF),
new(0x9B, 0x83, 0x07, 0xFF),
new(0x8B, 0x73, 0x07, 0xFF),
new(0x7B, 0x63, 0x07, 0xFF),
new(0x6B, 0x53, 0x00, 0xFF),
new(0x5B, 0x47, 0x00, 0xFF),
new(0x4B, 0x37, 0x00, 0xFF),
new(0x3B, 0x2B, 0x00, 0xFF),
new(0x2B, 0x1F, 0x00, 0xFF),
new(0x1B, 0x0F, 0x00, 0xFF),
new(0x0B, 0x07, 0x00, 0xFF),
new(0x00, 0x00, 0xFF, 0xFF),
new(0x0B, 0x0B, 0xEF, 0xFF),
new(0x13, 0x13, 0xDF, 0xFF),
new(0x1B, 0x1B, 0xCF, 0xFF),
new(0x23, 0x23, 0xBF, 0xFF),
new(0x2B, 0x2B, 0xAF, 0xFF),
new(0x2F, 0x2F, 0x9F, 0xFF),
new(0x2F, 0x2F, 0x8F, 0xFF),
new(0x2F, 0x2F, 0x7F, 0xFF),
new(0x2F, 0x2F, 0x6F, 0xFF),
new(0x2F, 0x2F, 0x5F, 0xFF),
new(0x2B, 0x2B, 0x4F, 0xFF),
new(0x23, 0x23, 0x3F, 0xFF),
new(0x1B, 0x1B, 0x2F, 0xFF),
new(0x13, 0x13, 0x1F, 0xFF),
new(0x0B, 0x0B, 0x0F, 0xFF),
new(0x2B, 0x00, 0x00, 0xFF),
new(0x3B, 0x00, 0x00, 0xFF),
new(0x4B, 0x07, 0x00, 0xFF),
new(0x5F, 0x07, 0x00, 0xFF),
new(0x6F, 0x0F, 0x00, 0xFF),
new(0x7F, 0x17, 0x07, 0xFF),
new(0x93, 0x1F, 0x07, 0xFF),
new(0xA3, 0x27, 0x0B, 0xFF),
new(0xB7, 0x33, 0x0F, 0xFF),
new(0xC3, 0x4B, 0x1B, 0xFF),
new(0xCF, 0x63, 0x2B, 0xFF),
new(0xDB, 0x7F, 0x3B, 0xFF),
new(0xE3, 0x97, 0x4F, 0xFF),
new(0xE7, 0xAB, 0x5F, 0xFF),
new(0xEF, 0xBF, 0x77, 0xFF),
new(0xF7, 0xD3, 0x8B, 0xFF),
new(0xA7, 0x7B, 0x3B, 0xFF),
new(0xB7, 0x9B, 0x37, 0xFF),
new(0xC7, 0xC3, 0x37, 0xFF),
new(0xE7, 0xE3, 0x57, 0xFF),
new(0x7F, 0xBF, 0xFF, 0xFF),
new(0xAB, 0xE7, 0xFF, 0xFF),
new(0xD7, 0xFF, 0xFF, 0xFF),
new(0x67, 0x00, 0x00, 0xFF),
new(0x8B, 0x00, 0x00, 0xFF),
new(0xB3, 0x00, 0x00, 0xFF),
new(0xD7, 0x00, 0x00, 0xFF),
new(0xFF, 0x00, 0x00, 0xFF),
new(0xFF, 0xF3, 0x93, 0xFF),
new(0xFF, 0xF7, 0xC7, 0xFF),
new(0xFF, 0xFF, 0xFF, 0xFF),
new(0x9F, 0x5B, 0x53, 0xFF)
}
};
}
return s_QuakePalette;
}
}
}
public readonly struct WadEntry
{
public int Address { get; init; }
public int Size { get; init; }
public char Type { get; init; }
public string Name { get; init; }
}
public record WadFile
{
public List<WadEntry> Entries { get; init; }
}
}