private async Task changeMatchType(MatchType type)
        {
            Debug.Assert(Room != null);

            switch (type)
            {
            case MatchType.HeadToHead:
                await((IMultiplayerClient)this).MatchRoomStateChanged(null).ConfigureAwait(false);

                foreach (var user in Room.Users)
                {
                    await((IMultiplayerClient)this).MatchUserStateChanged(user.UserID, null).ConfigureAwait(false);
                }
                break;

            case MatchType.TeamVersus:
                await((IMultiplayerClient)this).MatchRoomStateChanged(TeamVersusRoomState.CreateDefault()).ConfigureAwait(false);

                foreach (var user in Room.Users)
                {
                    await((IMultiplayerClient)this).MatchUserStateChanged(user.UserID, new TeamVersusUserState()).ConfigureAwait(false);
                }
                break;
            }
        }
Exemple #2
0
        public override async Task SendMatchRequest(MatchUserRequest request)
        {
            Debug.Assert(Room != null);
            Debug.Assert(LocalUser != null);

            switch (request)
            {
            case StartMatchCountdownRequest matchCountdownRequest:
                startCountdown(new MatchStartCountdown {
                    TimeRemaining = matchCountdownRequest.Duration
                }, StartMatch);
                break;

            case StopCountdownRequest _:
                stopCountdown();
                break;

            case ChangeTeamRequest changeTeam:

                TeamVersusRoomState roomState = (TeamVersusRoomState)Room.MatchState !;
                TeamVersusUserState userState = (TeamVersusUserState)LocalUser.MatchState !;

                var targetTeam = roomState.Teams.FirstOrDefault(t => t.ID == changeTeam.TeamID);

                if (targetTeam != null)
                {
                    userState.TeamID = targetTeam.ID;

                    await((IMultiplayerClient)this).MatchUserStateChanged(LocalUser.UserID, userState).ConfigureAwait(false);
                }

                break;
            }
        }
        public override async Task SendMatchRequest(MatchUserRequest request)
        {
            Debug.Assert(Room != null);
            Debug.Assert(LocalUser != null);

            switch (request)
            {
            case ChangeTeamRequest changeTeam:

                TeamVersusRoomState roomState = (TeamVersusRoomState)Room.MatchState !;
                TeamVersusUserState userState = (TeamVersusUserState)LocalUser.MatchState !;

                var targetTeam = roomState.Teams.FirstOrDefault(t => t.ID == changeTeam.TeamID);

                if (targetTeam != null)
                {
                    userState.TeamID = targetTeam.ID;

                    await((IMultiplayerClient)this).MatchUserStateChanged(LocalUser.UserID, userState).ConfigureAwait(false);
                }

                break;
            }
        }