using Snxxz.UI; using System.Collections; using System.Collections.Generic; using TableConfig; using UnityEngine; using UnityEngine.UI; using System; namespace EnhancedUI.EnhancedScroller { public class MarketDealItemCell : CellView { [SerializeField] Image m_ItemBG; [SerializeField] Image m_ItemIcon; [SerializeField] Image m_UpImg; [SerializeField] Text m_ItemCount; [SerializeField] Text m_ItemName; [SerializeField] Text m_ItemGrade; [SerializeField] Text m_ItemUintPrice; [SerializeField] Text m_ItemTotalPrice; [SerializeField] Button m_ItemBtn; [SerializeField] List m_Stars; MarketModel m_Model; MarketModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel()); } } PackModelInterface _modelInterface; PackModelInterface modelInterface { get { return _modelInterface ?? (_modelInterface = ModelCenter.Instance.GetModel()); } } ItemTipsModel _itemTipsModel; ItemTipsModel itemTipsModel { get { return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel()); } } PlayerPackModel _playerPack; PlayerPackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel()); } } private int m_Index = 0; public void Display(int _index) { m_Index = _index; var _data = model.marketDealItems[_index]; var _itemCfg = Config.Instance.Get((int)_data.ItemTypeID); m_ItemGrade.gameObject.SetActive(_itemCfg.Type >= 101 && _itemCfg.Type < 110); m_ItemGrade.text = StringUtility.Contact(Language.Get("EquipWin_EquipPointText_1"), _data.EquipGS); var _uintPrice = (int)_data.PriceCount / _data.Count; m_ItemUintPrice.text = _uintPrice < 1 ? "<1" : _uintPrice.ToString(); m_ItemTotalPrice.text = _data.PriceCount.ToString(); m_ItemCount.gameObject.SetActive(_data.Count > 1); m_ItemCount.text = _data.Count.ToString(); m_ItemIcon.SetSprite(_itemCfg.IconKey); int fightUp = modelInterface.IsFightUp((int)_data.ItemTypeID, (int)_data.EquipGS); m_UpImg.gameObject.SetActive(fightUp == 1 || fightUp == -1); if (fightUp == 1) { m_UpImg.SetSprite("EquipUpIcon"); } else if (fightUp == -1) { m_UpImg.SetSprite("EquipDownIcon"); } var _itemColor = _itemCfg.ItemColor; if (_itemCfg.Type == 111) { _itemColor = UIHelper.GetItemColor(_itemCfg.ID, ConfigParse.Analysis(_data.UserData)); } m_ItemBG.SetItemBackGround(_itemColor); bool _bright = (m_ItemName is RichText) ? (m_ItemName as RichText).colorType == RichText.ColorType.Bright : true; m_ItemName.color = UIHelper.GetUIColor(_itemColor, _bright); m_ItemName.text = StringUtility.Contact(_itemCfg.ItemName, _data.NeadPwd == 1 ? Language.Get("DealItemNeedPwd") : string.Empty); for (int i = 0; i < m_Stars.Count; i++) { m_Stars[i].SetActive(i < _itemCfg.StarLevel); } m_ItemBtn.onClick.RemoveAllListeners(); m_ItemBtn.onClick.AddListener(() => { OnItemClick(_data); }); } private void OnItemClick(MarketItemData data) { ItemAttrData attrData = new ItemAttrData((int)data.ItemTypeID, false, data.Count, -1, 0, true, PackType.rptDeleted, "", ConfigParse.Analysis(data.UserData)); if (data.PlayerID != PlayerDatas.Instance.PlayerId) { attrData.SetTipsFuncBtn(ItemWinBtnType.buy, ItemWinModelBtnClick); } itemTipsModel.SetItemTipsModel(attrData); } private void ItemWinModelBtnClick(ItemWinBtnType type, string arg2) { switch (type) { case ItemWinBtnType.buy: PwdKeyboardWin.OnPwdWinClose -= OnPwdWinClose; var _data = model.marketDealItems[m_Index]; if (UIHelper.GetMoneyCnt(_data.PriceType) < _data.PriceCount) { SysNotifyMgr.Instance.ShowTip("NoEnoughMoney1"); return; } int gridCnt = playerPack.GetReaminGridCount(PackType.rptItem); if (gridCnt < 1) { SysNotifyMgr.Instance.ShowTip("BourseBagfull"); return; } if (_data.NeadPwd == 1) { PwdKeyboardWin.OnPwdWinClose += OnPwdWinClose; PwdKeyboard.Instance.pwd = string.Empty; WindowCenter.Instance.Open(); } else { model.SendBuyMarketItem(_data.ItemGUID, string.Empty); } break; } } private void OnPwdWinClose(bool okClose) { PwdKeyboardWin.OnPwdWinClose -= OnPwdWinClose; if (m_Index >= model.marketDealItems.Count) { return; } var _data = model.marketDealItems[m_Index]; if (okClose) { model.SendBuyMarketItem(_data.ItemGUID, PwdKeyboard.Instance.pwd); } } } }