//Try to add a tile to the page. If the page is full, return false to indicate as such. public bool TryAddTile(LevelSelectTile tile) { if (TileCount >= TILES_PER_PAGE) { return(false); } ++TileCount; tile.GetComponent <RectTransform>().localPosition = tilePositons[TileCount - 1]; tiles.Add(tile); return(true); }
void Start() { pages = new List <LevelSelectPage>(); CreateNewPage(); //Create pages of tiles for all of the completed levels. List <LevelData> levelDatas = GameManager.Instance.LevelDatas; for (int i = 0; i < levelDatas.Count; ++i) { LevelSelectTile tile = Instantiate(tilePrefab, transform); if (levelDatas[i].completionTimeRaw > float.Epsilon) { tile.SetTileVariables(levelDatas[i], thumbnails[levelDatas[i].sceneNumber]); } else { tile.SetAsNonCompletedLevel(thumbnails[0]); } //Try to add the tile to the current page. If it is full, create a new one. if (!currentPage.TryAddTile(tile)) { currentPage.SetInteractive(false); CreateNewPage(); currentPage.TryAddTile(tile); } } //Fill out empty tiles to represent levels yet to complete if the current page still has space. int numEmptyTiles = LevelSelectPage.TILES_PER_PAGE - currentPage.TileCount; for (int i = 0; i < numEmptyTiles; ++i) { LevelSelectTile tile = Instantiate(tilePrefab, transform); tile.SetAsNonCompletedLevel(thumbnails[0]); currentPage.TryAddTile(tile); } numPages = pages.Count; GoToPage(0); }