示例#1
0
        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));
                }
            }
        }
示例#2
0
        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);
            }
        }
示例#3
0
        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;
            }
        }
示例#4
0
        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;
        }
示例#5
0
        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);
        }