internal TilesetHeaderGroup(Project p, int i) : base(p, i)
{
FileParser tableFile = Project.GetFileWithLabel("tilesetHeaderGroupTable");
Data pointerData = tableFile.GetData("tilesetHeaderGroupTable", Index * 2);
string labelName = pointerData.GetValue(0);
FileParser headerFile = Project.GetFileWithLabel(labelName);
TilesetHeaderData headerData = headerFile.GetData(labelName) as TilesetHeaderData;
bool next = true;
while (next)
{
if (headerData == null)
{
throw new Exception("Expected tileset header group " + Index.ToString("X") + " to reference tileset header data (m_TilesetHeader)");
}
Stream dataFile = headerData.ReferencedData;
dataFile.Position = 0;
if (headerData.DestAddress == Project.EvalToInt("w3TileMappingIndices"))
{
// Mappings
mappingsDataFile = dataFile;
}
else if (headerData.DestAddress == Project.EvalToInt("w3TileCollisions"))
{
// Collisions
collisionsDataFile = dataFile;
}
if (headerData.ShouldHaveNext())
{
headerData = headerData.NextData as TilesetHeaderData;
if (headerData != null)
{
next = true;
}
}
else
{
next = false;
}
}
}