void AddServer(string hostname) { for (int i = 0; i < m_Servers.Count; ++i) { var s = m_Servers[i]; if (s.hostname == hostname) { // If already here, just select it SetSelectedServer(i); return; } } var server = new ServerListItemData(); server.listItem = GameObject.Instantiate <ServerListEntry>(serverListEntryTemplate, servers.content); server.hostname = hostname; server.listItem.gameObject.SetActive(true); // Create a SQP query System.Net.IPAddress addr; int port; NetworkUtils.EndpointParse(server.hostname, out addr, out port, 0); // SQP Port is sqpPortOffset after whatever port we are using for the game itself port = (port == 0 ? NetworkConfig.serverPort.IntValue : port) + NetworkConfig.sqpPortOffset; server.sqpQuery = Game.game.sqpClient.GetSQPQuery(new System.Net.IPEndPoint(addr, port)); UpdateItem(server); m_Servers.Add(server); SetSelectedServer(m_Servers.Count - 1); }
void UpdateItem(ServerListItemData option) { option.listItem.hostName.text = option.hostname; if (option.sqpQuery.validResult) { var sid = option.sqpQuery.m_ServerInfo.ServerInfoData; option.listItem.serverName.text = sid.ServerName ?? ""; option.listItem.gameMode.text = sid.GameType ?? ""; option.listItem.numPlayers.Format("{0}/{1}", (int)sid.CurrentPlayers, (int)sid.MaxPlayers); option.listItem.pingTime.Format("{0} ms", (int)option.sqpQuery.RTT); option.listItem.mapName.text = sid.Map ?? ""; } else { option.listItem.serverName.text = "--"; option.listItem.gameMode.text = "--"; option.listItem.numPlayers.text = "-/-"; option.listItem.pingTime.text = "--"; option.listItem.mapName.text = "--"; } }
void SetListItemSelected(ServerListItemData data, bool selected) { //data.listItem.GetComponent<Image>().color = new Color(1.0f, 1.0f, 1.0f, selected ? 0.3f : 0.1f); data.listItem.GetComponent <UIFrame>().enabled = selected; }