Example #1
0
 // -------------------------------------------------------------------------------
 // Show
 // -------------------------------------------------------------------------------
 public void Show()
 {
     cancelButton.onClick.SetListener(() => {
         NetworkManagerMMO.Quit();
     });
     panel.SetActive(true);
 }
    private void Update_UCE_LogoutTimer()
    {
        Player player = Player.localPlayer;

        if (!player)
        {
            return;
        }

        if (player.state == "IDLE")
        {
            _logoutTimer += cacheTimerInterval;
        }
        else
        {
            _logoutTimer = 0;
            UCE_UI_LogoutTimer_Popup.singleton.Hide();
        }

        if (_logoutTimer > logoutKickTime)
        {
            NetworkManagerMMO.Quit();
        }
        else if (_logoutTimer > logoutWarningTime)
        {
            UCE_UI_LogoutTimer_Popup.singleton.Show();
        }
    }
    void Update()
    {
        // show while in lobby and while not creating a character
        if (manager.state == NetworkState.Lobby && !uiCharacterCreation.IsVisible())
        {
            panel.SetActive(true);

            // characters available message received already?
            if (manager.charactersAvailableMsg != null)
            {
                CharactersAvailableMsg.CharacterPreview[] characters = manager.charactersAvailableMsg.characters;

                // start button: calls AddPLayer which calls OnServerAddPlayer
                // -> button sends a request to the server
                // -> if we press button again while request hasn't finished
                //    then we will get the error:
                //    'ClientScene::AddPlayer: playerControllerId of 0 already in use.'
                //    which will happen sometimes at low-fps or high-latency
                // -> internally ClientScene.AddPlayer adds to localPlayers
                //    immediately, so let's check that first
                startButton.gameObject.SetActive(manager.selection != -1);
                startButton.onClick.SetListener(() => {
                    // add player
                    CharacterSelectMsg message = new CharacterSelectMsg {
                        index = manager.selection
                    };
                    ClientScene.AddPlayer(manager.client.connection, message);

                    // clear character selection previews
                    manager.ClearPreviews();

                    // make sure we can't select twice and call AddPlayer twice
                    panel.SetActive(false);
                });

                // delete button
                deleteButton.gameObject.SetActive(manager.selection != -1);
                deleteButton.onClick.SetListener(() => {
                    CharacterDeleteMsg message = new CharacterDeleteMsg {
                        index = manager.selection
                    };
                    manager.client.Send(CharacterDeleteMsg.MsgId, message);
                });

                // create button
                createButton.interactable = characters.Length < manager.characterLimit;
                createButton.onClick.SetListener(() => {
                    panel.SetActive(false);
                    uiCharacterCreation.Show();
                });

                // quit button
                quitButton.onClick.SetListener(() => { NetworkManagerMMO.Quit(); });
            }
        }
        else
        {
            panel.SetActive(false);
        }
    }
        void Update()
        {
            if (manager == null)
            {
                manager = NetworkManager.singleton as NetworkManagerMMO;
            }

            // 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 = Application.platform != RuntimePlatform.WebGLPlayer && !manager.isNetworkActive && manager.IsAllowedAccountName(accountInput.text);
                hostButton.onClick.SetListener(() => { manager.StartHost(); });
                cancelButton.gameObject.SetActive(manager.IsConnecting());
                cancelButton.onClick.SetListener(() => { manager.StopClient(); });
                dedicatedButton.interactable = Application.platform != RuntimePlatform.WebGLPlayer && !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);
            }
        }
Example #5
0
    public void CmdShutdown()
    {
        // validate: only for GMs
        if (!player.isGameMaster)
        {
            return;
        }

        NetworkManagerMMO.Quit();
    }
Example #6
0
    void Update()
    {
        Player player = Utils.ClientLocalPlayer();

        panel.SetActive(player != null); // hide while not in the game world
        if (!player)
        {
            return;
        }

        inventoryButton.onClick.SetListener(() => {
            inventoryPanel.SetActive(!inventoryPanel.activeSelf);
        });

        equipmentButton.onClick.SetListener(() => {
            equipmentPanel.SetActive(!equipmentPanel.activeSelf);
        });

        skillsButton.onClick.SetListener(() => {
            skillsPanel.SetActive(!skillsPanel.activeSelf);
        });

        characterInfoButton.onClick.SetListener(() => {
            characterInfoPanel.SetActive(!characterInfoPanel.activeSelf);
        });

        questsButton.onClick.SetListener(() => {
            questsPanel.SetActive(!questsPanel.activeSelf);
        });

        craftingButton.onClick.SetListener(() => {
            craftingPanel.SetActive(!craftingPanel.activeSelf);
        });

        partyButton.onClick.SetListener(() => {
            partyPanel.SetActive(!partyPanel.activeSelf);
        });

        guildButton.onClick.SetListener(() => {
            guildPanel.SetActive(!guildPanel.activeSelf);
        });

        itemMallButton.onClick.SetListener(() => {
            itemMallPanel.SetActive(!itemMallPanel.activeSelf);
        });

        quitButton.onClick.SetListener(() => {
            NetworkManagerMMO.Quit();
        });

        // addon system hooks
        Utils.InvokeMany(typeof(UIShortcuts), this, "Update_");
    }
