internal View(AssetLoader loader)
: base(loader)
{
using (BinaryReader reader = loader.Reader) {
// 8-byte header
var count = reader.ReadByte();
var flags = reader.ReadByte(); // Bit 0x80 means palette is set
bool isCompressed = (flags & 0x40) == 0;
ushort mirroredFlags = reader.ReadUInt16();
Unknowns.ReadInt16s(reader, 1);
ushort paletteOffset = reader.ReadUInt16();
if (paletteOffset != 0 && paletteOffset != 0x100) {
throw new NotImplementedException();
}
for (int index = 0; index < count; index++) {
reader.BaseStream.Position = 8 + index * 2;
var animation = FindAnimation(loader, reader.ReadUInt16());
GroupsMutable.Add(new ViewGroup(animation, (mirroredFlags & (1 << index)) != 0));
}
}
}