//вызывается при выходе из комнаты public void OnLeftRoom() { ManagerUI.ShowMsg("Exit game room"); //убираем панель загрузки (если она была) InitMultiplayerEvent?.Invoke(false); //отсылаем событие об отключении от комнаты DisconectEvent?.Invoke(); }
//подключение к комнате public void OnRoomConnected(bool success) { if (success) { LevelsResetValue(); //сбрасываем индес запускаемого уровня на начальный PreparationMultiplayerGame(); } else { ManagerUI.ShowMsg("Connection to the room failed"); MultiplayerGameExit(); InitMultiplayerEvent?.Invoke(false); //отключаем прогрессбар } }
//проверяет все ли участники подтвердили участие в игре void CheckConfirmationParticipants() { if (isPlayerConfirmGame && isOpponentConfirmGame) { SetState(MultiplayerState.READY); //настраиваем параметры перед игрой ResetMultiplayerSettings(); //событие, что инициализация мультиплеера завершилась => (false) InitMultiplayerEvent?.Invoke(false); //ссобытие, что всё подтвердили участие AllParticipantsConfirmedEvent?.Invoke(); } }
//выход из игры по мультиплееру public void MultiplayerGameExit() { //если ира не запущена - выходим if (State == MultiplayerState.PREPARATION) { return; } //событие, что инициализация мультиплеера завершилась //на случай, если подключение не удалось InitMultiplayerEvent?.Invoke(false); SetState(MultiplayerState.PREPARATION); //если запущенно в режиме теста в редакторе, то вызываем метод выхода напрямую if (GameManager.Config.isTestMP) { OnLeftRoom(); } else { PlayGamesPlatform.Instance.RealTime.LeaveRoom(); } }