using System.Collections.Generic; using UnityEngine; using vnxbqy.UI; public class CelestialPalaceNameListWin : Window { [SerializeField] ScrollerController scroller; [SerializeField] ButtonEx btnClose; [SerializeField] ButtonEx btnLike; [SerializeField] ImageEx imgLiked; [SerializeField] TextEx txtNoCell; int nowXGId; // 当前查看的仙宫ID List xgPlayerList; CelestialPalaceModel model { get { return ModelCenter.Instance.GetModel(); } } protected override void BindController() { btnClose.SetListener(CloseClick); btnLike.SetListener(OnClickLike); } protected override void OnPreOpen() { model.UpdateXiangongInfoEvent += OnUpdateXiangongInfoEvent; model.UpdateXiangongRecPlayerInfoEvent += OnUpdateXiangongRecPlayerInfoEvent; model.UpdateXiangongNewPlayerInfoEvent += OnUpdateXiangongNewPlayerInfoEvent; scroller.OnRefreshCell += OnRefreshCell; Display(); } protected override void OnPreClose() { model.UpdateXiangongInfoEvent -= OnUpdateXiangongInfoEvent; model.UpdateXiangongRecPlayerInfoEvent -= OnUpdateXiangongRecPlayerInfoEvent; model.UpdateXiangongNewPlayerInfoEvent -= OnUpdateXiangongNewPlayerInfoEvent; scroller.OnRefreshCell -= OnRefreshCell; WindowCenter.Instance.Open(); } private void OnUpdateXiangongNewPlayerInfoEvent() { Display(); CreateScroller(); } private void OnUpdateXiangongRecPlayerInfoEvent() { Display(); CreateScroller(); } private void OnUpdateXiangongInfoEvent() { Display(); } protected override void OnAfterOpen() { CreateScroller(); } void Display() { nowXGId = model.currentSelectedXGId; if (nowXGId == 0) return; bool isLike = model.IsXGLike(nowXGId); bool isRoomHavePlayer = model.TryGetRoomNewPlayer(nowXGId, out var newPlayerList); btnLike.SetActive(!isLike && isRoomHavePlayer); imgLiked.SetActive(isLike); } void CreateScroller() { xgPlayerList = model.GetSortXGPlayInfo(nowXGId); if (xgPlayerList == null) return; scroller.Refresh(); for (int i = 0; i < xgPlayerList.Count; i++) { scroller.AddCell(ScrollerDataType.Header, i); } scroller.Restart(); txtNoCell.SetActive(xgPlayerList.Count <= 0); } void OnClickLike() { model.SendA907LikePack(nowXGId); } void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell as CelestialPalaceNameListCell; _cell.Display(_cell.index); } protected override void OnAfterClose() { } protected override void AddListeners() { } }