using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; using NitroxClient.GameLogic.Settings; using NitroxClient.MonoBehaviours.Gui.MainMenu.ServerJoin; using NitroxClient.Unity.Helper; using NitroxModel.Serialization; using TMPro; using UnityEngine; using UnityEngine.UI; namespace NitroxClient.MonoBehaviours.Gui.MainMenu.ServersList; public class MainMenuServerButton : MonoBehaviour { private static MainMenuLoadButton loadButtonRef; private static LegendButtonData[] confirmButtonLegendData; private static GameObject deleteButtonRef; private CanvasGroup loadCg; private CanvasGroup deleteCg; private Button cancelDeleteButton; private string joinIp; private int joinPort; private string joinServerName; public static void Setup(MainMenuLoadButton _loadButtonRef) { loadButtonRef = _loadButtonRef; confirmButtonLegendData = _loadButtonRef.GetComponent().legendButtonConfiguration; deleteButtonRef = _loadButtonRef.deleteButton; } public void Init(string serverName, string ip, int port, bool isReadOnly) { joinIp = ip; joinPort = port; joinServerName = serverName; Transform loadTransform = this.RequireTransform("Load"); loadCg = loadTransform.gameObject.AddComponent(); Transform newGameButtonTransform = loadTransform.RequireTransform("NewGameButton"); TextMeshProUGUI tmp = newGameButtonTransform.RequireTransform("Text").GetComponent(); Destroy(tmp.GetComponent()); StringBuilder buttonText = new(Language.main.Get("Nitrox_ConnectTo")); buttonText.Append(" ").Append(serverName).AppendLine(""); if (NitroxPrefs.HideIp.Value) { buttonText.AppendLine("***.***.***.***:*****"); } else { buttonText.Append(ip[^Math.Min(ip.Length, 25)..]).Append(':').Append(port); } tmp.text = buttonText.ToString(); Button multiplayerJoinButton = newGameButtonTransform.GetComponent