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++) 
 | 
                { 
 | 
                    groupDatas.Add(new ServerDataCouple(serverDataList[i])); 
 | 
                } 
 | 
  
 | 
                m_ServerScroll.Init(groupDatas); 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                m_ServerScroll.Init<ServerDataCouple>(null); 
 | 
            } 
 | 
  
 | 
        } 
 | 
    } 
 | 
} 
 |