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<ChooseItemsModel>(); } }
|
BoxGetItemModel boxModel { get { return ModelCenter.Instance.GetModel<BoxGetItemModel>(); } }
|
PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
RuneModel runeModel { get { return ModelCenter.Instance.GetModel<RuneModel>(); } }
|
|
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<int> 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<MountModel>().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<PetModel>()._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<TitleModel>().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<PhantasmPavilionModel>().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<VirtualPackModel>().GetNoPackItemCount(itemId);
|
if (itemConfig.Effect1 == 267)
|
{
|
int soulID = itemConfig.EffectValueA1;
|
int soulLV = ModelCenter.Instance.GetModel<GatheringSoulModel>().GetSoulLevel(soulID);
|
if (soulLV > 0)
|
{
|
txtNeed.text = Language.Get("ChooseItems02", soulLV);
|
imgNeed.SetActive(true);
|
}
|
}
|
}
|
else
|
{
|
|
|
haveCnt = ModelCenter.Instance.GetModel<VirtualPackModel>().GetItemCountById(packType, itemId);
|
}
|
break;
|
case PackType.RunePack:
|
haveCnt = ModelCenter.Instance.GetModel<VirtualPackModel>().GetItemCountById(packType, itemId);
|
bool isInlayByItemId = ModelCenter.Instance.GetModel<RuneModel>().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();
|
}
|
}
|
|
|
|
|
|