private void AsPlayer(Entities.Game game, Entities.User user, String passphrase, Entities.JoinResponse response, Boolean wasWaiting)
{
if (game.IsCurrentPlayer(user.UserId) == false)
{
if (_validatePassphrase.Execute(game, passphrase) == false)
{
response.Result |= Entities.Enums.Game.JoinResponseCode.BadPassphrase;
}
else if (game.IsFull())
{
response.Result |= Entities.Enums.Game.JoinResponseCode.FullGame;
}
else
{
Boolean successful = _joinGame.Execute(game, user, Entities.Enums.GamePlayerType.Player);
if (successful == false)
{
response.Result |= Entities.Enums.Game.JoinResponseCode.FullGame;
}
else
{
if (wasWaiting && !game.IsWaiting())
{
Entities.User newCommander = game.NextCommander(null);
if (newCommander != null)
{
if (_startRound.Execute(game, game.NextCommander(null)) == true)
{
response.Result |= Entities.Enums.Game.JoinResponseCode.NewRoundStart;
}
}
else
{
response.Result |= Entities.Enums.Game.JoinResponseCode.WaitingOnWinnerSelection;
}
}
}
}
}
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;
}
}