Esempio n. 1
0
        /// <summary>
        ///     쿨타임 감소량 반환.
        /// </summary>
        /// <param name="index">ItemTimer Index(0~2)</param>
        /// <returns></returns>
        public float CoolTimeReduction(int index)
        {
            int[] idList    = { 2, 5, 9 };
            var   upgradeLv = UpgradeManager.GetUpgradeLv(idList[index]);

            return(upgradeLv == 0 ? 0 : _dataDic.FindUpgrade(50001 + idList[index]).Value[upgradeLv - 1]);
        }
Esempio n. 2
0
        /// <summary>
        ///     좋은 아이템 나올 확률
        /// </summary>
        /// <param name="index">ItemTimer Index(0~2)</param>
        /// <returns></returns>
        public int BetterItemProb(int index)
        {
            int[] idList    = { 3, 6, 10 };
            var   upgradeLv = UpgradeManager.GetUpgradeLv(idList[index]);

            return(upgradeLv == 0 ? 0 : _dataDic.FindUpgrade(50001 + idList[index]).Value[upgradeLv - 1]);
        }
Esempio n. 3
0
        // 임시 코드. ItemLimit Image에 버튼과 Raycast Target을 둠. 이 기능을 삭제하면 이것도 원상복구할 것
        public void ShowQuestProgress()
        {
            if (_formerString == "")
            {
                _formerString = Text;
                var questIndex     = Quest.Progress;
                var dataDic        = DataDictionary.Instance;
                var ownQuest       = dataDic.FindQuestDic[questIndex];
                var dataController = DataController.Instance;

                // 퀘스트 진행상태 출력
                switch (questIndex)
                {
                case 90101:     // 별의 원석 아무거나 1개 획득
                {
                    int[] itemIndex    = { 1001, 1006, 1011 };
                    var   questItemNum = itemIndex.Sum(i => dataController.GetItemNum(i));

                    Text = string.Format("별의 원석 {0} / 1", questItemNum);
                    break;
                }

                case 90102:     // 재료 아이템 아무거나 1개 획득
                {
                    int[] itemIndex    = { 2001, 2006, 2011, 2016, 2021, 2026 };
                    var   questItemNum = itemIndex.Sum(i => dataController.GetItemNum(i));

                    Text = string.Format("재료 아이템 {0} / 1", questItemNum);
                    break;
                }

                case 90103:     // 별의 파편 아무거나 1개 획득
                {
                    int[] itemIndex    = { 1002, 1007, 1012 };
                    var   questItemNum = itemIndex.Sum(i => dataController.GetItemNum(i));

                    Text = string.Format("별의 파편 {0} / 1", questItemNum);
                    break;
                }

                case 90202:     // 세트 아이템 재료 1개 획득 성공
                {
                    int[] itemIndex =
                    {
                        4001, 4002, 4003, 4004, 4006, 4007, 4008, 4009,
                        4011, 4012, 4013, 4014, 4016, 4017, 4018, 4019,
                        4021, 4022, 4023, 4024, 4026, 4027, 4028, 4029,
                        4031, 4032, 4033, 4034, 4036, 4037, 4038, 4039,
                        4041, 4042, 4043, 4044, 4046, 4047, 4048, 4049,
                        4051, 4052, 4053, 4054, 4056, 4057, 4058
                    };

                    var questItemNum = itemIndex.Sum(i => dataController.GetItemNum(i));
                    Text = string.Format("세트 아이템 재료 {0} / 1", questItemNum);
                    break;
                }

                default:
                    var text        = "";
                    var isTermFirst = true;

                    foreach (var term in ownQuest.TermsDic)
                    {
                        var termItemIndex = term.Key;

                        if (termItemIndex == 9999)     // 조건이 골드일 때
                        {
                            text += isTermFirst
                                    ? string.Format("골드 {0} / {1}", dataController.Gold, term.Value)
                                    : string.Format("\n골드 {0} / {1}", dataController.Gold, term.Value);
                        }
                        else if (termItemIndex > 50000)     // 조건이 업그레이드일 때
                        {
                            text += isTermFirst
                                    ? string.Format("{0} {1} / {2}", dataDic.FindUpgrade(termItemIndex).Name,
                                                    UpgradeManager.GetUpgradeLv(termItemIndex), term.Value)
                                    : string.Format("\n{0} {1} / {2}", dataDic.FindUpgrade(termItemIndex).Name,
                                                    UpgradeManager.GetUpgradeLv(termItemIndex), term.Value);
                        }
                        else
                        {
                            text += isTermFirst
                                    ? string.Format("{0} {1} / {2}", dataDic.FindItemDic[termItemIndex].Name,
                                                    dataController.GetItemNum(termItemIndex), term.Value)
                                    : string.Format("\n{0} {1} / {2}", dataDic.FindItemDic[termItemIndex].Name,
                                                    dataController.GetItemNum(termItemIndex), term.Value);
                        }

                        isTermFirst = false;
                    }

                    Text = text;
                    break;
                }
            }
            else
            {
                Text          = _formerString;
                _formerString = "";
            }
        }
