예제 #1
0
    private void CreateStageButtons()
    {
        List <Stage>  stages = _master.GetStages();
        GameObject    newStageItem;
        float         buttonHeight        = 0f;
        float         buttonSpacing       = _stageContainer.GetComponent <VerticalLayoutGroup>().spacing;
        float         containerViewHeight = _stageView.GetComponent <RectTransform>().sizeDelta.y;
        bool          scrollNeeded        = false;
        RectTransform containerRect       = _stageContainer.GetComponent <RectTransform>();
        Vector2       containerSize       = containerRect.sizeDelta;

        _stageContainer.GetComponent <RectTransform>().sizeDelta = new Vector2(0, containerViewHeight);

        ClearStagesButtons();

        for (int i = 0; i < stages.Count; i++)
        {
            if (!stages[i].Islocked)
            {
                if (buttonHeight == 0f)
                {
                    buttonHeight = _baseStageButton.GetComponent <RectTransform>().sizeDelta.y;
                }

                newStageItem      = Instantiate(_baseStageButton, _stageContainer.transform, false);
                newStageItem.name = "s" + i;

                newStageItem.GetComponent <StageMenuItem>()
                .SetStageNameLabel(stages[i].Label, false)
                .SetStars(BaseValues.GetStars(stages[i].HighestPickUps, stages[i].TotalPickUps))
                .SetStageIndex(i);

                containerSize.y = (buttonHeight + buttonSpacing) * (i + 1);

                if (containerSize.y > containerViewHeight)
                {
                    containerRect.sizeDelta = containerSize;
                    scrollNeeded            = true;
                }
            }
        }

        if (!scrollNeeded)
        {
            _stageView.GetComponent <ScrollRect>().vertical = false;
        }
        else
        {
            _scrollbar.value = 0;
        }
    }