Example #1
0
        /// <summary>
        /// Add a server to the list of servers
        /// </summary>
        /// <param name="address"></param>
        /// <param name="port"></param>
        private void AddServer(string address, ushort port = NetWorker.DEFAULT_PORT, bool isLocal = true)
        {
            var hostAndPort = $"{address}:{port}";

            for (int i = 0; i < serverList.Count; ++i)
            {
                var server = serverList[i];
                if (server.Hostname == hostAndPort)
                {
                    // Already have that server listed nothing else to do
                    return;
                }
            }

            var serverListItemData = new ServerListItemData {
                ListItem = GameObject.Instantiate <ServerListEntry>(serverListEntryTemplate, servers.content),
                Hostname = hostAndPort,
                IsLocal  = isLocal
            };

            serverListItemData.ListItem.gameObject.SetActive(true);

            var endpoint = HostResolver.Resolve(address, Settings.SQPPort);

            serverListItemData.SqpQuery = sqpClient.GetQuery(endpoint);

            UpdateItem(serverListItemData);
            serverListItemData.NextUpdate = Time.time + 5.0f + UnityEngine.Random.Range(0.0f, 1.0f);

            serverList.Add(serverListItemData);
            SetListItemSelected(serverListItemData, false);

            RepositionItems();
        }
Example #2
0
        /// <summary>
        /// Update a specific server's details on the server list.
        /// </summary>
        /// <param name="option">The server display information to update</param>
        private void UpdateItem(ServerListItemData option)
        {
            option.ListItem.hostName.text = option.Hostname;

            if (option.SqpQuery.ValidResult)
            {
                var sid = option.SqpQuery.ServerInfo.ServerInfoData;
                option.ListItem.serverName.text  = $"{sid.ServerName} ({option.LocalOrGlobal})";
                option.ListItem.playerCount.text = $"{sid.CurrentPlayers.ToString()}/{sid.MaxPlayers.ToString()}";
                option.ListItem.pingTime.text    = $"{option.SqpQuery.RTT.ToString()} ms";
            }
            else
            {
                option.ListItem.serverName.text  = "Server offline";
                option.ListItem.playerCount.text = "-/-";
                option.ListItem.pingTime.text    = "--";
            }
        }
Example #3
0
 /// <summary>
 /// Set the border around the selected server entry
 /// </summary>
 /// <param name="data"></param>
 /// <param name="selected"></param>
 private void SetListItemSelected(ServerListItemData data, bool selected)
 {
     data.ListItem.GetComponent <Image>().enabled = selected;
 }
Example #4
0
 private void RemoveServer(ServerListItemData item)
 {
     Destroy(item.ListItem.gameObject);
     serverList.Remove(item);
     RepositionItems();
 }