Ejemplo n.º 1
0
 void OnDestroy()
 {
     if (lobbyDataChanger != null)
     {
         lobbyDataChanger.Destroy();
         lobbyDataChanger = null;
     }
 }
Ejemplo n.º 2
0
        public override void Close(Move moveTo, float timeToComplete = NumberConsts.UIAnimSpeed)
        {
            if (isChangingMage)
            {
                return;
            }

            base.Close(moveTo);

            foreach (var playerText in playerTexts.Values)
            {
                Destroy(playerText.gameObject);
            }

            chatTextsPool.DeactivateAll();
            playerTexts.Clear();

            Lobby.Leave();

            lobbyDataChanger.Destroy();
            lobbyDataChanger = null;
        }
Ejemplo n.º 3
0
        public override void Open(float timeToComplete = NumberConsts.UIAnimSpeed)
        {
            if (isChangingMage)
            {
                return;
            }

            SteamMatchmaking.OnChatMessage += (lobby, member, message) =>
                                              chatTextsPool.PopObject().GetComponent <TMP_InputField>().text = message;

            SteamMatchmaking.OnLobbyDataChanged += (lobby) =>
            {
                lobbyDataChanger.UpdateData();

                var networkManager = NetworkManager.singleton as ExtendedNetworkManager;

                if (Lobby.GetData(LobbyData.GameStarting) == LobbyData.Yes)
                {
                    if (!NetworkClient.isConnected && !NetworkServer.active)
                    {
                        networkManager.networkAddress = Lobby.Owner.Id.Value.ToString();
                        networkManager.onlineScene    = Lobby.GetData(LobbyData.Map);
                    }
                }

                if (Lobby.GetData(LobbyData.GameStarted) == LobbyData.Yes)
                {
                    if (!Lobby.Owner.IsMe)
                    {
                        GameStarted?.Invoke();
                        networkManager.StartClient();
                    }
                }
            };

            SteamMatchmaking.OnLobbyMemberJoined += (lobby, member) =>
            {
                lobby.SendChatString($"{member.Name} has joined.");
                AddPlayer(member);
            };

            SteamMatchmaking.OnLobbyMemberLeave += (lobby, member) =>
            {
                lobby.SendChatString($"{member.Name} has left");

                Destroy(playerTexts[member].gameObject);
                playerTexts.Remove(member);
            };


            lobbyDataChanger = new LobbyDataChanger(this, Lobby);
            LobbyName.text   = Lobby.GetData("name");

            UpdatePlayers();
            UpdateLobbyData();

            base.Open(timeToComplete);

            void UpdatePlayers()
            {
                var playerIDs = Lobby.Members;

                foreach (var id in playerIDs)
                {
                    AddPlayer(id);
                }
            }

            void UpdateLobbyData()
            {
                if (!Lobby.Owner.IsMe)
                {
                    StartServerButton.gameObject.SetActive(false);
                }
                else
                {
                    Lobby.SetData(LobbyData.GameStarted, LobbyData.No);
                    Lobby.SetData(LobbyData.GameStarting, LobbyData.No);
                    StartServerButton.gameObject.SetActive(true);
                }
            }
        }