/// <summary> /// Update a game player's idle play count /// </summary> /// <param name="filter">The filter used to update a player's idle play count</param> public void Execute(Entities.Filters.GamePlayer.UpdateIdlePlayCount filter) { using (DbCommand cmd = _db.GetStoredProcCommand("GamePlayer_UpdateIdlePlayCount")) { _db.AddInParameter(cmd, "@GameID", DbType.Int32, filter.GameID); _db.AddInParameter(cmd, "@UserId", DbType.Int32, filter.UserId); _db.ExecuteNonQuery(cmd); } }
/// <summary> /// Play cards for all players that have yet to play /// </summary> /// <param name="gameID">The game ID</param> 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); } } } }
/// <summary> /// Update a game player's idle play count /// </summary> /// <param name="filter">The filter used to update a player's idle play count</param> public void Execute(Entities.Filters.GamePlayer.UpdateIdlePlayCount filter) { _update.Execute(filter); }
/// <summary> /// Play cards for all players that have yet to play /// </summary> /// <param name="gameID">The game ID</param> 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); } } } }