Exemple #1
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;
            }
        }
Exemple #2
0
        public override Task SendMatchRequest(MatchUserRequest request)
        {
            if (!IsConnected.Value)
            {
                return(Task.CompletedTask);
            }

            return(connection.InvokeAsync(nameof(IMultiplayerServer.SendMatchRequest), request));
        }
        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;
            }
        }
Exemple #4
0
 public abstract Task SendMatchRequest(MatchUserRequest request);