public void Execute(int gameID)
{
Entities.Filters.Game.Select gameFilter = new Entities.Filters.Game.Select();
gameFilter.DataToSelect = Entities.Enums.Game.Select.GamePlayerCards | Entities.Enums.Game.Select.Rounds;
gameFilter.GameID = gameID;
Entities.Game game = _selectGame.Execute(gameFilter);
Entities.GameRound round = game.CurrentRound();
List<Entities.GamePlayer> players = game.Players.Where(x => !round.HasAnswer(x.User.UserId) &&
game.IsCurrentPlayer(x.User.UserId) &&
!game.IsCurrentCommander(x.User.UserId))
.Select(x => x).ToList();
Int32 selectCount = 1 + (Int32)round.Question.Instructions;
Random rdm = new Random();
List<Int32> cardIDs = null;
Entities.ActionResponses.PlayCard response = null;
foreach (Entities.GamePlayer player in players)
{
cardIDs = player.Hand.OrderBy(x => rdm.Next()).Take(selectCount).Select(x => x.CardID).ToList();
response = _playCard.Execute(cardIDs, gameID, player.User.UserId, true);
if (response.AutoPlayedSuccess)
{
if (player.IdlePlayCount + 1 == 3)
{
//Player is forced to leave game now
UnityConfig.Container.Resolve<AppServices.Game.Base.ILeave>().Execute(gameID, player.User, Entities.Enums.GamePlayerType.Player, true);
}
else
{
Entities.Filters.GamePlayer.UpdateIdlePlayCount idlePlayCount =
new Entities.Filters.GamePlayer.UpdateIdlePlayCount
{
GameID = gameID,
UserId = player.User.UserId
};
_updateGamePlayer.Execute(idlePlayCount);
}
}
}
}