void OnDestroy() { if (lobbyDataChanger != null) { lobbyDataChanger.Destroy(); lobbyDataChanger = null; } }
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; }
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); } } }