//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, March 07, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TableConfig; namespace Snxxz.UI { public class LevelGiftWin : Window { [SerializeField] ScrollerController m_LevelGiftCtrl; LevelGiftModel m_Model; LevelGiftModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel()); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { m_LevelGiftCtrl.OnRefreshCell += OnRefreshCell; } protected override void OnPreOpen() { PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent; model.OnGetGiftUpdateEvent += OnGetGiftUpdateEvent; //model.OnLimitGiftUpdateEvent += OnLimitGiftUpdateEvent; if (m_LevelGiftCtrl.GetNumberOfCells(m_LevelGiftCtrl.m_Scorller) == 0) { m_LevelGiftCtrl.Refresh(); var _cfgs = Config.Instance.GetAllValues(); for (int i = 0; i < _cfgs.Count; i++) { m_LevelGiftCtrl.AddCell(ScrollerDataType.Header, _cfgs[i].RewardID); } m_LevelGiftCtrl.Restart(); } var _index = 0; model.TryGetLevelGift(out _index); m_LevelGiftCtrl.JumpIndex(_index); m_LevelGiftCtrl.m_Scorller.RefreshActiveCellViews(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= PlayerDataRefreshInfoEvent; model.OnGetGiftUpdateEvent -= OnGetGiftUpdateEvent; //model.OnLimitGiftUpdateEvent -= OnLimitGiftUpdateEvent; } protected override void OnAfterClose() { } #endregion private void OnRefreshCell(ScrollerDataType type, CellView cell) { LevelGiftCell _cell = cell as LevelGiftCell; var _award = model.levelGiftItemDict[_cell.index]; var _cfg = Config.Instance.Get(_cell.index); var _isGet = model.IsGet(_cfg.RewardID); var _vipGot = model.IsVipGet(_cfg.RewardID); var _items = _award.GetAwardItem(PlayerDatas.Instance.baseData.Job); for (int i = 0; i < _cell.items.Length; i++) { if (i < _items.Count) { _cell.items[i].gameObject.SetActive(true); _cell.gotImages[i].gameObject.SetActive(_isGet); var _item = _items[i]; ItemCellModel _ItemData = new ItemCellModel(_item.item.id, false, (ulong)_item.item.count, _item.isBind); _cell.items[i].Init(_ItemData); _cell.items[i].cellBtn.RemoveAllListeners(); _cell.items[i].cellBtn.AddListener(() => { ItemAttrData _itemPropertyData = new ItemAttrData(_item.item.id, false, (ulong)_item.item.count, -1, _item.isBind); ModelCenter.Instance.GetModel().SetItemTipsModel(_itemPropertyData); }); } else { _cell.items[i].gameObject.SetActive(false); } } var _vipAward = model.m_VipItemDict[_cell.index]; ItemCellModel _vipDate = new ItemCellModel(_vipAward.item.item.id, false, (ulong)_vipAward.item.item.count, _vipAward.item.isBind); _cell.vipItem.Init(_vipDate); _cell.vipItem.cellBtn.RemoveAllListeners(); _cell.vipItem.cellBtn.AddListener(() => { ItemAttrData _itemPropertyData = new ItemAttrData(_vipAward.item.item.id, false, (ulong)_vipAward.item.item.count, -1, _vipAward.item.isBind); ModelCenter.Instance.GetModel().SetItemTipsModel(_itemPropertyData); }); _cell.vipGotImage.gameObject.SetActive(_vipGot); _cell.vipText.text = StringUtility.Contact("V", _vipAward.vipLv); _cell.targetLevel.text = _cfg.LV.ToString(); int state = 0; if (!_isGet && PlayerDatas.Instance.baseData.LV < _cfg.LV) { state = 0; } else if (!_isGet && PlayerDatas.Instance.baseData.LV >= _cfg.LV) { state = 1; } else if (!_vipGot && PlayerDatas.Instance.baseData.VIPLv < _cfg.VIPLimit) { state = 2; } else if (!_vipGot && PlayerDatas.Instance.baseData.VIPLv >= _cfg.VIPLimit) { state = 3; } else if (_isGet && _vipGot) { state = 4; } _cell.getBtn.gameObject.SetActive(state == 1 || state == 3); _cell.stateImg.gameObject.SetActive(state == 0 || state == 4); _cell.effect.gameObject.SetActive(state == 1 || state == 3); _cell.vipBtn.gameObject.SetActive(state == 2); if (state == 0 || state == 4) { _cell.stateImg.SetSprite(state == 0 ? "LVReward2" : "LVReward1"); } _cell.getBtn.onClick.RemoveAllListeners(); _cell.getBtn.onClick.AddListener(() => { var _count = ModelCenter.Instance.GetModel().GetReaminGridCount(PackType.rptItem); if (_items.Count > _count) { SysNotifyMgr.Instance.ShowTip("BagFull"); return; } CA504_tagCMPlayerGetReward _pak = new CA504_tagCMPlayerGetReward(); _pak.RewardType = 5; _pak.DataEx = (uint)_cfg.RewardID; _pak.DataExStr = string.Empty; _pak.DataExStrLen = 0; GameNetSystem.Instance.SendInfo(_pak); }); _cell.vipBtn.RemoveAllListeners(); _cell.vipBtn.AddListener(() => { WindowJumpMgr.Instance.ClearJumpData(); WindowCenter.Instance.CloseImmediately(); WindowCenter.Instance.Open(false, 0); }); } private void PlayerDataRefreshInfoEvent(PlayerDataRefresh _type) { if (_type == PlayerDataRefresh.LV) { m_LevelGiftCtrl.m_Scorller.RefreshActiveCellViews(); } else if (_type == PlayerDataRefresh.VIPLv) { m_LevelGiftCtrl.m_Scorller.RefreshActiveCellViews(); } } private void OnGetGiftUpdateEvent() { m_LevelGiftCtrl.m_Scorller.RefreshActiveCellViews(); } private void OnLimitGiftUpdateEvent() { m_LevelGiftCtrl.m_Scorller.RefreshActiveCellViews(); } } }