/// <summary> 재료아이템 및 코스튬 데이터 셋팅 사전 검사 필요함.</summary> void InitEvolve(NetData._CostumeData costumeData) { ushort minor = costumeData._MinorGrade; int starLength = EvolveStars.Length; for (int i = 0; i < starLength; i++) { EvolveStars[i].SetActive(i < minor); //if (i < minor) // EvolveStars[i].SetActive(true); //else // EvolveStars[i].SetActive(false); } //재료 셋팅 bool isCanNotEvolve = false; int loopCount = EvolInvenSlots.Length; for (int i = 0; i < loopCount; i++) { NetData.MaterialData md = EvolveMaterialData.MaterialList[i]; int nowAmount = UserInfo.GetItemCountForItemId(md.ItemId, (byte)eItemType.USE); ushort amount = (ushort)(md.Amount + (minor * md.AddValue)); if (nowAmount < amount && !isCanNotEvolve) { isCanNotEvolve = true; } int arr = i; EvolMaterialAmount[i].text = string.Format("{0} / {1}", nowAmount, amount); EvolInvenSlots[i].SetLowDataItemSlot(md.ItemId, 0, (lowDataId) => { UIMgr.OpenDetailPopup(this, (uint)lowDataId); //UIMgr.OpenClickPopup((uint)lowDataId, EvolInvenSlots[arr].transform.position); }); } ulong needPrice = EvolveMaterialData.Price + (EvolveMaterialData.AddPrice * costumeData._MinorGrade); EvolveCost.text = string.Format("{0:#,#} {1}", needPrice, _LowDataMgr.instance.GetStringCommon(32)); NetData.ItemAbilityData ability = costumeData.AbilityData; string abilityText = null; float abilityValue = _LowDataMgr.instance.GetCostumeAbilityValue(costumeData._Grade, costumeData._MinorGrade, ability.Value); abilityText = string.Format("{0} {1}" , UIMgr.instance.GetAbilityLocName(ability.Ability) //이름 , UIMgr.instance.GetAbilityStrValue(ability.Ability, abilityValue)); //지금 능력치 TargetCostume[0].gameObject.SetActive(true); TargetCostume[0].FindChild("icon").GetComponent <UISprite>().spriteName = costumeData.GetIconName(); TargetCostume[0].FindChild("name").GetComponent <UILabel>().text = costumeData.GetLocName(); TargetCostume[0].FindChild("info").GetComponent <UILabel>().text = costumeData.GetDescription(); TargetCostume[0].FindChild("ability").GetComponent <UILabel>().text = abilityText; EvolCount.text = string.Format("{0}", costumeData._Grade); //TargetCostumeAbility.text = abilityText; }
/// <summary> 코스튬 획득 응답. </summary> public void OnReceiveGetCostume(NetData._CostumeData costumeData) { Transform gridTf = ViewObj[(uint)ViewType.List].transform.FindChild("ScrollView/Grid"); Transform slotTf = gridTf.FindChild(string.Format("{0}", costumeData._costmeDataIndex));//gridTf.GetChild(SelectCostumeTfArr); GameObject eff = UIHelper.CreateEffectInGame(slotTf, "Fx_UI_costume_select"); Destroy(eff, 2f); //TempCoroutine.instance.FrameDelay() //CostumeListView(); //아이템리스트에서 현재의 조각아이템을 찾아서 갯수를 가져온다 - 자주쓸거같으면 _Inventory안에 만들기 //NetData._CostumeData costumeData = UserInfo.GetCostumeDataForLowDataID(costumeLowDataId); Item.CostumeInfo tempCos = costumeData.GetLowData();//_LowDataMgr.instance.GetLowDataCostumeInfo(costumeLowDataId); int shardCount = UserInfo.GetItemCountForItemId(tempCos.ShardIdx, (byte)eItemType.USE); UILabel nameAndStack = slotTf.FindChild("costume/name_and_stack_d1").GetComponent <UILabel>(); UILabel ability = slotTf.FindChild("costume/ability_d1").GetComponent <UILabel>(); UILabel info = slotTf.FindChild("costume/info_d1").GetComponent <UILabel>(); UISprite icon = slotTf.FindChild("costume/icon").GetComponent <UISprite>(); NetData.ItemAbilityData abilityData = costumeData.AbilityData; float abilityValue = _LowDataMgr.instance.GetCostumeAbilityValue(costumeData._Grade, costumeData._MinorGrade, abilityData.Value); nameAndStack.text = string.Format("{0} ({1}/{2})", costumeData.GetLocName(), shardCount, costumeData._needShard); ability.text = string.Format("{0} {1}", UIMgr.instance.GetAbilityLocName(abilityData.Ability) //이름 , UIMgr.instance.GetAbilityStrValue(abilityData.Ability, abilityValue)); //abilityData.Value * 0.1f));//지금 능력치 info.text = costumeData.GetDescription(); icon.spriteName = costumeData.GetIconName(); UIButton uiBtnGet = slotTf.FindChild("costume/BtnGet").GetComponent <UIButton>(); UIEventTrigger uiTriMount = slotTf.FindChild("costume/BtnMount").GetComponent <UIEventTrigger>(); GameObject mountEff = slotTf.FindChild("costume/mount_effect").gameObject; uiBtnGet.gameObject.SetActive(false); mountEff.SetActive(false); ///보유중 uiTriMount.collider.enabled = true; uiTriMount.transform.GetComponent <UILabel>().text = _LowDataMgr.instance.GetStringCommon(38); EventDelegate.Set(uiTriMount.onClick, delegate() { OnClickMountCostume(costumeData); }); string msg = string.Format(_LowDataMgr.instance.GetStringCommon(832), costumeData.GetLocName()); UIMgr.AddLogChat(msg); }
void InitSocket() { Transform socketTf = GetViewObj(CurViewType).transform; NetData._CostumeData costumeData = UserInfo.GetEquipCostume(); NetData.ItemAbilityData ability = costumeData.AbilityData; float abilityValue = _LowDataMgr.instance.GetCostumeAbilityValue(costumeData._Grade, costumeData._MinorGrade, ability.Value); TargetCostume[1].gameObject.SetActive(true); TargetCostume[1].FindChild("icon").GetComponent <UISprite>().spriteName = costumeData.GetIconName(); TargetCostume[1].FindChild("name").GetComponent <UILabel>().text = costumeData.GetLocName(); TargetCostume[1].FindChild("info").GetComponent <UILabel>().text = costumeData.GetDescription(); TargetCostume[1].FindChild("ability").GetComponent <UILabel>().text = string.Format("{0} {1}", UIMgr.instance.GetAbilityLocName(ability.Ability) , UIMgr.instance.GetAbilityStrValue(ability.Ability, abilityValue)); //지금 능력치 //if(DetailPopup == null) // DetailPopup = UIMgr.OpenDetailPopup(this); //코스튬에 보석 공간 확인 for (ushort i = 0; i < SystemDefine.MaxJewelCount; i++) { string itemName = null; string itemAbility = null; string itemDesc = null; UIEventTrigger uiTri = SocketRootTfs[i].GetComponent <UIEventTrigger>(); uint jewelLowDataId = costumeData._EquipJewelLowId[i]; if (0 < jewelLowDataId) { Item.ItemInfo useLowData = _LowDataMgr.instance.GetUseItem(jewelLowDataId); //Item.ItemValueInfo valueLowData = _LowDataMgr.instance.GetLowDataItemValueInfo(useLowData.OptionIndex1); //LockImg.SetActive(false); itemDesc = _LowDataMgr.instance.GetStringItem(useLowData.DescriptionId); JewelInvenSlots[i].SetLowDataItemSlot(jewelLowDataId, 0, null); itemName = _LowDataMgr.instance.GetStringItem(useLowData.NameId); itemAbility = string.Format("{0} {1}", UIMgr.instance.GetAbilityLocName((AbilityType)useLowData.OptionType), UIMgr.instance.GetAbilityStrValue((AbilityType)useLowData.OptionType, useLowData.value * 0.1f)); } else//그런거 없음 빈 슬롯. { JewelInvenSlots[i].EmptySlot(); //LockImg.SetActive(true); } UILabel nameLbl = SocketRootTfs[i].FindChild("item_name").GetComponent <UILabel>(); UILabel abilityLbl = SocketRootTfs[i].FindChild("ability").GetComponent <UILabel>(); UILabel descLbl = SocketRootTfs[i].FindChild("desc").GetComponent <UILabel>(); //승급에따라 슬롯수가 결정됨, 보석슬롯 락처리 int maxJewelSlot = costumeData.MaxJewelSlot; GameObject LockImg = SocketRootTfs[i].FindChild("Lock").gameObject; // 락이미지 LockImg.SetActive(maxJewelSlot <= i); nameLbl.text = itemName; abilityLbl.text = itemAbility; descLbl.text = itemDesc; } if (JewelGrid.transform.childCount <= 0)//처음으로 클릭함. 슬롯 생성 및 갱신해준다. { int maxInvenSlot = _LowDataMgr.instance.GetEtcTableValue <int>(EtcID.InvenMax); List <NetData._ItemData> jewelList = UserInfo.GetTypeItemList(eItemType.USE, AssetType.Jewel); jewelList.Sort(SortJewel); for (int i = 0; i < maxInvenSlot; i++) { GameObject slotGo = Instantiate(InvenSlotPrefab) as GameObject; Transform slotTf = slotGo.transform; slotTf.parent = JewelGrid.transform; slotTf.localPosition = Vector3.zero; slotTf.localScale = Vector3.one; InvenItemSlotObject invenSlot = slotGo.GetComponent <InvenItemSlotObject>(); if (i < jewelList.Count) { invenSlot.SetInvenItemSlot(jewelList[i], OnClickInvenItemSlot); //SocketRootTfs[i].FindChild("Lock").gameObject.SetActive(false); } else { invenSlot.EmptySlot(); } } JewelScrollView.ResetPosition(); } //선택되어 있는 소켓 기본 0번으로 셋팅 SelectJewelArr = 0; if (costumeData.MaxJewelSlot > 0) { for (int i = 0; i < SocketRootTfs.Length; i++) { GameObject select = SocketRootTfs[i].transform.FindChild("cover").gameObject; select.SetActive(i == SelectJewelArr); } } }
/// <summary> /// 코스튬 뷰를 보여준다. /// </summary> void CostumeListView() { List <NetData._CostumeData> costimeList = UserInfo.GetCostumeList(); Transform listTf = ViewObj[(uint)ViewType.List].transform; Transform gridTf = listTf.FindChild("ScrollView/Grid"); for (int i = 0; i < gridTf.childCount; /*costimeList.Count;*/ i++) { Transform slotTf = gridTf.GetChild(i); slotTf.FindChild("costume").gameObject.SetActive(false); slotTf.FindChild("noncostum_slot").gameObject.SetActive(false); if (i >= costimeList.Count) { slotTf.FindChild("noncostum_slot").gameObject.SetActive(true); continue; } slotTf.FindChild("costume").gameObject.SetActive(true); NetData._CostumeData costumeData = costimeList[i]; //아이템리스트에서 현재의 조각아이템을 찾아서 갯수를 가져온다 - 자주쓸거같으면 _Inventory안에 만들기 Item.CostumeInfo tempCos = _LowDataMgr.instance.GetLowDataCostumeInfo(costumeData._costmeDataIndex); int shardCount = UserInfo.GetItemCountForItemId(tempCos.ShardIdx, (byte)eItemType.USE); slotTf.name = string.Format("{0}", costumeData._costmeDataIndex); UILabel nameAndStack = slotTf.FindChild("costume/name_and_stack_d1").GetComponent <UILabel>(); UILabel ability = slotTf.FindChild("costume/ability_d1").GetComponent <UILabel>(); UILabel info = slotTf.FindChild("costume/info_d1").GetComponent <UILabel>(); UISprite icon = slotTf.FindChild("costume/icon").GetComponent <UISprite>(); UISprite bg = slotTf.FindChild("costume/bg").GetComponent <UISprite>(); NetData.ItemAbilityData abilityData = costumeData.AbilityData; nameAndStack.text = string.Format("{0} ({1}/{2})", costumeData.GetLocName(), shardCount, costumeData._needShard); float calculatedAbilityValue = _LowDataMgr.instance.GetCostumeAbilityValue(costumeData._Grade, costumeData._MinorGrade, abilityData.Value); ability.text = string.Format("{0} {1}", UIMgr.instance.GetAbilityLocName(abilityData.Ability) //이름 , UIMgr.instance.GetAbilityStrValue(abilityData.Ability, calculatedAbilityValue)); //지금 능력치 info.text = costumeData.GetDescription(); icon.spriteName = costumeData.GetIconName(); UIButton uiBtnGet = slotTf.FindChild("costume/BtnGet").GetComponent <UIButton>(); UIEventTrigger uiTriMount = slotTf.FindChild("costume/BtnMount").GetComponent <UIEventTrigger>(); GameObject mountEff = slotTf.FindChild("costume/mount_effect").gameObject; GameObject mountCover = slotTf.FindChild("costume/cover").gameObject; bool isGetBtn = false; mountEff.SetActive(costumeData._isEquip); mountCover.SetActive(costumeData._isEquip); ///보유중 if (costumeData._isOwn) { string text = null; if (costumeData._isEquip) { text = _LowDataMgr.instance.GetStringCommon(37); bg.spriteName = "Bod_List04"; } else { text = _LowDataMgr.instance.GetStringCommon(38); bg.spriteName = "Bod_List05"; if (i != 0) { Destroy(uiTriMount.gameObject.GetComponent <TutorialSupport>()); } } EventDelegate.Set(uiTriMount.onClick, delegate() { if (costumeData._isEquip && (IsPreViewCostume)) { OnClickPreView(costumeData); } else { OnClickMountCostume(costumeData); } }); uiTriMount.transform.GetComponent <UILabel>().text = text; } else//획득하지 못한 아이템 { uiTriMount.transform.GetComponent <UILabel>().text = _LowDataMgr.instance.GetStringCommon(38); if (costumeData._needShard <= shardCount)//획득 가능. { uiBtnGet.collider.enabled = true; slotTf.FindChild("costume/BtnGet/label_d2").GetComponent <UILabel>().color = Color.white; EventDelegate.Set(uiBtnGet.onClick, delegate() { OnClickGetCostume(costumeData._costmeDataIndex); }); //, slotTf } else//불가능 { uiBtnGet.collider.enabled = false; slotTf.FindChild("costume/BtnGet/label_d2").GetComponent <UILabel>().color = Color.gray; } EventDelegate.Set(uiTriMount.onClick, delegate() { OnClickPreView(costumeData); }); isGetBtn = true; } uiBtnGet.gameObject.SetActive(isGetBtn); } gridTf.GetComponent <UIGrid>().Reposition(); ListScrollView.enabled = true; ListScrollView.transform.SetLocalY(0); ListScrollView.transform.GetComponent <UIPanel>().clipOffset = Vector3.zero; // ListScrollView.ResetPosition(); if (costimeList.Count < 4) { ListScrollView.enabled = false; } }
/// <summary> 아이템의 옵션정보 표기 </summary> Vector3 SetAbility(NetData._ItemData itemData, ref byte optionCount) { for (int i = 0; i < Abilitys.Length; i++) { Abilitys[i].gameObject.SetActive(false); } int abilityCount = 0; GameObject line = AbilityTf.FindChild("line_d0").gameObject; if (itemData.IsEquipItem())//장비 아이템 { NetData._ItemData mountItemData = NetData.instance.GetUserInfo().GetEquipParts(itemData.EquipPartType); bool isCompare = false; if (mountItemData != null) //같은 파츠이면서 착용한 아이템과 다르다면 비교한다. { if (mountItemData.GetEquipLowData().Class == itemData.GetEquipLowData().Class) //같은 직업군인지 { isCompare = mountItemData._itemIndex != itemData._itemIndex; } } List <NetData.ItemAbilityData> statList = itemData.StatList; abilityCount = statList.Count; for (int i = 0; i < abilityCount; i++) { //float value = (statList[i].Value * 0.1f) + (itemData._enchant + ((itemData._Grade * 10) + itemData._MinorGrade)); int value = _LowDataMgr.instance.GetItemAbilityValueToInt(statList[i].Value, itemData._enchant); Abilitys[i].text = string.Format("{0} {1}", uiMgr.GetAbilityLocName(statList[i].Ability), value); Abilitys[i].gameObject.SetActive(true); } } else//사용 아이템 { abilityCount = itemData.StatList.Count; for (int i = 0; i < abilityCount; i++) { NetData.ItemAbilityData data = itemData.StatList[i]; Abilitys[i].text = string.Format("{0} {1}", uiMgr.GetAbilityLocName(data.Ability) , uiMgr.GetAbilityStrValue(data.Ability, data.Value * 0.1f)); Abilitys[i].gameObject.SetActive(true); } } if (abilityCount == 0)//Option이 없다. 꺼놓고 자신의 좌표를 준다. { AbilityTf.gameObject.SetActive(false); return(AbilityTf.localPosition); } ++optionCount; ++abilityCount; AbilityTf.gameObject.SetActive(true); ///Line 그리기 Transform lineTf = AbilityTf.FindChild("line_d0"); Vector3 linePos = lineTf.localPosition; linePos.y = -(abilityCount * 27); lineTf.localPosition = linePos; ///다음에 올 객체에 관한 포지션 값 Vector3 pos = AbilityTf.localPosition; pos.y += (linePos.y - 27); return(pos); }