void Update() { // only show while offline // AND while in handshake since we don't want to show nothing while // trying to login and waiting for the server's response if (manager.state == NetworkState.Offline || manager.state == NetworkState.Handshake) { panel.SetActive(true); // status if (manager.IsConnecting()) { statusText.text = "Connecting..."; } else if (manager.state == NetworkState.Handshake) { statusText.text = "Handshake..."; } else { statusText.text = ""; } // buttons. interactable while network is not active // (using IsConnecting is slightly delayed and would allow multiple clicks) registerButton.interactable = !manager.isNetworkActive; registerButton.onClick.SetListener(() => { uiPopup.Show(registerMessage); }); loginButton.interactable = !manager.isNetworkActive && manager.IsAllowedAccountName(accountInput.text); loginButton.onClick.SetListener(() => { manager.StartClient(); }); hostButton.interactable = !manager.isNetworkActive && manager.IsAllowedAccountName(accountInput.text); hostButton.onClick.SetListener(() => { manager.StartHost(); }); cancelButton.gameObject.SetActive(manager.IsConnecting()); cancelButton.onClick.SetListener(() => { manager.StopClient(); }); dedicatedButton.interactable = !manager.isNetworkActive; dedicatedButton.onClick.SetListener(() => { manager.StartServer(); }); quitButton.onClick.SetListener(() => { NetworkManagerMMO.Quit(); }); // inputs manager.loginAccount = accountInput.text; manager.loginPassword = passwordInput.text; // copy servers to dropdown; copy selected one to networkmanager ip/port. serverDropdown.interactable = !manager.isNetworkActive; serverDropdown.options = manager.serverList.Select( sv => new Dropdown.OptionData(sv.name) ).ToList(); manager.networkAddress = manager.serverList[serverDropdown.value].ip; } else { panel.SetActive(false); } }
void Update() { // only show while offline or trying to connect if (!manager.IsClientConnected()) { panel.SetActive(true); // status statusText.text = manager.IsConnecting() ? "Connecting..." : ""; // buttons. interactable while network is not active // (using IsConnecting is slightly delayed and would allow multiple clicks) registerButton.onClick.SetListener(() => { uiPopup.Show(registerMessage); }); loginButton.interactable = !manager.isNetworkActive && manager.IsAllowedAccountName(accountInput.text); loginButton.onClick.SetListener(() => { manager.StartClient(); }); hostButton.interactable = !manager.isNetworkActive && manager.IsAllowedAccountName(accountInput.text); hostButton.onClick.SetListener(() => { manager.StartHost(); }); cancelButton.gameObject.SetActive(manager.IsConnecting()); cancelButton.onClick.SetListener(() => { manager.StopClient(); }); dedicatedButton.interactable = !manager.isNetworkActive; dedicatedButton.onClick.SetListener(() => { manager.StartServer(); }); quitButton.onClick.SetListener(() => { NetworkManagerMMO.Quit(); }); // inputs manager.loginAccount = accountInput.text; manager.loginPassword = passwordInput.text; // copy servers to dropdown; copy selected one to networkmanager ip/port. serverDropdown.interactable = !manager.isNetworkActive; serverDropdown.options = manager.serverList.Select( sv => new Dropdown.OptionData(sv.name) ).ToList(); manager.networkAddress = manager.serverList[serverDropdown.value].ip; // addon system hooks Utils.InvokeMany(typeof(UILogin), this, "Update_"); } else { panel.SetActive(false); } }