using System; using System.Collections; using System.Linq; using FMODUnity; using NitroxClient.Unity.Helper; using NitroxModel.Serialization; using TMPro; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; namespace NitroxClient.MonoBehaviours.Gui.MainMenu.ServersList; public class MainMenuCreateServerPanel : MonoBehaviour, uGUI_INavigableIconGrid, uGUI_IButtonReceiver { public const string NAME = "MultiplayerCreateServer"; private const string DEFAULT_PORT = "11000"; private TMP_InputField serverNameInput, serverAddressInput, serverPortInput; private mGUI_Change_Legend_On_Select legendChange; private GameObject selectedItem; private GameObject[] selectableItems; public void Setup(GameObject savedGamesRef) { GameObject multiplayerButtonRef = savedGamesRef.RequireGameObject("Scroll View/Viewport/SavedGameAreaContent/NewGame"); GameObject generalTextRef = multiplayerButtonRef.GetComponentInChildren().gameObject; GameObject inputFieldRef = GameObject.Find("/Menu canvas/Panel/MainMenu/RightSide/Home/EmailBox/InputField"); GameObject inputFieldBlueprint = Instantiate(inputFieldRef, transform, false); inputFieldBlueprint.GetComponent().sizeDelta = new Vector2(300, 40); TMP_InputField inputFieldBlueprintInput = inputFieldBlueprint.GetComponent(); inputFieldBlueprintInput.characterValidation = TMP_InputField.CharacterValidation.None; inputFieldBlueprintInput.onSubmit = new TMP_InputField.SubmitEvent(); inputFieldBlueprintInput.onSubmit.AddListener(_ => { SelectItemInDirection(0, 1); }); GameObject serverName = Instantiate(inputFieldBlueprint, transform, false); serverName.transform.localPosition = new Vector3(-160, 300, 0); serverNameInput = serverName.GetComponent(); serverNameInput.placeholder.GetComponent().translationKey = Language.main.Get("Nitrox_AddServer_NamePlaceholder"); GameObject serverNameDesc = Instantiate(generalTextRef, serverName.transform, false); serverNameDesc.transform.localPosition = new Vector3(-200, 0, 0); serverNameDesc.GetComponent().text = Language.main.Get("Nitrox_AddServer_NameDescription"); GameObject serverAddress = Instantiate(inputFieldBlueprint, transform, false); serverAddress.transform.localPosition = new Vector3(-160, 225, 0); serverAddressInput = serverAddress.GetComponent(); serverAddressInput.placeholder.GetComponent().translationKey = Language.main.Get("Nitrox_AddServer_AddressPlaceholder"); GameObject serverAddressDesc = Instantiate(generalTextRef, serverAddress.transform, false); serverAddressDesc.transform.localPosition = new Vector3(-200, 0, 0); serverAddressDesc.GetComponent().text = Language.main.Get("Nitrox_AddServer_AddressDescription"); GameObject serverPort = Instantiate(inputFieldBlueprint, transform, false); serverPort.transform.localPosition = new Vector3(-160, 150, 0); serverPortInput = serverPort.GetComponent(); serverPortInput.characterValidation = TMP_InputField.CharacterValidation.Integer; serverPortInput.placeholder.GetComponent().translationKey = Language.main.Get("Nitrox_AddServer_PortPlaceholder"); serverPortInput.text = DEFAULT_PORT; GameObject serverPortDesc = Instantiate(generalTextRef, serverPort.transform, false); serverPortDesc.transform.localPosition = new Vector3(-200, 0, 0); serverPortDesc.GetComponent().text = Language.main.Get("Nitrox_AddServer_PortDescription"); GameObject confirmButton = Instantiate(multiplayerButtonRef, transform, false); confirmButton.transform.localPosition = new Vector3(-200, 90, 0); confirmButton.transform.GetChild(0).GetComponent().sizeDelta = new Vector2(200, 40); confirmButton.GetComponentInChildren().text = Language.main.Get("Nitrox_AddServer_Confirm"); Button confirmButtonButton = confirmButton.RequireTransform("NewGameButton").GetComponent