private static void ReadRequiredChunks(BinaryReader br, WMOGroup currentWMOGroup)
{
uint type = 0;
uint size = 0;
var curPos = AdvanceToNextChunk(br, br.BaseStream.Position, ref type, ref size);
if (type == Signatures.MVER)
{
ReadMVER(br, currentWMOGroup);
}
else
{
Console.WriteLine("ERROR: WMO Group did not have required chunk MVER");
}
curPos = AdvanceToNextChunk(br, curPos, ref type, ref size);
if (type == Signatures.MOGP)
{
size = 68; // MOGP is stupid and wants to use the entire rest of the file as its size
ReadMOGP(br, currentWMOGroup);
}
else
{
Console.WriteLine("ERROR: WMO Group did not have required chunk MOGP");
}
curPos = AdvanceToNextChunk(br, curPos, ref type, ref size);
if (type == Signatures.MOPY)
{
ReadMOPY(br, currentWMOGroup, size);
}
else
{
Console.WriteLine("ERROR: WMO Group did not have required chunk MOPY");
}
curPos = AdvanceToNextChunk(br, curPos, ref type, ref size);
if (type == Signatures.MOVI)
{
ReadMOVI(br, currentWMOGroup);
}
else
{
Console.WriteLine("ERROR: WMO Group did not have required chunk MOVI");
}
curPos = AdvanceToNextChunk(br, curPos, ref type, ref size);
if (type == Signatures.MOVT)
{
ReadMOVT(br, currentWMOGroup, size);
}
else
{
Console.WriteLine("ERROR: WMO Group did not have required chunk MOVT");
}
curPos = AdvanceToNextChunk(br, curPos, ref type, ref size);
if (type == Signatures.MONR)
{
ReadMONR(br, currentWMOGroup);
}
else
{
Console.WriteLine("ERROR: WMO Group did not have required chunk MONR");
}
curPos = AdvanceToNextChunk(br, curPos, ref type, ref size);
if (type == Signatures.MOTV)
{
ReadMOTV1(br, currentWMOGroup, size);
}
else
{
Console.WriteLine("ERROR: WMO Group did not have required chunk MOTV1");
}
curPos = AdvanceToNextChunk(br, curPos, ref type, ref size);
if (type == Signatures.MOBA)
{
ReadMOBA(br, currentWMOGroup, size);
}
else
{
Console.WriteLine("ERROR: WMO Group did not have required chunk MOBA");
}
br.BaseStream.Seek(curPos + size, SeekOrigin.Begin); // seek to the end of the required fields
}