using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class CustomizedGiftChooseWin : UIBase { [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; int index; int actCtgIndex; #region Built-in protected override void InitComponent() { closeBtn.SetListener(CloseWindow); closeBtn2.SetListener(CloseWindow); okBtn.SetListener(ChooseItem); } protected override void OnPreOpen() { CustomizedRechargeModel.Instance.InitChoose(); m_Controller.OnRefreshCell += OnRefreshCell; CustomizedRechargeModel.Instance.UpdateWin += OnUpdateWin; RechargeManager.Instance.rechargeCountEvent += VipModel_rechargeCountEvent; Display(); } void VipModel_rechargeCountEvent(int obj) { if (CustomizedRechargeModel.Instance.chooseCTGID == obj) { CloseWindow(); } } protected override void OnOpen() { DisplayScroll(); } protected override void OnPreClose() { m_Controller.OnRefreshCell -= OnRefreshCell; CustomizedRechargeModel.Instance.UpdateWin -= OnUpdateWin; RechargeManager.Instance.rechargeCountEvent -= VipModel_rechargeCountEvent; } void OnUpdateWin() { Display(); m_Controller.m_Scorller.RefreshActiveCellViews(); } #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(CustomizedRechargeModel.Instance.chooseCTGID); var selectItemInfo = ctgConfig.SelectItemInfo[CustomizedRechargeModel.Instance.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(CustomizedRechargeModel.Instance.chooseCTGID); var selectItemInfo = ctgConfig.SelectItemInfo[CustomizedRechargeModel.Instance.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 = CustomizedRechargeModel.Instance.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 == CustomizedRechargeModel.Instance.chooseWinIndex) { selectItemID = CTGSelectItemConfig.Get(selectID).ItemID; selectIemCount = CTGSelectItemConfig.Get(selectID).ItemCount; } } else { itemCellList[i].Init(null); } int index = i; itemCellList[i].button.SetListener(() => { if (CustomizedRechargeModel.Instance.chooseWinIndex != index) { CustomizedRechargeModel.Instance.chooseWinIndex = index; Display(); DisplayScroll(); } }); imageList[i].SetActive(i == CustomizedRechargeModel.Instance.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(CustomizedRechargeModel.Instance.chooseCTGID); if (ctgConfig.SelectItemInfo.Length != CustomizedRechargeModel.Instance.chooseIndexDict.Count) { SysNotifyMgr.Instance.ShowTip("CustomizedGift01"); return; } CA126_tagCMSelectCTGItem pack = new CA126_tagCMSelectCTGItem(); pack.RecordID = (ushort)CustomizedRechargeModel.Instance.chooseCTGID; pack.SelectItemValue = CustomizedRechargeModel.Instance.GetSelectedItemValue(); GameNetSystem.Instance.SendInfo(pack); } }