void Update()
        {
            if (manager == null)
            {
                manager = NetworkManager.singleton as NetworkManagerMMO;
            }

            // only update while visible (after character selection made it visible)
            if (panel.activeSelf)
            {
                // still in lobby?
                if (manager.state == NetworkState.Lobby)
                {
                    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
                        };
                        NetworkClient.Send(message);
                        Hide();
                    });

                    // cancel
                    cancelButton.onClick.SetListener(() =>
                    {
                        nameInput.text = "";
                        Hide();
                    });
                }
                else
                {
                    Hide();
                }
            }
            else
            {
                Hide();
            }
        }
Example #2
0
    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();
        }
    }
Example #3
0
    void Update()
    {
        // only update while visible (after character selection made it visible)
        if (panel.activeSelf)
        {
            // still in lobby?
            if (manager.state == NetworkState.Lobby)
            {
                Show();

                // copy player classes to class selection
                classDropdown.options = manager.playerClasses.Select(
                    p => new Dropdown.OptionData(p.name)
                    ).ToList();

                // only show GameMaster option for host connection
                // -> this helps to test and create GameMasters more easily
                // -> use the database field for dedicated servers!
                gameMasterToggle.gameObject.SetActive(NetworkServer.localClientActive);

                // create
                createButton.interactable = manager.IsAllowedCharacterName(nameInput.text);
                createButton.onClick.SetListener(() => {
                    CharacterCreateMsg message = new CharacterCreateMsg {
                        name       = nameInput.text,
                        classIndex = classDropdown.value,
                        gameMaster = gameMasterToggle.isOn
                    };
                    NetworkClient.Send(message);
                    Hide();
                });

                // cancel
                cancelButton.onClick.SetListener(() => {
                    nameInput.text = "";
                    Hide();
                });
            }
            else
            {
                Hide();
            }
        }
    }