public Game(Entities.Game game, Int32 currentUserId = 0) { this.GameID = game.GameID; this.Title = game.Title; this.IsPrivate = game.IsPrivate; this.PointToWin = game.PointToWin; this.MaxNumberOfPlayers = game.MaxNumberOfPlayers; this.DateCreated = game.DateCreated; this.PlayedLast = game.PlayedLast; this.GameDecks = game.GameDecks; this.PlayerCount = game.PlayerCount; this.Players = game.Players; this.SpectatorCount = game.SpectatorCount; this.MaxNumberOfSpectators = game.MaxNumberOfSpectators; this.IsPersistent = game.IsPersistent; this.OfficialDeckCount = game.OfficialDeckCount; this.AllowSpectators = game.MaxNumberOfSpectators > 0; this.IsFull = game.IsFull(); this.IsCurrentPlayer = game.IsCurrentPlayer(currentUserId); this.MaxSpectatorsReached = game.MaxSpectatorsReached(); this.IsCurrentSpectator = game.IsCurrentSpectator(currentUserId); }
private void AsSpectator(Entities.Game game, Entities.User user, String passphrase, Entities.JoinResponse response) { if (game.IsCurrentSpectator(user.UserId) == false) { if (_validatePassphrase.Execute(game, passphrase) == false) { response.Result |= Entities.Enums.Game.JoinResponseCode.BadPassphrase; } else if (game.MaxSpectatorsReached()) { response.Result |= Entities.Enums.Game.JoinResponseCode.SpectatorsFull; } else { Boolean successful = _joinGame.Execute(game, user, Entities.Enums.GamePlayerType.Spectator); if (successful == false) { response.Result |= Entities.Enums.Game.JoinResponseCode.SpectatorsFull; } } } else { response.Result |= Entities.Enums.Game.JoinResponseCode.SuccessfulAlreadyPlayer; } if (response.Result.HasFlag(Entities.Enums.Game.JoinResponseCode.BadPassphrase) == false && response.Result.HasFlag(Entities.Enums.Game.JoinResponseCode.FullGame) == false) { response.Game = game; } }