using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class CustomizedGiftChooseWin : Window { [SerializeField] ScrollerController m_Controller; [SerializeField] Text txtTitle; [SerializeField] RichText txtInfo; [SerializeField] List itemCellList; [SerializeField] List imageList; [SerializeField] Button closeBtn; [SerializeField] Button closeBtn2; [SerializeField] Button okBtn; CustomizedRechargeModel model { get { return ModelCenter.Instance.GetModel(); } } VipModel vipModel { get { return ModelCenter.Instance.GetModel(); } } int index; int actCtgIndex; #region Built-in protected override void BindController() { } protected override void AddListeners() { closeBtn.SetListener(CloseClick); closeBtn2.SetListener(CloseClick); okBtn.SetListener(ChooseItem); } protected override void OnPreOpen() { model.InitChoose(); m_Controller.OnRefreshCell += OnRefreshCell; model.UpdateWin += OnUpdateWin; vipModel.rechargeCountEvent += VipModel_rechargeCountEvent; Display(); } void VipModel_rechargeCountEvent(int obj) { if (model.chooseCTGID == obj) { CloseClick(); } } protected override void OnAfterOpen() { DisplayScroll(); } protected override void OnPreClose() { m_Controller.OnRefreshCell -= OnRefreshCell; model.UpdateWin -= OnUpdateWin; vipModel.rechargeCountEvent -= VipModel_rechargeCountEvent; } void OnUpdateWin() { Display(); m_Controller.m_Scorller.RefreshActiveCellViews(); } protected override void OnAfterClose() { } #endregion private void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell as CustomizedGiftChooseCell; _cell.Display(_cell.index); } void DisplayScroll() { m_Controller.Refresh(); var ctgConfig = CTGConfig.Get(model.chooseCTGID); var selectItemInfo = ctgConfig.SelectItemInfo[model.chooseWinIndex]; int count = selectItemInfo.Length; int lineCount = (int)Math.Ceiling((double)count / 7); for (int i = 0; i < lineCount; i++) { m_Controller.AddCell(ScrollerDataType.Header, i); } m_Controller.Restart(); } void Display() { for (int i = 0; i < imageList.Count; i++) { imageList[i].SetActive(false); } var ctgConfig = CTGConfig.Get(model.chooseCTGID); var selectItemInfo = ctgConfig.SelectItemInfo[model.chooseWinIndex]; int selectItemID = 0; int selectIemCount = 0; for (int i = 0; i < itemCellList.Count; i++) { if (i < ctgConfig.SelectItemInfo.Length) { itemCellList[i].SetActive(true); int chooseIndex = model.GetChooseSubIndex(i); if (chooseIndex != 0) { int selectID = ctgConfig.SelectItemInfo[i][chooseIndex - 1]; var itemData = new ItemCellModel(CTGSelectItemConfig.Get(selectID).ItemID, false, (ulong)CTGSelectItemConfig.Get(selectID).ItemCount); itemCellList[i].Init(itemData); if (i == model.chooseWinIndex) { selectItemID = CTGSelectItemConfig.Get(selectID).ItemID; selectIemCount = CTGSelectItemConfig.Get(selectID).ItemCount; } } else { itemCellList[i].Init(null); } int index = i; itemCellList[i].button.SetListener(() => { if (model.chooseWinIndex != index) { model.chooseWinIndex = index; Display(); DisplayScroll(); } }); imageList[i].SetActive(i == model.chooseWinIndex); } else { itemCellList[i].SetActive(false); } } if (selectItemID > 0) { txtTitle.SetActive(true); txtInfo.SetActive(true); txtTitle.text = StringUtility.Contact(ItemConfig.Get(selectItemID).ItemName, " x", selectIemCount); txtInfo.text = ItemConfig.Get(selectItemID).Description; } else { txtTitle.SetActive(false); txtInfo.SetActive(false); } } void ChooseItem() { var ctgConfig = CTGConfig.Get(model.chooseCTGID); if (ctgConfig.SelectItemInfo.Length != model.chooseIndexDict.Count) { SysNotifyMgr.Instance.ShowTip("CustomizedGift01"); return; } CA126_tagCMSelectCTGItem pack = new CA126_tagCMSelectCTGItem(); pack.RecordID = (ushort)model.chooseCTGID; pack.SelectItemValue = model.GetSelectedItemValue(); GameNetSystem.Instance.SendInfo(pack); } } }