using System.Collections.Generic; using TableConfig; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class GetWaysWin : Window { [SerializeField] private ScrollerController _waysCtrl; [SerializeField] private Transform waysLineCell; [SerializeField] private Button _closeBtn; GetItemPathModel _itemPathModel; GetItemPathModel itemPathModel { get { return _itemPathModel ?? (_itemPathModel = ModelCenter.Instance.GetModel()); } } DailyQuestModel _questModel; DailyQuestModel QuestModel { get { return _questModel ?? (_questModel = ModelCenter.Instance.GetModel()); } } protected override void BindController() { _waysCtrl.OnRefreshCell += RefreshWayCell; } protected override void AddListeners() { _closeBtn.onClick.AddListener(CloseWin); } protected override void OnPreOpen() { CreateWayCell(); } protected override void OnAfterOpen() { transform.SetAsLastSibling(); } protected override void OnPreClose() { } protected override void OnAfterClose() { } private List getWayslist; private void CreateWayCell() { getWayslist = itemPathModel.GetWaysList(); _waysCtrl.Refresh(); int i = 0; int remain = getWayslist.Count % waysLineCell.childCount; int line = (int)getWayslist.Count / waysLineCell.childCount; if (remain > 0) { line += 1; } for (i = 0; i < line; i++) { _waysCtrl.AddCell(ScrollerDataType.Header, i); } _waysCtrl.Restart(); } private void RefreshWayCell(ScrollerDataType type, CellView cell) { int i = 0; for (i = 0; i < cell.transform.childCount; i++) { WayCell wayCell = cell.transform.GetChild(i).GetComponent(); if (wayCell == null) wayCell = cell.transform.GetChild(i).gameObject.AddComponent(); int index = (cell.transform.childCount) * cell.index + i; if (index <= getWayslist.Count - 1) { cell.transform.GetChild(i).gameObject.SetActive(true); GetItemWaysConfig itemWaysModel = getWayslist[index]; wayCell.icon.SetSprite(itemWaysModel.Icon); wayCell.wayName.text = itemWaysModel.Text; wayCell.funcName.text = itemWaysModel.name; wayCell.wayButton.RemoveAllListeners(); wayCell.wayButton.AddListener(() => { ClickWayCell(itemWaysModel); }); } else { cell.transform.GetChild(i).gameObject.SetActive(false); } } } public void ClickWayCell(GetItemWaysConfig itemWaysModel) { CloseImmediately(); itemPathModel.ClickGetWay(itemPathModel.chinItemModel.ID, itemWaysModel); } private void CloseWin() { itemPathModel.ResetAllModel(); Close(); } } }