using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using EnhancedUI.EnhancedScroller; using Snxxz.UI; using TableConfig; public class DungeonLiquidCell : ScrollerUI { [SerializeField] Transform m_ContainerUp; [SerializeField] Text m_ExpUpper; [SerializeField] Image m_UpperIcon; [SerializeField] Transform m_ContainerBuy; [SerializeField] Text m_Cost; [SerializeField] Image m_ItemBG; [SerializeField] Image m_ItemIcon; [SerializeField] Image m_MoneyIcon; [SerializeField] Text m_ItemCount; [SerializeField] Button m_FuncBtn; [SerializeField] Button m_ItemBtn; [SerializeField] Text m_BtnTxt; [SerializeField] Transform m_ContainerUse; DungeonLiquidModel m_Model; DungeonLiquidModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel()); } } PlayerBuffDatas m_BuffModel; PlayerBuffDatas Buffmodel { get { return m_BuffModel ?? (m_BuffModel = ModelCenter.Instance.GetModel()); } } StoreModel _storeModel; StoreModel m_storeModel { get { return _storeModel ?? (_storeModel = ModelCenter.Instance.GetModel()); } } public override void Refresh(CellView cell) { int index = cell.index; if (model.IsBagHasLiquid) { if (index < model.liquidItemList.Count) { ItemModel itemModel = model.liquidItemList[index]; ItemConfig cfg = Config.Instance.Get((int)itemModel.itemInfo.ItemID); m_ItemIcon.SetSprite(cfg.IconKey); m_ItemBG.SetItemBackGround(cfg.ItemColor); if (itemModel.itemInfo.ItemCount > 1) { m_ItemCount.gameObject.SetActive(true); m_ItemCount.text = itemModel.itemInfo.ItemCount.ToString(); } else { m_ItemCount.gameObject.SetActive(false); } if (Buffmodel._BuffDic.ContainsKey(cfg.AddSkill1)) { m_ContainerUp.gameObject.SetActive(false); m_ContainerUse.gameObject.SetActive(true); } else { m_ContainerUse.gameObject.SetActive(false); m_ContainerUp.gameObject.SetActive(true); m_ContainerUp.transform.localPosition = m_ContainerUp.transform.localPosition.SetY(0); SkillConfig skillCfg = Config.Instance.Get(cfg.AddSkill1); m_ExpUpper.text = Language.Get("FairyLand_Func24", skillCfg.EffectValue11 / 100); var _buffId = 0; m_UpperIcon.gameObject.SetActive(true); if (UseLiquid(out _buffId)) { var currentSkillConfig = Config.Instance.Get(_buffId); if (currentSkillConfig.EffectValue11 >= skillCfg.EffectValue11) { m_UpperIcon.gameObject.SetActive(false); } } } m_ContainerBuy.gameObject.SetActive(false); m_BtnTxt.text = Language.Get("FairyLand_Func25"); m_FuncBtn.onClick.RemoveAllListeners(); m_FuncBtn.onClick.AddListener(() => { OnUseItemClick(itemModel); }); m_ItemBtn.onClick.RemoveAllListeners(); m_ItemBtn.onClick.AddListener(() => { OnItemClick(itemModel); }); } } else { if (index < model.liquidStoreConfigs.Count) { StoreConfig storeModel = model.liquidStoreConfigs[index]; ItemConfig cfg = Config.Instance.Get(storeModel.ItemID); m_ItemIcon.SetSprite(cfg.IconKey); m_ItemBG.SetItemBackGround(cfg.ItemColor); m_ItemCount.gameObject.SetActive(false); m_MoneyIcon.SetIconWithMoneyType(storeModel.MoneyType); m_ContainerUp.transform.localPosition = m_ContainerUp.transform.localPosition.SetY(25); SkillConfig skillCfg = Config.Instance.Get(cfg.AddSkill1); m_ExpUpper.text = Language.Get("FairyLand_Func24", skillCfg.EffectValue11 / 100); m_ContainerUp.gameObject.SetActive(true); var _buffId = 0; m_UpperIcon.gameObject.SetActive(true); if (UseLiquid(out _buffId)) { var currentSkillConfig = Config.Instance.Get(_buffId); if (currentSkillConfig.EffectValue11 >= skillCfg.EffectValue11) { m_UpperIcon.gameObject.SetActive(false); } } m_ContainerBuy.gameObject.SetActive(true); m_ContainerUse.gameObject.SetActive(false); m_Cost.text = storeModel.MoneyNumber.ToString(); m_BtnTxt.text = Language.Get("FairyLand_Func23"); m_FuncBtn.onClick.RemoveAllListeners(); m_FuncBtn.onClick.AddListener(() => { OnBuyItemClick(storeModel); }); m_ItemBtn.onClick.RemoveAllListeners(); m_ItemBtn.onClick.AddListener(() => { OnItemClick(cfg); }); } } } private bool UseLiquid(out int _buffId) { _buffId = 0; for (int i = 0; i < model.liquidItems.Count; i++) { var config = Config.Instance.Get(model.liquidItems[i]); if (Buffmodel._BuffDic.ContainsKey(config.AddSkill1)) { _buffId = config.AddSkill1; return true; } } return false; } private void OnBuyItemClick(StoreConfig storeModel) { m_storeModel.SendBuyShopItem(storeModel, 1); } private void OnUseItemClick(ItemModel itemModel) { int buffid = 0; for (int i = 0; i < model.liquidItems.Count; i++) { ItemConfig cfg = Config.Instance.Get(model.liquidItems[i]); if (Buffmodel._BuffDic.ContainsKey(cfg.AddSkill1)) { buffid = cfg.AddSkill1; break; } } ItemConfig _useItemCfg = Config.Instance.Get(itemModel.itemId); if (buffid != 0 && buffid != _useItemCfg.AddSkill1) { ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("FairyLand_Func22"), (bool isOk) => { if (isOk) { WindowCenter.Instance.CloseImmediately(); PackSendQuestMgr.Instance.SendMakeUseQuest(itemModel.itemInfo.ItemPlace); } }); } else { WindowCenter.Instance.CloseImmediately(); PackSendQuestMgr.Instance.SendMakeUseQuest(itemModel.itemInfo.ItemPlace); } } private void OnItemClick(ItemConfig _itemCfg) { ItemAttrData itemAttrData = new ItemAttrData(_itemCfg.ID); ModelCenter.Instance.GetModel().SetItemTipsModel(itemAttrData); } private void OnItemClick(ItemModel _itemModel) { ModelCenter.Instance.GetModel().SetItemTipsModel(_itemModel.packType, _itemModel.itemInfo.ItemGUID); } }