private IEnumerator CreateMatch(SharedGroupHandler sharedGroupHandler) { var isPlayerOne = ApplicationModel.CurrentPlayer.Entity.Id == ApplicationModel.CurrentMatch.playerOneId; ApplicationModel.CurrentSharedGroupData.sharedGroupId = $"{ApplicationModel.CurrentMatch.playerOneId}-{ApplicationModel.CurrentMatch.playerTwoId}"; Debug.Log(ApplicationModel.CurrentSharedGroupData.sharedGroupId); if (isPlayerOne) { yield return(sharedGroupHandler.Create(ApplicationModel.CurrentSharedGroupData.sharedGroupId)); } else { var matchHandler = new MatchHandler(ApplicationModel.CurrentPlayer, ApplicationModel.CurrentSharedGroupData.sharedGroupId); while (string.IsNullOrWhiteSpace(matchHandler.TicTacToeSharedGroupData?.match?.playerTwoId) && LookingForMatch) { Debug.Log("Joining to match"); yield return(matchHandler.JoinMatch()); yield return(new WaitForSeconds(Constants.RETRY_GET_LOBBY_INFO_AFTER_SECONDS)); } } }
private IEnumerator StartMatch(bool shouldCreateMatch) { var sharedGroupHandler = new SharedGroupHandler(ApplicationModel.CurrentPlayer); LookingForMatch = true; if (shouldCreateMatch) { yield return(StartCoroutine(CreateMatch(sharedGroupHandler))); } var gameCanStart = false; while (!gameCanStart && LookingForMatch && !string.IsNullOrWhiteSpace(ApplicationModel.CurrentSharedGroupData?.sharedGroupId)) { yield return(sharedGroupHandler.Get(ApplicationModel.CurrentSharedGroupData.sharedGroupId)); gameCanStart = !string.IsNullOrWhiteSpace(sharedGroupHandler.SharedGroupData?.match?.playerOneId) && !string.IsNullOrWhiteSpace(sharedGroupHandler.SharedGroupData?.match?.playerTwoId) && !string.IsNullOrWhiteSpace(sharedGroupHandler.SharedGroupData?.sharedGroupId); yield return(new WaitForSeconds(Constants.RETRY_GET_LOBBY_INFO_AFTER_SECONDS)); } if (gameCanStart) { ApplicationModel.CurrentSharedGroupData = sharedGroupHandler.SharedGroupData; SceneManager.LoadScene("Game"); } else { ApplicationModel.Reset(); UpdateGameStatus(Constants.COULD_NOT_START_GAME); } }
private IEnumerator CreateGroup(string groupName) { ApplicationModel.ConnectedToLobby = false; var sharedGroupHandler = new SharedGroupHandler(ApplicationModel.CurrentPlayer); yield return(StartCoroutine(sharedGroupHandler.Create(groupName))); if (!string.IsNullOrWhiteSpace(sharedGroupHandler.SharedGroupId)) { var matchLobbyHandler = new MatchLobbyHandler(ApplicationModel.CurrentPlayer); yield return(StartCoroutine(matchLobbyHandler.CreateMatchLobby(sharedGroupHandler.SharedGroupId))); ApplicationModel.CurrentSharedGroupData = matchLobbyHandler.TicTacToeSharedGroupData; ApplicationModel.ConnectedToLobby = ApplicationModel.CurrentMatch.playerOneId == ApplicationModel.CurrentPlayer.PlayFabId; } }
private IEnumerator CloseMatchLobby() { UpdateGameStatus(Constants.MATCH_LOBBY_CLOSING); IsLobbyCreated = false; if (ApplicationModel.CurrentMatchLobby != null) { yield return(StartCoroutine(DeleteMatchLobby(ApplicationModel.CurrentMatchLobby.matchLobbyId))); var sharedGroupHandler = new SharedGroupHandler(ApplicationModel.CurrentPlayer); yield return(sharedGroupHandler.Delete(ApplicationModel.CurrentSharedGroupData.sharedGroupId)); } ApplicationModel.CurrentMatchLobby = null; ApplicationModel.ConnectedToLobby = false; MatchLobbyText.text = string.Empty; QuickMatchBtn.gameObject.SetActive(true); MatchLobbyNameInput.gameObject.SetActive(true); SearchMatchLobbyBtn.gameObject.SetActive(true); ManageMatchLobbyBtn.GetComponentInChildren <Text>().text = Constants.BTN_CREATE_MATCH_LOBBY; }
void Start() { // TODO: When the appropriate place has been developed move this login process there if (ApplicationModel.CurrentPlayer == null) { var loginHandler = new LoginHandler(); loginHandler.Login(OnPlayerLogin, OnLoginFail); } if (!string.IsNullOrWhiteSpace(ApplicationModel.CurrentSharedGroupData?.sharedGroupId)) { var sharedGroupHandler = new SharedGroupHandler(ApplicationModel.CurrentPlayer); StartCoroutine(sharedGroupHandler.Delete(ApplicationModel.CurrentSharedGroupData.sharedGroupId)); } ApplicationModel.Reset(); LookingForMatch = false; ManageMatchLobbyBtn.onClick.AddListener(ManageMatchLobbyBtnOnClick); ExitBtn.onClick.AddListener(OnClickExitBtn); QuickMatchBtn.onClick.AddListener(OnClickQuickMatch); SearchMatchLobbyBtn.onClick.AddListener(OnMatchLobbySearchClick); }