void OnClickContentsLink(Item.ContentsListInfo info) { if (info.ContentsLinkType == 1)//재료조합 { } else if (info.ContentsLinkType == 2)//바로가기(던전) { if (!CheckContentsLink(info, true)) { return; } bool isBasePanelHide = true; switch (info.ContentsType) { case 1: //조합 break; case 11: //차관 UIMgr.OpenArenaPanel(); break; case 12: //난투장 UIMgr.OpenDogFight(); break; case 2: //모험 일반 case 3: //모험 어려움 if (BasePanel != null && BasePanel is ChapterPanel) { isBasePanelHide = false; (BasePanel as ChapterPanel).SetStageInfoPopup(info.ContentsIdx); } if (isBasePanelHide) { UIMgr.OpenChapter(null, info.ContentsIdx); } break; case 4: //마계의탑 UIMgr.OpenTowerPanel(info.ContentsIdx); break; case 5: //보스레이드 DungeonTable.SingleBossRaidInfo bossRaid = _LowDataMgr.instance.GetSingleBossRaidLimitLevel(info.ContentsIdx); UIMgr.OpenDungeonPanel(false, 0, GAME_MODE.RAID, bossRaid.Type); break; case 6: //멀티 보스레이드 DungeonTable.MultyBossRaidInfo multyBossRaid = _LowDataMgr.instance.GetLowDataMultyBossInfo(info.ContentsIdx); UIMgr.OpenDungeonPanel(false, 0, GAME_MODE.MULTI_RAID, multyBossRaid.Type); break; case 7: //콜로세움 UIMgr.OpenColosseumPanel(0); break; case 8: //골드 던전 UIMgr.OpenDungeonPanel(false, 0, GAME_MODE.SPECIAL_GOLD, 0); break; case 9: //경험치 던전 UIMgr.OpenDungeonPanel(false, 0, GAME_MODE.SPECIAL_EXP, 0); break; case 10: //길드 UIMgr.OpenGuildPanel(); break; } if (isBasePanelHide && BasePanel != null) { BasePanel.ObjectHide(); } Hide(); } }
/// <summary> 아이템 디테일 팝업 실행 함수. </summary> void SetDetailPopup(NetData._ItemData itemData) { CurItemData = itemData; Debug.Log(string.Format("Click Item UseId={0}, equipId={1}", itemData._useitemDataIndex, itemData._equipitemDataIndex)); bool isDifferentClass = false; NetData._UserInfo charInven = NetData.instance.GetUserInfo(); if (CurItemData.IsEquipItem()) { LinkPopup[0].SetActive(false); LinkPopup[1].SetActive(false); int limitLv = CurItemData.GetEquipLowData().LimitLevel; //EquipLv.text = string.Format(_LowDataMgr.instance.GetStringCommon(952), limitLv); if (limitLv <= charInven._Level && !isDifferentClass)//내 직업이고 레벨이 높다면 { EquipState[0].SetActive(true); EquipState[1].SetActive(false); } else { EquipState[0].SetActive(false); EquipState[1].SetActive(true); } uint strKey = 0; if (BasePanel is EquipmentPanel) { Item.EquipmentInfo equipLow = CurItemData.GetEquipLowData(); if (CurItemData._enchant < equipLow.MaxEnchant) { strKey = 31; } else if (0 < equipLow.NextPartsId) { strKey = 32; } else//최대 { strKey = 1182; } } else { strKey = 106;//닫기 } if (0 < strKey) { SetOnOff(MainBtn.transform, true, _LowDataMgr.instance.GetStringCommon(strKey)); } //텍스트 셋팅 int grade = itemData.GetEquipLowData().Grade; string color = UIHelper.GetItemGradeColor(grade); ItemName.text = string.Format("{0}{1}[-] [FFE400]+{2}[-]", color, itemData.GetLocName(), itemData._enchant); } else { //EquipLv.text = ""; EquipState[0].SetActive(false); EquipState[1].SetActive(false); LinkPopup[0].SetActive(true); LinkPopup[1].SetActive(false); SetOnOff(MainBtn.transform, true, _LowDataMgr.instance.GetStringCommon(106)); int count = charInven.GetItemCountForItemId(CurItemData._useitemDataIndex, (byte)eItemType.USE); LinkItemSlot[0].SetLowDataItemSlot(CurItemData._useitemDataIndex, (uint)count); LinkItemSlot[0].transform.parent.FindChild("Lock").gameObject.SetActive(count <= 0); Transform gridTf = LinkScroll.transform.FindChild("Grid"); List <Item.ContentsListInfo> conList = _LowDataMgr.instance.GetLowDataContentsItemList(CurItemData._useitemDataIndex); for (int i = 0; i < conList.Count; i++) { Item.ContentsListInfo info = conList[i]; string contentsName = _LowDataMgr.instance.GetStringCommon(info.ContentsName); if (info.ContentsParam != null && 0 < info.ContentsParam.Count) { if (contentsName.Contains("{0}") && contentsName.Contains("{1}")) { contentsName = string.Format(contentsName, info.ContentsParam[0], info.ContentsParam[1]); } else if (contentsName.Contains("{0}")) { contentsName = string.Format(contentsName, info.ContentsParam[0]); } } Transform tf = null; if (i < gridTf.childCount) { tf = gridTf.GetChild(i); } else { tf = Instantiate(gridTf.GetChild(0)) as Transform; tf.parent = gridTf; tf.localScale = Vector3.one; } tf.gameObject.SetActive(true); tf.FindChild("txt").GetComponent <UILabel>().text = contentsName; bool isEnter = true; if (CheckContentsLink(info, false))//조건 만족 { tf.FindChild("error_txt").GetComponent <UILabel>().text = ""; } else { isEnter = false; string contentsError = _LowDataMgr.instance.GetStringCommon(info.ConditionName); if (info.ConditionParam != null && 0 < info.ConditionParam.Count) { if (contentsError.Contains("{0}") && contentsError.Contains("{1}")) { contentsError = string.Format(contentsError, info.ConditionParam[0], info.ConditionParam[1]); } else if (contentsError.Contains("{0}")) { contentsError = string.Format(contentsError, info.ConditionParam[0]); } } tf.FindChild("error_txt").GetComponent <UILabel>().text = contentsError; } EventDelegate.Set(tf.FindChild("Btn").GetComponent <UIEventTrigger>().onClick, () => { OnClickContentsLink(info); }); if (info.ContentsLinkType == 1)//재료조합 { tf.FindChild("Btn/On/label").GetComponent <UILabel>().text = _LowDataMgr.instance.GetStringCommon(39); tf.FindChild("Btn/Off/label").GetComponent <UILabel>().text = _LowDataMgr.instance.GetStringCommon(39); } else if (info.ContentsLinkType == 2)//바로가기(던전) { tf.FindChild("Btn/On/label").GetComponent <UILabel>().text = _LowDataMgr.instance.GetStringCommon(249); tf.FindChild("Btn/Off/label").GetComponent <UILabel>().text = _LowDataMgr.instance.GetStringCommon(249); } tf.FindChild("Btn/On").gameObject.SetActive(isEnter); tf.FindChild("Btn/Off").gameObject.SetActive(!isEnter); } gridTf.GetComponent <UIGrid>().repositionNow = true; for (int j = conList.Count; j < gridTf.childCount; j++) { gridTf.GetChild(j).gameObject.SetActive(false); } if (conList.Count < 4) { LinkScroll.enabled = false; } else { LinkScroll.enabled = true; } Item.ItemInfo data = itemData.GetUseLowData(); string color = UIHelper.GetItemGradeColor(data == null ? 0 : (int)data.Grade); ItemName.text = string.Format("{0}{1}[-] [FFE400][-]", color, itemData.GetLocName()); } //아이템 셋팅 ItemSlot.SetInvenItemSlot(itemData, null, 0); //아이템의 옵션들 셋팅 byte optionCount = 0; Desc.transform.localPosition = SetAbility(itemData, ref optionCount); //어빌리티 SetDesc(itemData, ref optionCount); //아이템 설명 표현 OptionScrollView.ResetPosition(); if (optionCount <= 1)//스크롤 되면 안됨. { AbilityTf.parent.collider.enabled = false; } else { AbilityTf.parent.collider.enabled = true; } }
/// <summary> 조건 체크. </summary> bool CheckContentsLink(Item.ContentsListInfo info, bool isClick) { bool isEnter = false; switch (info.ContentsType) { case 1: //조합 break; case 11: //차관 if (_LowDataMgr.instance.GetEtcTableValue <uint>(EtcID.PvpEnterLv) <= NetData.instance.UserLevel) { isEnter = true; } break; case 12: //난투장 List <DungeonTable.FreefightTableInfo> freeList = _LowDataMgr.instance.GetLowDataFreeFightList(); for (int i = 0; i < freeList.Count; i++) { if (NetData.instance.UserLevel < freeList[i].MinenterLv || freeList[i].MaxenterLv < NetData.instance.UserLevel) { continue; } isEnter = true; break; } break; case 2: //모험 일반 case 3: //모험 어려움 uint require = 0; NetData.ClearSingleStageData stageData = null; if (!NetData.instance.GetUserInfo().ClearSingleStageDic.TryGetValue(info.ContentsIdx, out stageData)) { DungeonTable.StageInfo stageInfo = _LowDataMgr.instance.GetStageInfo(info.ContentsIdx); if (stageInfo != null && stageInfo.RequireStageId != null && 0 < stageInfo.RequireStageId.list.Count) { List <string> conList = stageInfo.RequireStageId.list; for (int i = 0; i < conList.Count; i++) { uint conIdx = uint.Parse(conList[i]); if (NetData.instance.GetUserInfo().ClearSingleStageDic.TryGetValue(conIdx, out stageData)) //이전 스테이지 클리어해야함. { continue; } require = 1; //진행 불가능 break; } } } if (require <= 0) { isEnter = true; } break; case 5: //보스레이드 DungeonTable.SingleBossRaidInfo bossRaid = _LowDataMgr.instance.GetSingleBossRaidLimitLevel(info.ContentsIdx); if (bossRaid.levelLimit <= NetData.instance.UserLevel) { isEnter = true; } break; case 6: //멀티 보스레이드 DungeonTable.MultyBossRaidInfo multyBossRaid = _LowDataMgr.instance.GetLowDataMultyBossInfo(info.ContentsIdx); if (multyBossRaid.levelLimit <= NetData.instance.UserLevel) { isEnter = true; } break; case 10: //길드 if (0 < NetData.instance.GetUserInfo()._GuildId) { isEnter = true; } break; case 4: //마계의탑 case 7: //콜로세움 case 8: //골드 던전 case 9: //경험치 던전 byte idx = 0; if (info.ContentsType == 4) { idx = (byte)9; } else if (info.ContentsType == 7) { idx = (byte)1; } else if (info.ContentsType == 8) { idx = (byte)3; } else if (info.ContentsType == 9) { idx = (byte)2; } DungeonTable.ContentsOpenInfo content = _LowDataMgr.instance.GetFirstContentsOpenInfo(idx); if (content.ConditionType1 == 2 && content.ConditionValue1 <= NetData.instance.GetUserInfo()._TotalAttack) { isEnter = true; } else if (content.ConditionType1 == 1 && content.ConditionValue1 <= NetData.instance.UserLevel) { isEnter = true; } break; } if (!isEnter) { if (isClick) { SceneManager.instance.SetNoticePanel(NoticeType.Message, 0, _LowDataMgr.instance.GetStringCommon(712)); } return(false); } return(true); }