Search Unity

Question Start Event For Client Lobby after Lobby State change from Host user

Discussion in 'Lobby' started by First_Space_man, Mar 11, 2023.

  1. First_Space_man

    First_Space_man

    Joined:
    Apr 26, 2020
    Posts:
    9
    Hello! I want show lobby window and countdown after all players push ready button. So I receive info in event callbacks when user push ready. But I want that only host check
    Code (CSharp):
    1. private void OnPlayersReady(int readyCount)
    2. {
    3.     if (readyCount == _localLobby.MaxPlayerCount.Value && _localLobby.LocalLobbyState.Value != LobbyState.CountDown)
    4.     {
    5.         _localLobby.LocalLobbyState.Value = LobbyState.CountDown;
    6.         SendLocalLobbyData();
    7.     }
    8.     else if (_localLobby.LocalLobbyState.Value == LobbyState.CountDown)
    9.     {
    10.         _localLobby.LocalLobbyState.Value = LobbyState.Lobby;
    11.         SendLocalLobbyData();
    12.     }
    13. }
    14.  
    15. private async void SendLocalLobbyData()
    16. {
    17.     await _lobbyManager.UpdateLobbyDataAsync(LobbyConverters.LocalToRemoteLobbyData(_localLobby));
    18. }
    So after users join to lobby they bind to lobby updates, code below
    Code (CSharp):
    1. private async Task BindLobby()
    2.     {
    3.         await _lobbyManager.BindLocalLobbyToRemote(_localLobby.LobbyID.Value, _localLobby);
    4.         _localLobby.LocalLobbyState.onChanged += OnLobbyStateChanged;
    5.     }
    And we have
    Code (CSharp):
    1. private void OnLobbyStateChanged(LobbyState state)
    2.     {
    3.         switch (state)
    4.         {
    5.             case LobbyState.Lobby:
    6.                 CancelCountDown();
    7.                 break;
    8.             case LobbyState.CountDown:
    9.                 SetGameState(GameState.Lobby);
    10.                 BeginCountDown(); // here
    11.                 break;
    12.             case LobbyState.InGame:
    13.                 _localUser.UserStatus.Value = PlayerStatus.InGame;
    14.                 break;
    15.         }
    16.     }
    I don't understand why my clients doesn't see changed lobby state and BeginCountDown() from last code sample don't call. Can anyone help me?
     
  2. UnityJacobSL

    UnityJacobSL

    Unity Technologies

    Joined:
    Nov 15, 2019
    Posts:
    4
    Can your clients see each others Ready State as normal? Are there any other lobby states that work?

    I'm looking into this, but more information would be helpful :D
     
    First_Space_man likes this.