/// <summary> /// Alert the users a vote to kick has completed /// </summary> /// <param name="gameID">The game ID</param> /// <param name="kickedUser">The user that was being voted on</param> /// <param name="votesToKick">The number of votes to kick</param> /// <param name="votesNotToKick">The number votes not to kick</param> /// <param name="isKicked">Was the user kicked based on the votes</param> public void VoteComplete(Int32 gameID, Entities.User kickedUser, Int32 votesToKick, Int32 votesNotToKick, Boolean isKicked) { Entities.Filters.ActiveConnection.SelectAll filter = new Entities.Filters.ActiveConnection.SelectAll(); filter.GroupName = String.Format("Game_{0}", gameID); List <Entities.ActiveConnection> connections = _selectActiveConnection.Execute(filter); foreach (Entities.ActiveConnection connection in connections) { String message; String title = "Kick Player Results"; String userSpan = String.Format("<span class='{0}'>{1}</span>", "loggedIn", String.Format("<img src='{0}' /> {1}", kickedUser.PictureUrl, kickedUser.DisplayName)); if (isKicked) { message = "{0} was kicked. <br /> Votes To Kick: {1} <br/> Votes To Stay: {2}"; } else { message = "{0} was not kicked. <br /> Votes To Kick: {1} <br/> Votes To Stay: {2}"; } _hub.Clients.Client(connection.ActiveConnectionID) .VoteToKickResults(String.Format(message, userSpan, votesToKick, votesNotToKick), title, (isKicked && kickedUser.UserId == connection.User_UserId), kickedUser.UserId); } }
private List <Entities.ActiveConnection> GetConnections(Int32 gameID, List <Int32> exclude) { Entities.Filters.ActiveConnection.SelectAll filter = new Entities.Filters.ActiveConnection.SelectAll(); filter.GroupName = String.Format("Game_{0}", gameID); filter.ExcludeUsers = exclude; List <Entities.ActiveConnection> connections = _selectActiveConnection.Execute(filter); return(connections); }
/// <summary> /// Update the game view when the commander has selected the winner of the round /// </summary> /// <param name="game">The game to update</param> /// <param name="round">The game's current round</param> /// <param name="sendToSpectators">Should this update go to spectators</param> public void SendWinnerSelected(Entities.Game game, Entities.GameRound round, Boolean sendToSpectators) { Entities.Filters.ActiveConnection.SelectAll filter = new Entities.Filters.ActiveConnection.SelectAll(); filter.GroupName = String.Format("Game_{0}", game.GameID); List <Entities.ActiveConnection> connections = _selectActiveConnection.Execute(filter); SendWinnerSelected(game, round, connections.Where(x => x.ConnectionType == Entities.Enums.ConnectionType.GamePlayer), game.Players); if (sendToSpectators) { SendWinnerSelected(game, round, connections.Where(x => x.ConnectionType == Entities.Enums.ConnectionType.GameSpectator), game.Spectators); } }
private List <Entities.ActiveConnection> GetConnections(String groupName, Entities.Enums.ConnectionType connectionType) { AS.ActiveConnection.Base.ISelect _selectConnections = BusinessLogic.UnityConfig.Container.Resolve <AS.ActiveConnection.Base.ISelect>(); Entities.Filters.ActiveConnection.SelectAll filter = new Entities.Filters.ActiveConnection.SelectAll(); if (groupName != GLOBAL) { filter.GroupName = groupName; } filter.ConnectionType = connectionType; List <Entities.ActiveConnection> connections = _selectConnections.Execute(filter).GroupBy(con => con.User_UserId) .Select(con2 => con2.First()) .ToList(); return(connections); }
/// <summary> /// Alert the users that the round has been lost because the commander has left /// </summary> /// <param name="game">The game</param> /// <param name="commanderName">The commander's name</param> public void CommanderLeft(Entities.Game game, String commanderName) { Entities.Filters.ActiveConnection.SelectAll filter = new Entities.Filters.ActiveConnection.SelectAll(); filter.GroupName = String.Format("Game_{0}", game.GameID); List <Entities.ActiveConnection> connections = _selectActiveConnection.Execute(filter); Entities.GamePlayer sendToPlayer = null; foreach (Entities.ActiveConnection connection in connections) { sendToPlayer = game.Players.FirstOrDefault(player => player.User.UserId == connection.User_UserId); if (sendToPlayer != null) { Entities.Models.Game.Board.GameBoard model = GetGameBoardModal(connection, game); _hub.Clients.Client(connection.ActiveConnectionID) .CommanderLeft(model, GetGameLobbyViewModel(connection, game), commanderName, game.IsWaiting()); } } }
/// <summary> /// Alert the users that the round has been lost because the commander has left /// </summary> /// <param name="game">The game</param> /// <param name="commanderName">The commander's name</param> public void CommanderLeft(Entities.Game game, String commanderName) { Entities.Filters.ActiveConnection.SelectAll filter = new Entities.Filters.ActiveConnection.SelectAll(); filter.GroupName = String.Format("Game_{0}", game.GameID); List<Entities.ActiveConnection> connections = _selectActiveConnection.Execute(filter); Entities.GamePlayer sendToPlayer = null; foreach (Entities.ActiveConnection connection in connections) { sendToPlayer = game.Players.FirstOrDefault(player => player.User.UserId == connection.User_UserId); if (sendToPlayer != null) { Entities.Models.Game.Board.GameBoard model = GetGameBoardModal(connection, game); _hub.Clients.Client(connection.ActiveConnectionID) .CommanderLeft(model, GetGameLobbyViewModel(connection, game), commanderName, game.IsWaiting()); } } }
private Entities.ActiveConnection Execute(Entities.Game game, Entities.Enums.Hubs.Actions action, Boolean sendToSpectators, Int32?excludedPlayerId = null) { Entities.Filters.ActiveConnection.SelectAll filter = new Entities.Filters.ActiveConnection.SelectAll(); filter.GroupName = String.Format("Game_{0}", game.GameID); List <Entities.ActiveConnection> connections = _selectActiveConnection.Execute(filter); Entities.ActiveConnection excludedConnection = null; if (excludedPlayerId.HasValue) { excludedConnection = connections.DefaultIfEmpty(null).FirstOrDefault(x => x.User_UserId == excludedPlayerId); } ExecuteAction(game, action, connections.Where(x => x.ConnectionType == Entities.Enums.ConnectionType.GamePlayer), game.Players); if (sendToSpectators) { ExecuteAction(game, action, connections.Where(x => x.ConnectionType == Entities.Enums.ConnectionType.GameSpectator), game.Spectators); } return(excludedConnection); }
/// <summary> /// Return all active connections that match the filter /// </summary> /// <param name="filter">The filter used to select active connections</param> /// <returns>A list of active connections</returns> public List <Entities.ActiveConnection> Execute(Entities.Filters.ActiveConnection.SelectAll filter) { List <Entities.ActiveConnection> activeConnections = new List <Entities.ActiveConnection>(); using (DbCommand cmd = _db.GetStoredProcCommand("ActiveConnection_Select")) { if (!String.IsNullOrWhiteSpace(filter.GroupName)) { _db.AddInParameter(cmd, "@GroupName", DbType.String, filter.GroupName); } if (filter.ExcludeUsers != null && filter.ExcludeUsers.Count > 0) { _db.AddInParameter(cmd, "@ExcludeUserIds", DbType.Xml, filter.ExcludeUsers.ConvertCollectionToXML()); } if (filter.ConnectionType > 0) { _db.AddInParameter(cmd, "@ConnectionType", DbType.Int32, filter.ConnectionType); } using (IDataReader idr = _db.ExecuteReader(cmd)) { Entities.ActiveConnection connection = null; while (idr.Read()) { connection = new Entities.ActiveConnection(idr); activeConnections.Add(connection); } } } return(activeConnections); }
/// <summary> /// Return all active connections that match the filter /// </summary> /// <param name="filter">The filter used to select active connections</param> /// <returns>A list of active connections</returns> public List <Entities.ActiveConnection> Execute(Entities.Filters.ActiveConnection.SelectAll filter) { return(_selectActiveConnection.Execute(filter)); }
private List<Entities.ActiveConnection> GetConnections(String groupName, Entities.Enums.ConnectionType connectionType) { AS.ActiveConnection.Base.ISelect _selectConnections = BusinessLogic.UnityConfig.Container.Resolve<AS.ActiveConnection.Base.ISelect>(); Entities.Filters.ActiveConnection.SelectAll filter = new Entities.Filters.ActiveConnection.SelectAll(); if (groupName != GLOBAL) { filter.GroupName = groupName; } filter.ConnectionType = connectionType; List<Entities.ActiveConnection> connections = _selectConnections.Execute(filter).GroupBy(con => con.User_UserId) .Select(con2 => con2.First()) .ToList(); return connections; }
private List<Entities.ActiveConnection> GetConnections(Int32 gameID, List<Int32> exclude) { Entities.Filters.ActiveConnection.SelectAll filter = new Entities.Filters.ActiveConnection.SelectAll(); filter.GroupName = String.Format("Game_{0}", gameID); filter.ExcludeUsers = exclude; List<Entities.ActiveConnection> connections = _selectActiveConnection.Execute(filter); return connections; }
private Entities.ActiveConnection Execute(Entities.Game game, Entities.Enums.Hubs.Actions action, Boolean sendToSpectators, Int32? excludedPlayerId = null) { Entities.Filters.ActiveConnection.SelectAll filter = new Entities.Filters.ActiveConnection.SelectAll(); filter.GroupName = String.Format("Game_{0}", game.GameID); List<Entities.ActiveConnection> connections = _selectActiveConnection.Execute(filter); Entities.ActiveConnection excludedConnection = null; if(excludedPlayerId.HasValue) { excludedConnection = connections.DefaultIfEmpty(null).FirstOrDefault(x => x.User_UserId == excludedPlayerId); } ExecuteAction(game, action, connections.Where(x => x.ConnectionType == Entities.Enums.ConnectionType.GamePlayer), game.Players); if (sendToSpectators) { ExecuteAction(game, action, connections.Where(x => x.ConnectionType == Entities.Enums.ConnectionType.GameSpectator), game.Spectators); } return excludedConnection; }
/// <summary> /// Alert the users a vote to kick has completed /// </summary> /// <param name="gameID">The game ID</param> /// <param name="kickedUser">The user that was being voted on</param> /// <param name="votesToKick">The number of votes to kick</param> /// <param name="votesNotToKick">The number votes not to kick</param> /// <param name="isKicked">Was the user kicked based on the votes</param> public void VoteComplete(Int32 gameID, Entities.User kickedUser, Int32 votesToKick, Int32 votesNotToKick, Boolean isKicked) { Entities.Filters.ActiveConnection.SelectAll filter = new Entities.Filters.ActiveConnection.SelectAll(); filter.GroupName = String.Format("Game_{0}", gameID); List<Entities.ActiveConnection> connections = _selectActiveConnection.Execute(filter); foreach (Entities.ActiveConnection connection in connections) { String message; String title = "Kick Player Results"; String userSpan = String.Format("<span class='{0}'>{1}</span>", "loggedIn", String.Format("<img src='{0}' /> {1}", kickedUser.PictureUrl, kickedUser.DisplayName)); if (isKicked) { message = "{0} was kicked. <br /> Votes To Kick: {1} <br/> Votes To Stay: {2}"; } else { message = "{0} was not kicked. <br /> Votes To Kick: {1} <br/> Votes To Stay: {2}"; } _hub.Clients.Client(connection.ActiveConnectionID) .VoteToKickResults(String.Format(message, userSpan, votesToKick, votesNotToKick), title, (isKicked && kickedUser.UserId == connection.User_UserId), kickedUser.UserId); } }
/// <summary> /// Update the game view when the commander has selected the winner of the round /// </summary> /// <param name="game">The game to update</param> /// <param name="round">The game's current round</param> /// <param name="sendToSpectators">Should this update go to spectators</param> public void SendWinnerSelected(Entities.Game game, Entities.GameRound round, Boolean sendToSpectators) { Entities.Filters.ActiveConnection.SelectAll filter = new Entities.Filters.ActiveConnection.SelectAll(); filter.GroupName = String.Format("Game_{0}", game.GameID); List<Entities.ActiveConnection> connections = _selectActiveConnection.Execute(filter); SendWinnerSelected(game, round, connections.Where(x => x.ConnectionType == Entities.Enums.ConnectionType.GamePlayer), game.Players); if(sendToSpectators) { SendWinnerSelected(game, round, connections.Where(x => x.ConnectionType == Entities.Enums.ConnectionType.GameSpectator), game.Spectators); } }