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; } }
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; } }