Пример #1
0
    //入栈+显示
    public void PushPanel(UIBaseType type, RuneEntity runeEntity = null)
    {
        if (panelStack == null)
        {
            panelStack = new Stack <BasePanel>();
        }

        if (panelStack.Count > 0)
        {
            BasePanel top = panelStack.Peek();
            top.OnPause();
        }

        BasePanel panel = GetPanel(type);

        if (!panel)
        {
            Debug.Log("SSS");
        }
        if (type == UIBaseType.ExchangePanel)
        {
            ExchangePanel temp = (ExchangePanel)panel;
            temp.PickedRune = runeEntity.rune;
        }
        if (type == UIBaseType.IntroducePanel)
        {
            IntroducePanel temp = (IntroducePanel)panel;
            temp.IntroducedRune = runeEntity.rune;
        }
        panel.OnEnter();
        panelStack.Push(panel);
    }
Пример #2
0
        private void ExchangeItem(int idx)
        {
            ExchangePanel.transform.Find("Text").GetComponent <Text>().text = _dataDic.FindItemDic[idx].Name + " 교환";

            for (var i = 1; i <= 5; i++)
            {
                // 혹시 있을 Closure 오류 방지
                var btnIdx = i - 1;
                ExchangePanel.transform.Find("Button" + i).GetComponent <Button>()
                .onClick.AddListener(() => ExchangeBtnClick(idx, btnIdx));
            }

            ExchangePanel.SetActive(true);
        }
Пример #3
0
        private void ExchangeBtnClick(int itemIdx, int btnIdx)
        {
            var deleteAmount = new int[3]; //[0]Red [1]Blue [2]Green 삭제될 별 개수

            for (var i = 0; i < 3; i++)
            {
                // 별 아이템의 index
                var starIdx = 1001 + btnIdx + i * 5;
                deleteAmount[i] = _dataController.GetItemNum(starIdx);
            }

            var reqireedAmount = ExchangeRatio[btnIdx];

            // 별 아이템 개수가 필요한 양(ExchangeRatio[btnIdx])보다 많거나 같을 경우
            if (deleteAmount.Sum() >= reqireedAmount)
            {
                var deleted = 0;
                for (var i = 0; i < 3; i++)
                {
                    // 별 아이템의 index
                    var starIdx = 1001 + btnIdx + i * 5;
                    for (var j = 0; j < deleteAmount[i]; j++)
                    {
                        if (deleted >= reqireedAmount)
                        {
                            break;
                        }
                        _dataController.DeleteItem(starIdx);
                        deleted++;
                        //요구량 다 채우면 안 하기
                    }
                }

                _dataController.InsertNewItem(itemIdx);
                ExchangePanel.SetActive(false);

                // refresh scene
                SceneManager.LoadScene("BookList");
            }
            else
            {
                // TODO: 잠깐 버튼 클릭 막기
                PopUpWindow.Alert("재료가 부족합니다.");
            }
        }