예제 #1
0
    //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);
    }
예제 #2
0
    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);
    }