示例#1
0
        /// <summary>
        /// a method which returns the statitics object of a user in a game
        /// </summary>
        public static List <UserStatsInGame> FindUserStatsInGame(int gameID)
        {
            DataTable dt = UsersInGamesDal.FindUsersInGame(gameID);
            List <UserStatsInGame> ret = new List <UserStatsInGame>();

            foreach (DataRow dr in dt.Rows)
            {
                ret.Add(new UserStatsInGame(dr));
            }
            return(ret);
        }
示例#2
0
 /// <summary>
 /// Returns The users elo at season
 /// </summary>
 public int GetUserEloAtSeason(int seasonID)
 {
     try
     {
         int elo = (int)(double)UsersInGamesDal.FindPlayerRankInSeason(seasonID, username)["ELO"];
         return(elo);
     }
     catch
     {
         int elo = (int)UsersInGamesDal.FindPlayerStartRankInSeason(seasonID, username)["ELO"];
         return(elo);
     }
 }
示例#3
0
        /// <summary>
        /// a method which ends the game
        /// </summary>
        private void EndProgression()
        {
            //change room status
            gameRoom.status = GameStatus.Ended;
            //change elo
            List <Player> sortedPlayers = SortedPlayerList();
            List <int>    eloChanges    = new List <int>();

            for (int i = 0; i < sortedPlayers.Count; i++)
            {
                eloChanges.Add(0);
            }
            //SME algorithm
            for (int i = 0; i < sortedPlayers.Count - 1; i++)
            {
                //winner part
                if (sortedPlayers[i].numberOfCards != sortedPlayers[i + 1].numberOfCards)
                {
                    eloChanges[i] += Elo.ChangeInRating(sortedPlayers[i].user.elo, sortedPlayers[i + 1].user.elo, 1);
                }
                else//if draw
                {
                    eloChanges[i] += Elo.ChangeInRating(sortedPlayers[i].user.elo, sortedPlayers[i + 1].user.elo, 0.5);
                }
                //loser part
                if (sortedPlayers[sortedPlayers.Count - 1 - i].numberOfCards != sortedPlayers[sortedPlayers.Count - 2 - i].numberOfCards)
                {
                    eloChanges[sortedPlayers.Count - 1 - i] += Elo.ChangeInRating(sortedPlayers[sortedPlayers.Count - 1 - i].user.elo, sortedPlayers[sortedPlayers.Count - 2 - i].user.elo, 0);
                }
                else//if draw
                {
                    eloChanges[sortedPlayers.Count - 1 - i] += Elo.ChangeInRating(sortedPlayers[sortedPlayers.Count - 1 - i].user.elo, sortedPlayers[sortedPlayers.Count - 2 - i].user.elo, 0.5);
                }
            }
            //changeXp
            List <int> xpChanges = new List <int>();

            for (int i = 0; i < sortedPlayers.Count; i++)
            {
                xpChanges.Add(50 / (sortedPlayers[i].numberOfCards + 1));
            }
            //updateAll
            for (int i = 0; i < sortedPlayers.Count; i++)
            {
                Player p = sortedPlayers[i];
                UsersInGamesDal.UpdateUserInGame(p.user.username, gameRoom.GameID, xpChanges[i], eloChanges[i], i == 0, p.numberOfCards);
                p.user.xp += xpChanges[i];
            }
            //End Game For All
            Broadcast(new EndGameBroadcast());
        }
示例#4
0
 /// <summary>
 /// Gets a datatable of all players whose rank this season is corresponding to the rank id
 /// </summary>
 public static DataTable GetAllPlayersInRankThisSeasonDataTable(int rankID)
 {
     return(UsersInGamesDal.FindAllPlayersInRankInSeason(rankID, DAL.SeasonsDal.GetCurrentSeason()));
 }
示例#5
0
 /// <summary>
 /// adds a user to the game
 /// </summary>
 public Player AddUserToGame(User user)
 {
     UsersInGamesDal.AddUserToGame(user.username, this.GameID);
     return(game.AddPlayer(user));
 }
示例#6
0
 /// <summary>
 /// returns how many games this user has lost
 /// </summary>
 public int HowManyGamesLost()
 {
     return(UsersInGamesDal.HowManyGamesUserWonOrLost(username, false));
 }
示例#7
0
 /// <summary>
 /// returns how many games this user has won
 /// </summary>
 public int HowManyGamesWon()
 {
     return(UsersInGamesDal.HowManyGamesUserWonOrLost(username, true));
 }
示例#8
0
        /// <summary>
        /// Returns The users beginning elo at season
        /// </summary>
        public int GetUserBeginningEloAtSeason(int seasonID)
        {
            int elo = (int)UsersInGamesDal.FindPlayerStartRankInSeason(seasonID, username)["ELO"];

            return(elo);
        }
示例#9
0
 /// <summary>
 /// a constructor that finds user in game statistics
 /// </summary>
 public UserStatsInGame(string user, int gameID) : this(UsersInGamesDal.FindUserInGame(user, gameID))
 {
 }