| using UnityEngine; | 
| using System.Collections.Generic; | 
| using UnityEngine.UI; | 
|   | 
| public class ServerListWin : UIBase | 
| { | 
|     // 组件引用 | 
|     [SerializeField] CyclicScroll m_ServerGroupScroll; | 
|     [SerializeField] CyclicScroll m_ServerScroll; | 
|     [SerializeField] Button m_Close; | 
|   | 
|     // 生命周期 | 
|     protected override void Awake() | 
|     { | 
|         base.Awake(); | 
|         // 初始化组件引用 | 
|     } | 
|   | 
|     protected override void Start() | 
|     { | 
|         base.Start(); | 
|         // 初始化数据 | 
|     } | 
|   | 
|     protected override void InitComponent() | 
|     { | 
|         base.InitComponent(); | 
|         m_Close.AddListener(CloseWindow); | 
|     } | 
|   | 
|     // UI事件 | 
|     protected override void OnOpen() | 
|     { | 
|         base.OnOpen(); | 
|         // 窗口打开时的逻辑 | 
|         ServerListCenter.Instance.serverGroupSelectEvent += RefreshServerList; | 
|         m_ServerGroupScroll.Init(ServerListCenter.Instance.GetAllServerGroup()); | 
|         RefreshServerList(); | 
|     } | 
|   | 
|     protected override void OnClose() | 
|     { | 
|         base.OnClose(); | 
|         // 窗口关闭时的逻辑 | 
|         ServerListCenter.Instance.serverGroupSelectEvent -= RefreshServerList; | 
|     } | 
|   | 
|     public override void Refresh() | 
|     { | 
|         base.Refresh(); | 
|         // 刷新UI显示 | 
|     } | 
|   | 
|   | 
|     private void RefreshServerList() | 
|     { | 
|         ServerGroup serverGroup = null; | 
|         if (ServerListCenter.Instance.TryGetServerGroup(ServerListCenter.Instance.currentServerGroup, out serverGroup)) | 
|         { | 
|             if (serverGroup.group_list != null) | 
|             { | 
|                 var groupDatas = new List<ServerDataCouple>(); | 
|                 var serverDataList = new List<ServerData>(serverGroup.group_list); | 
|   | 
|                 for (int i = serverDataList.Count - 1; i >= 0; i--) | 
|                 { | 
|                     if (VersionConfig.Get().isBanShu) | 
|                     { | 
|                         if (serverDataList[i].region_flag != 8000) | 
|                         { | 
|                             serverDataList.RemoveAt(i); | 
|                         } | 
|                     } | 
|                     else | 
|                     { | 
|                         if (serverDataList[i].region_flag == 8000) | 
|                         { | 
|                             serverDataList.RemoveAt(i); | 
|                         } | 
|                     } | 
|                 } | 
|   | 
|                 serverDataList.Sort(ServerData.Compare); | 
|                 var max = serverDataList.Count; | 
|                 for (int i = 0; i < max; i++, i++) | 
|                 { | 
|                     if (i + 1 < max) | 
|                     { | 
|                         groupDatas.Add(new ServerDataCouple(serverDataList[i], serverDataList[i + 1])); | 
|                     } | 
|                     else | 
|                     { | 
|                         groupDatas.Add(new ServerDataCouple(serverDataList[i])); | 
|                     } | 
|                 } | 
|   | 
|                 m_ServerScroll.Init(groupDatas); | 
|             } | 
|             else | 
|             { | 
|                 m_ServerScroll.Init<ServerDataCouple>(null); | 
|             } | 
|   | 
|         } | 
|     } | 
| } |