using System.Collections.Generic; using System.Linq; using UnityEngine; using vnxbqy.UI; public class ChooseItemsCell : CellView { [SerializeField] ItemCell itemCell; [SerializeField] TextEx txtItemName; [SerializeField] TextEx txtNumber; [SerializeField] TextEx txtHaveCount; [SerializeField] TextEx txtNeed; [SerializeField] ImageEx imgNeed; [SerializeField] ButtonEx btnNumber; [SerializeField] ButtonEx btnReduce; [SerializeField] ButtonEx btnPlus; int itemId; ChooseItemsModel model { get { return ModelCenter.Instance.GetModel(); } } BoxGetItemModel boxModel { get { return ModelCenter.Instance.GetModel(); } } PackModel packModel { get { return ModelCenter.Instance.GetModel(); } } RuneModel runeModel { get { return ModelCenter.Instance.GetModel(); } } public void Display(int itemID) { this.itemId = itemID; if (!boxModel.selectDict.ContainsKey(itemID)) return; if (!ItemConfig.Has(itemID)) return; imgNeed.SetActive(false); ItemConfig itemConfig = ItemConfig.Get(itemID); int count = boxModel.selectDict[itemID]; itemCell.Init(new ItemCellModel(itemID, false, (ulong)count)); itemCell.button.SetListener(() => { if (ItemLogicUtility.Instance.IsRealmEquip(itemID)) { ItemTipUtility.Show(new ItemTipUtility.ItemViewInfo() { itemId = itemID, compare = true }); } else { ItemTipUtility.Show(itemID); } }); txtItemName.text = itemConfig.ItemName; txtItemName.color = UIHelper.GetUIColor(itemConfig.ItemColor, true); txtNumber.text = model.userChooseItemDict.ContainsKey(itemID) ? model.userChooseItemDict[itemID].useCnt.ToString() : 0.ToString(); if (itemConfig.Effect1 == 220) { this.itemId = itemConfig.EffectValueA1; } int haveCnt = 0; if (itemConfig.Type == 147) // 古宝碎片 { if (itemConfig.Effect1 == 270) { int gubaoId = itemConfig.EffectValueA1; haveCnt = TreasurePavilionModel.Instance.GetGubaoItemCount(gubaoId); List gubaoInfo = TreasurePavilionModel.Instance.TryGetGubaoInfo(gubaoId); if (!gubaoInfo.IsNullOrEmpty()) { txtNeed.text = Language.Get("ChooseItems01", gubaoInfo[0]); imgNeed.SetActive(true); } } else { haveCnt = packModel.GetItemCountByID(PackType.Item, itemId); } } else if (itemConfig.Type == 41) //坐骑碎片 { haveCnt = packModel.GetItemCountByID(PackType.Item, itemId); var horseId = HorseConfig.GetItemUnLockHorse(itemId); bool isMountSkinActive = ModelCenter.Instance.GetModel().isMountSkinActive(horseId); if (isMountSkinActive) { txtNeed.text = Language.Get("ChooseItems03"); imgNeed.SetActive(true); } } else if (itemConfig.Type == 26) //灵宠碎片 { haveCnt = packModel.GetItemCountByID(PackType.Item, itemId); var petId = PetInfoConfig.GetItemUnLockPet(itemId); bool isPetIdActive = ModelCenter.Instance.GetModel()._DicPetBack.ContainsKey(petId); if (isPetIdActive) { txtNeed.text = Language.Get("ChooseItems03"); imgNeed.SetActive(true); } } else if (itemConfig.Type == 4) //称号 { haveCnt = packModel.GetItemCountByID(PackType.Item, itemId); if (itemConfig.Effect1 == 204) { var labelID = itemConfig.EffectValueA1; bool isLabelActive = ModelCenter.Instance.GetModel().IsTitleGain(labelID); if (isLabelActive) { txtNeed.text = Language.Get("ChooseItems03"); imgNeed.SetActive(true); } } } else if (itemConfig.Type == 149) //气泡 { haveCnt = packModel.GetItemCountByID(PackType.Item, itemId); if (itemConfig.Effect1 == 237) { var chatBubbleID = itemConfig.EffectValueA1; int unLockState = ModelCenter.Instance.GetModel().GetUnLockState(PhantasmPavilionTab.ChatBubble, chatBubbleID); if (unLockState == 2) { txtNeed.text = Language.Get("ChooseItems03"); imgNeed.SetActive(true); } } } else { var packType = GeneralDefine.GetPackTypeByItemType(itemConfig.Type); switch (packType) { case PackType.GatherSoul: if (itemConfig.Type == 148) { haveCnt = ModelCenter.Instance.GetModel().GetNoPackItemCount(itemId); if (itemConfig.Effect1 == 267) { int soulID = itemConfig.EffectValueA1; int soulLV = ModelCenter.Instance.GetModel().GetSoulLevel(soulID); if (soulLV > 0) { txtNeed.text = Language.Get("ChooseItems02", soulLV); imgNeed.SetActive(true); } } } else { haveCnt = ModelCenter.Instance.GetModel().GetItemCountById(packType, itemId); } break; case PackType.RunePack: haveCnt = ModelCenter.Instance.GetModel().GetItemCountById(packType, itemId); bool isInlayByItemId = ModelCenter.Instance.GetModel().IsInlayByItemId(itemId); if (isInlayByItemId) { txtNeed.text = Language.Get("ChooseItems04"); imgNeed.SetActive(true); } txtItemName.text = runeModel.GetRunePropertyDescription(itemId, 1); break; default: if (ItemLogicUtility.Instance.IsSatisfyEquipBetterEquip(itemId)) { txtNeed.text = Language.Get("ChooseItems05"); imgNeed.SetActive(true); } haveCnt = packModel.GetItemCountByID(packType, itemId) + packModel.GetItemCountByID(PackType.Equip, itemId); break; } } txtHaveCount.text = haveCnt.ToString(); btnPlus.SetListener(OnClickPlus); btnReduce.SetListener(OnClickReduce); btnNumber.SetListener(OnClickNumber); } void OnClickPlus() { ItemModel itemModel = packModel.GetItemByGuid(boxModel.guid); if (itemModel == null) return; if (model.GetNowChooseItemCount() >= model.totalItemCount) return; model.IncreaseUserChooseItemCount(itemId, itemModel.guid, itemId, true); } void OnClickReduce() { ItemModel itemModel = packModel.GetItemByGuid(boxModel.guid); if (itemModel == null) return; if (!model.userChooseItemDict.ContainsKey(itemId)) return; if (model.userChooseItemDict[itemId].useCnt <= 0) return; model.IncreaseUserChooseItemCount(itemId, itemModel.guid, itemId, false); } void OnClickNumber() { model.chooseKeyBoardItemId = itemId; model.openKeyBoardAction?.Invoke(); } }