using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { [XLua.Hotfix] public class JadeDynastyGemEquipCell : CellView { [SerializeField] ItemCell m_Item; [SerializeField] Transform m_ContainerSelect; [SerializeField] Image m_EquipBG; [SerializeField] RedpointBehaviour m_Redpoint; [SerializeField] Transform m_ContainerGem; [SerializeField] Transform[] m_GemHoles; [SerializeField] Image[] m_Gems; [SerializeField] Text m_EquipName; [SerializeField] Text m_Content; [SerializeField] Text m_Remind; [SerializeField] Button m_Select; int equipPlace = 0; GemModel model { get { return ModelCenter.Instance.GetModel(); } } PackModel playerPack { get { return ModelCenter.Instance.GetModel(); } } JadeDynastyGemModel jadeDynastyGemModel { get { return ModelCenter.Instance.GetModel(); } } private void Awake() { m_Select.onClick.AddListener(OnSelect); } public void Display(int _pos) { equipPlace = _pos; m_ContainerSelect.gameObject.SetActive(equipPlace == jadeDynastyGemModel.selectEquipPlace); ItemModel itemModel = playerPack.GetItemByIndex(PackType.JadeDynastyEquip, _pos); bool existEquip = itemModel != null; m_Item.gameObject.SetActive(existEquip); m_Remind.gameObject.SetActive(!existEquip); m_Content.gameObject.SetActive(!existEquip); m_ContainerGem.gameObject.SetActive(existEquip); m_EquipName.gameObject.SetActive(existEquip); if (itemModel != null) { ItemConfig config = ItemConfig.Get(itemModel.itemId); m_EquipName.gameObject.SetActive(true); m_EquipName.text = UIHelper.AppendStringColor(config.ItemColor, config.ItemName, true); m_Item.Init(itemModel); } else { var equipPartName = Language.Get(((RoleEquipType)equipPlace).ToString()); m_Content.text = Language.Get("L1076", equipPartName); m_Remind.text = Language.Get("L1067"); } if (existEquip) { DisplayGems(); } m_Redpoint.redpointId = JadeDynastyGemModel.REDPOINTID * 100 + equipPlace - 121; } private static Queue m_GemIdQueue = new Queue(); void DisplayGems() { var itemModel = playerPack.GetItemByIndex(PackType.JadeDynastyEquip, equipPlace); var config = ItemConfig.Get(itemModel.itemId); var holeCount = 0; m_GemIdQueue.Clear(); JadeDynastyGemModel.GemEquipData equipData; bool existStone = jadeDynastyGemModel.TryGetEquipGems(equipPlace, out equipData); if (existStone) { for (int i = 0; i < 4; i++) { if (equipData.items[i] != 0) { m_GemIdQueue.Enqueue(equipData.items[i]); } } } for (int i = 0; i < 4; i++) { bool openHole = false; if (i < 3) { if (config.LV >= jadeDynastyGemModel.gemOpenLevels[i]) { openHole = true; } } else if (i == 3) { if (PlayerDatas.Instance.baseData.VIPLv >= model.gemVipHoleLv && config.LV >= jadeDynastyGemModel.gemOpenLevels[0]) { openHole = true; } } m_Gems[i].gameObject.SetActive(m_GemIdQueue.Count > 0); if (m_GemIdQueue.Count > 0) { var id = m_GemIdQueue.Dequeue(); ItemConfig itemConfig = ItemConfig.Get((int)id); m_Gems[i].SetSprite(StringUtility.Contact("GemTypeMini_", itemConfig.EffectValueA1)); } if (openHole) { m_GemHoles[holeCount].gameObject.SetActive(true); holeCount++; } } for (int i = holeCount; i < 4; i++) { m_GemHoles[i].gameObject.SetActive(false); m_Gems[i].gameObject.SetActive(false); } } private void OnSelect() { jadeDynastyGemModel.selectEquipPlace = equipPlace; } } }