using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TableConfig; namespace Snxxz.UI { public class XBStoreWin : Window { [SerializeField] ScrollerController shopCtrl; [SerializeField] Toggle equipToggle; [SerializeField] Toggle runeToggle; [SerializeField] Toggle toolToggle; [SerializeField] Text soreValueText; StoreModel _storeModel; StoreModel m_storeModel { get { return _storeModel ?? (_storeModel = ModelCenter.Instance.GetModel()); } } PackModelInterface modelInterface { get { return ModelCenter.Instance.GetModel(); } } List shoplist; int SingleLineCnt = 2; protected override void BindController() { shopCtrl.OnRefreshCell += RefreshShopCell; shopCtrl.lockType = EnhanceLockType.KeepVertical; } protected override void AddListeners() { equipToggle.onValueChanged.AddListener((bool isOn) => { OnClickEquipToggle(isOn); }); runeToggle.onValueChanged.AddListener((bool isOn) => { OnClickRuneToggle(isOn); }); toolToggle.onValueChanged.AddListener((bool isOn) => { OnClickToolToggle(isOn); }); } protected override void OnPreOpen() { m_storeModel.RefreshTCBPlayerDataEvent += RefreshXBScore; RefreshXBScore(PlayerDataRefresh.CDBPlayerRefresh_TreasureScore); m_storeModel.storeFuncType = StoreFunc.XBEquipStore; } protected override void OnAfterOpen() { switch (m_storeModel.storeFuncType) { case StoreFunc.XBEquipStore: equipToggle.isOn = true; OnClickEquipToggle(true); break; case StoreFunc.XBRuneStore: runeToggle.isOn = true; OnClickRuneToggle(true); break; case StoreFunc.XBToolStore: toolToggle.isOn = true; OnClickToolToggle(true); break; } } protected override void OnPreClose() { m_storeModel.RefreshTCBPlayerDataEvent -= RefreshXBScore; } protected override void OnAfterClose() { } private void RefreshXBScore(PlayerDataRefresh refreshType) { if (refreshType != PlayerDataRefresh.CDBPlayerRefresh_TreasureScore) return; soreValueText.text = modelInterface.OnChangeCoinsUnit(UIHelper.GetMoneyCnt(25)); } private void OnClickToolToggle(bool isOn) { if (isOn) { m_storeModel.storeFuncType = StoreFunc.XBToolStore; CreateShopCell(); } } private void OnClickRuneToggle(bool isOn) { if (isOn) { m_storeModel.storeFuncType = StoreFunc.XBRuneStore; CreateShopCell(); } } private void OnClickEquipToggle(bool isOn) { if(isOn) { m_storeModel.storeFuncType = StoreFunc.XBEquipStore; CreateShopCell(); } } private void CreateShopCell() { shopCtrl.Refresh(); shoplist = StoreConfig.GetTypeStoreModel((int)m_storeModel.storeFuncType); if (shoplist.Count > 0) { int i = 0; int remain = shoplist.Count % SingleLineCnt; int line = (int)shoplist.Count / SingleLineCnt; if (remain > 0) { line += 1; } for (i = 0; i < line; i++) { shopCtrl.AddCell(ScrollerDataType.Header, i); } } shopCtrl.Restart(); shopCtrl.JumpIndex(0); } private void RefreshShopCell(ScrollerDataType type, CellView cell) { int length = cell.transform.childCount; for(int i = 0; i < length;i++) { int cellCount = length * cell.index + (i + 1); XBShopCell shopCell = cell.transform.GetChild(i).GetComponent(); if(shoplist.Count >= cellCount) { shopCell.gameObject.SetActive(true); shopCell.SetModel(shoplist[cellCount-1]); } else { shopCell.gameObject.SetActive(false); } } } } }