void Update() { // only update while visible (after character selection made it visible) if (panel.activeSelf) { // still connected, not in world? if (manager.IsClientConnected() && !Utils.ClientLocalPlayer()) { Show(); // copy player classes to class selection classDropdown.options = manager.GetPlayerClasses().Select( p => new Dropdown.OptionData(p.name) ).ToList(); // create createButton.interactable = manager.IsAllowedCharacterName(nameInput.text); createButton.onClick.SetListener(() => { CharacterCreateMsg message = new CharacterCreateMsg { name = nameInput.text, classIndex = classDropdown.value }; manager.client.Send(CharacterCreateMsg.MsgId, message); Hide(); }); // cancel cancelButton.onClick.SetListener(() => { nameInput.text = ""; Hide(); }); // addon system hooks Utils.InvokeMany(typeof(UICharacterCreation), this, "Update_"); } else { Hide(); } } else { Hide(); } }
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); } }
void Update() { // show if connected, not in world, not in charcreation if (manager.IsClientConnected() && !Utils.ClientLocalPlayer() && !uiCharacterCreation.IsVisible()) { panel.SetActive(true); // characters available message received already? if (manager.charactersAvailableMsg != null) { // instantiate/destroy enough slots CharactersAvailableMsg.CharacterPreview[] characters = manager.charactersAvailableMsg.characters; UIUtils.BalancePrefabs(slotPrefab.gameObject, characters.Length, content); // refresh all List <Player> prefabs = manager.GetPlayerClasses(); for (int i = 0; i < characters.Length; ++i) { Player prefab = prefabs.Find(p => p.name == characters[i].className); UICharacterSelectionSlot slot = content.GetChild(i).GetComponent <UICharacterSelectionSlot>(); // name and icon slot.nameText.text = characters[i].name; slot.image.sprite = prefab.GetComponent <Player>().classIcon; // select button: calls AddPLayer which calls OnServerAddPlayer int icopy = i; // needed for lambdas, otherwise i is Count slot.selectButton.onClick.SetListener(() => { CharacterSelectMsg message = new CharacterSelectMsg { index = icopy }; ClientScene.AddPlayer(manager.client.connection, 0, message); // make sure we can't select twice and call AddPlayer twice panel.SetActive(false); }); // delete button: sends delete message slot.deleteButton.onClick.SetListener(() => { CharacterDeleteMsg message = new CharacterDeleteMsg { index = icopy }; manager.client.Send(CharacterDeleteMsg.MsgId, message); }); } createButton.interactable = characters.Length < manager.characterLimit; createButton.onClick.SetListener(() => { panel.SetActive(false); uiCharacterCreation.Show(); }); quitButton.onClick.SetListener(() => { NetworkManagerMMO.Quit(); }); } // addon system hooks Utils.InvokeMany(typeof(UICharacterSelection), this, "Update_"); } else { panel.SetActive(false); } }