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; } } }