Esempio n. 4
0
        public static bool CheckQuestClear(int index)
        {
            var dataController = DataController.Instance;
            var currentQuest   = DataDictionary.Instance.FindQuest(Progress);
            var isClear        = true;

            foreach (var term in currentQuest.TermsDic)
            {
                // 진행중인 퀘스트 조건 아이템의 인덱스
                var checkItemIndex = term.Key;

                // 진행중인 퀘스트 조건을 만족하는 아이템 개수
                var checkItemCount = term.Value;

                // 현재 가지고 있는 조건 아이템 갯수
                var currentItemNum = 0;

                // 조건이 [골드/업그레이드/아이템] 인지 확인
                if (checkItemIndex == 9999) // 골드일 때
                {
                    currentItemNum = (int)dataController.Gold;
                }
                else if (checkItemIndex > 50000) // 업그레이드일 때
                {
                    currentItemNum = UpgradeManager.GetUpgradeLv(checkItemIndex);
                }
                else // 아이템일 때
                {
                    int[] itemIndex;

                    switch (currentQuest.Index)
                    {
                    case 90101:     // 별의 원석 아무거나 1개 획득
                        itemIndex       = new[] { 1001, 1006, 1011 };
                        currentItemNum += itemIndex.Sum(i => dataController.GetItemNum(i));
                        break;

                    case 90102:     // 재료 아이템 아무거나 1개 획득
                        itemIndex       = new[] { 2001, 2006, 2011, 2016, 2021, 2026 };
                        currentItemNum += itemIndex.Sum(i => dataController.GetItemNum(i));
                        break;

                    case 90103:     // 별의 파편 아무거나 1개 획득
                        itemIndex       = new[] { 1002, 1007, 1012 };
                        currentItemNum += itemIndex.Sum(i => dataController.GetItemNum(i));
                        break;

                    case 90202:     // 퀘스트 인덱스 90202의 경우
                        itemIndex = new[]
                        {
                            4001, 4002, 4003, 4004, 4006, 4007, 4008, 4009,
                            4011, 4012, 4013, 4014, 4016, 4017, 4018, 4019,
                            4021, 4022, 4023, 4024, 4026, 4027, 4028, 4029,
                            4031, 4032, 4033, 4034, 4036, 4037, 4038, 4039,
                            4041, 4042, 4043, 4044, 4046, 4047, 4048, 4049,
                            4051, 4052, 4053, 4054, 4056, 4057, 4058
                        };
                        currentItemNum += itemIndex.Sum(i => dataController.GetItemNum(i));
                        break;

                    default:
                        currentItemNum = dataController.GetItemNum(checkItemIndex);
                        break;
                    }
                }

                // 조건 아이템의 갯수 확인 및 보상 지급
                if (checkItemCount <= currentItemNum)
                {
                    continue;
                }

                isClear = false;
                break;
            }

            if (!isClear)
            {
                return(false);
            }

            foreach (var reward in currentQuest.RewardDic)
            {
                // 보상이 골드일 때
                if (reward.Key == 9999)
                {
                    dataController.Gold += (ulong)reward.Value;
                }
                else
                {
                    /*// 아이템 인벤토리가 꽉 차있어도 준다.
                     * if (dataController.ItemCount >= dataController.ItemLimit)
                     *  return true;*/

                    // 보상이 업그레이드 오픈일 때
                    if (reward.Key > 50000)
                    {
                        // 조건이 골드일 때 골드 감소
                        DecreseGold(currentQuest);

                        // 업그레이드가 순차적으로 열릴 것을 가정한 코드.
                        dataController.LatestUpgradeIndex = reward.Key;
                    }
                    else
                    {
                        // 조건이 골드일 경우 골드 감소
                        DecreseGold(currentQuest);
                        dataController.InsertNewItem(reward.Key, reward.Value);
                    }
                }
            }

            NextQuest();
            return(true);
        }