using System.Linq; using ET; using FairyGUI; using UI.Login; namespace GFGGame { public class ServerListView : BaseWindow { private UI_ServerListUI _ui; private ServerInfosComponent serverInfosComponent; public override void Dispose() { base.Dispose(); } protected override void OnInit() { base.OnInit(); _ui = UI_ServerListUI.Create(); this.viewCom = _ui.target; this.viewCom.Center(); this.modal = true; _ui.m_list.itemRenderer = ListItemRender; _ui.m_list.onClickItem.Add(OnListItemClick); _ui.m_list.SetVirtual(); } protected override void OnShown() { base.OnShown(); serverInfosComponent = GameGlobal.zoneScene.GetComponent(); if (serverInfosComponent.ServerInfoList.Count <= 0) { _ui.m_btnCurServer.target.visible = false; return; } ServerInfo recentlyServerInfo = serverInfosComponent.recentlyServerInfo; _ui.m_btnCurServer.m_txtTitle.text = string.Format("{0}区 {1}", NumberUtil.GetChiniseNumberText((int)recentlyServerInfo.Id), recentlyServerInfo.ServerName); _ui.m_list.numItems = serverInfosComponent.ServerInfoList.Count; } protected override void OnHide() { base.OnHide(); } private void ListItemRender(int index, GObject obj) { UI_Button2 item = UI_Button2.Proxy(obj); ServerInfo serverInfo = serverInfosComponent.ServerInfoList.ElementAt(index).Value; item.m_txtTitle.text = string.Format("{0}区 {1}", NumberUtil.GetChiniseNumberText((int)serverInfo.Id), serverInfo.ServerName); if (serverInfo.Id == serverInfosComponent.CurrentServerId) item.target.selected = true; item.target.data = serverInfo.Id; } private void OnListItemClick(EventContext context) { long id = (long)(context.data as GObject).data; serverInfosComponent.CurrentServerId = (int)id; EventAgent.DispatchEvent(ConstMessage.SERVER_CHANGE); } } }