Example #7
0
    void Update()
    {
        Player player = Player.localPlayer;

        if (player != null)
        {
            panel.SetActive(true);

            inventoryButton.onClick.SetListener(() => {
                inventoryPanel.SetActive(!inventoryPanel.activeSelf);
            });

            equipmentButton.onClick.SetListener(() => {
                equipmentPanel.SetActive(!equipmentPanel.activeSelf);
            });

            skillsButton.onClick.SetListener(() => {
                skillsPanel.SetActive(!skillsPanel.activeSelf);
            });

            characterInfoButton.onClick.SetListener(() => {
                characterInfoPanel.SetActive(!characterInfoPanel.activeSelf);
            });

            questsButton.onClick.SetListener(() => {
                questsPanel.SetActive(!questsPanel.activeSelf);
            });

            craftingButton.onClick.SetListener(() => {
                craftingPanel.SetActive(!craftingPanel.activeSelf);
            });

            partyButton.onClick.SetListener(() => {
                partyPanel.SetActive(!partyPanel.activeSelf);
            });

            guildButton.onClick.SetListener(() => {
                guildPanel.SetActive(!guildPanel.activeSelf);
            });

            itemMallButton.onClick.SetListener(() => {
                itemMallPanel.SetActive(!itemMallPanel.activeSelf);
            });

            quitButton.onClick.SetListener(() => {
                NetworkManagerMMO.Quit();
            });
        }
        else
        {
            panel.SetActive(false);
        }
    }
Example #8
0
    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);
        }
    }
Example #9
0
    void Update()
    {
        Player player = Utils.ClientLocalPlayer();

        panel.SetActive(player != null); // hide while not in the game world
        if (!player)
        {
            return;
        }

        inventoryButton.onClick.SetListener(() => {
            inventoryPanel.SetActive(!inventoryPanel.activeSelf);
        });

        equipmentButton.onClick.SetListener(() => {
            equipmentPanel.SetActive(!equipmentPanel.activeSelf);
        });

        skillsButton.onClick.SetListener(() => {
            skillsPanel.SetActive(!skillsPanel.activeSelf);
        });

        characterInfoButton.onClick.SetListener(() => {
            characterInfoPanel.SetActive(!characterInfoPanel.activeSelf);
        });

        questsButton.onClick.SetListener(() => {
            questsPanel.SetActive(!questsPanel.activeSelf);
        });

        craftingButton.onClick.SetListener(() => {
            craftingPanel.SetActive(!craftingPanel.activeSelf);
        });

        quitButton.onClick.SetListener(() => {
            NetworkManagerMMO.Quit();
        });
    }
Example #10
0
    private void Update_UCE_LogoutTimer()
    {
        Player player = Player.localPlayer;

        if (!player)
        {
            return;
        }

        if (player.state == "IDLE")
        {
            _logoutTimer += cacheTimerInterval;
        }
        else
        {
            _logoutTimer = 0;

            if (UCE_UI_LogoutTimer_Popup.singleton)
            {
                UCE_UI_LogoutTimer_Popup.singleton.Hide();
            }
            else
            {
                Debug.LogWarning("You forgot to add UCE_UI_LogoutTimer_Popup to your canvas!");
            }
        }

        if (_logoutTimer > logoutKickTime)
        {
            NetworkManagerMMO.Quit();
        }
        else if (_logoutTimer > logoutWarningTime)
        {
            UCE_UI_LogoutTimer_Popup.singleton.Show();
        }
    }
Example #11
0
    void Update()
    {
        Player player = Player.localPlayer;

        if (player != null)
        {
            panel.SetActive(true);

            inventoryButton.onClick.SetListener(() => {
                inventoryPanel.SetActive(!inventoryPanel.activeSelf);
            });

            equipmentButton.onClick.SetListener(() => {
                equipmentPanel.SetActive(!equipmentPanel.activeSelf);
            });

            skillsButton.onClick.SetListener(() => {
                skillsPanel.SetActive(!skillsPanel.activeSelf);
            });

            characterInfoButton.onClick.SetListener(() => {
                characterInfoPanel.SetActive(!characterInfoPanel.activeSelf);
            });

            questsButton.onClick.SetListener(() => {
                questsPanel.SetActive(!questsPanel.activeSelf);
            });

            craftingButton.onClick.SetListener(() => {
                craftingPanel.SetActive(!craftingPanel.activeSelf);
            });

            partyButton.onClick.SetListener(() => {
                partyPanel.SetActive(!partyPanel.activeSelf);
            });

            guildButton.onClick.SetListener(() => {
                guildPanel.SetActive(!guildPanel.activeSelf);
            });

            itemMallButton.onClick.SetListener(() => {
                itemMallPanel.SetActive(!itemMallPanel.activeSelf);
            });

            gameMasterButton.gameObject.SetActive(player.isGameMaster);
            gameMasterButton.onClick.SetListener(() => {
                gameMasterPanel.SetActive(!gameMasterPanel.activeSelf);
            });

            // show "(5)Quit" if we can't log out during combat
            // -> CeilToInt so that 0.1 shows as '1' and not as '0'
            string quitPrefix = "";
            if (player.remainingLogoutTime > 0)
            {
                quitPrefix = "(" + Mathf.CeilToInt((float)player.remainingLogoutTime) + ") ";
            }
            quitButton.GetComponent <UIShowToolTip>().text = quitPrefix + "Quit";
            quitButton.interactable = player.remainingLogoutTime == 0;
            quitButton.onClick.SetListener(() => {
                NetworkManagerMMO.Quit();
            });
        }
        else
        {
            panel.SetActive(false);
        }
    }
    void Update()
    {
        // show while in lobby and while not creating a character
        if (manager.state == NetworkState.Lobby && !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
                    // -> button sends a request to the server
                    // -> if we press button again while request hasn't finished
                    //    then we will get the error:
                    //    'ClientScene::AddPlayer: playerControllerId of 0 already in use.'
                    //    which will happen sometimes at low-fps or high-latency
                    // -> internally ClientScene.AddPlayer adds to localPlayers
                    //    immediately, so let's check that first
                    slot.selectButton.interactable = ClientScene.localPlayer == null;
                    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, 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(); });
            }
        }
        else
        {
            panel.SetActive(false);
        }
    }
Example #13
0
    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);
        }
    }