public static void Write(Theme b, Stream s)
{
if (!s.CanSeek || !s.CanWrite)
throw new ArgumentException("Provided Stream can't Seek or Write", nameof(s));
int start = (int) s.Position;
using (BinaryWriter bw = new BinaryWriter(s, Encoding.ASCII, true))
{
// Data Pad
bw.Seek(0xD0 + start, SeekOrigin.Current);
// Write Data
var cOffs = Write_Colors(s, b);
var tOffs = Write_Textures(s, b);
var wOff = Write_CWavs(s, b);
// Offset into Start
cOffs.Offset(-start);
tOffs.Offset(-start);
wOff = (uint) (wOff - start);
// Header Offset
bw.Seek(0 + start, SeekOrigin.Begin);
// Write Header
Write_Flags(s, b, tOffs, cOffs, wOff);
// 0x10c Pad
int rem = (int) (s.Position % 0x10);
bw.Seek(rem - 1, SeekOrigin.End);
bw.Write((byte) 0);
}
}