/// <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]); }
/// <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]); }
// 임시 코드. 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 = ""; } }
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); }