private void BindPlayerRankChart()
        {
            lcRanking.Series.Clear();
            lcRanking.Visible = false;
            Player player = ((Player)Session["UserBasicStatsPlayer"]);

            if (player == null)
            {
                return;
            }
            using (TrambambuleDBContextDataContext context = new TrambambuleDBContextDataContext())
            {
                List <TeamMatchPlayer> hist = context.TeamMatchPlayers.Where(p => p.PlayerId == player.Id)
                                              .OrderByDescending(p => p.Timestamp).Take(10).OrderBy(p => p.Timestamp).ToList();
                if (!hist.Any() || hist.Count < 2)
                {
                    return;
                }
                lcRanking.CategoriesAxis = string.Join(",", hist.Select(p => p.Timestamp.ToString("dd-MM-yyyy HH:mm:ss")).ToArray());
                AjaxControlToolkit.LineChartSeries lcs = new AjaxControlToolkit.LineChartSeries();
                lcs.Data = hist.Where(p => p.RankPosition.HasValue).Select(p => (decimal)p.RankPosition.Value).ToArray();
                lcs.Name = "Historia pozycji rankingowej";
                lcRanking.Series.Add(lcs);
                lcRanking.Visible = true;
            }
        }
Ejemplo n.º 2
0
        private bool CalculateGoalsScored(bool firstTime, Player player, Achievement achievement, TrambambuleDBContextDataContext context, int level, int top, int nextStep, out string comment)
        {
            comment = "";
            int i = 0;
            List<Match> playerMatches = context.Matches.Where(p => p.TeamMatches.Any(x =>
                                                  x.TeamMatchPlayers.Any(z => z.PlayerId == player.Id))).ToList();

            if (playerMatches.Any())
            {
                foreach (Match pm in playerMatches)
                {
                    foreach (TeamMatch tm in pm.TeamMatches)
                    {
                        var tmp = tm.TeamMatchPlayers.FirstOrDefault(w => w.PlayerId == player.Id);
                        if (tmp != null)
                        {
                            i += tmp.TeamMatch.GoalsScored;
                        }
                    }
                }
            }

            if (i == top)
            {
                if (level < 3)
                    comment = "Brakuje " + nextStep + " " + GramaticHelper(nextStep) + " z rzędu do kolejnego poziomu";
                else
                    comment = "Zdobyto najwyższy poziom w tym osiągnięciu";

                return true;
            }
            else if (i > top)
            {
                if (level < 3)
                {
                    int t = top + nextStep - i;
                    comment = "Brakuje " + t + " " + GramaticHelper(t) + " do kolejnego poziomu";
                }
                else
                    comment = "Zdobyto najwyższy poziom w tym osiągnięciu";
            }
            else
            {
                int t = top - i;
                comment = "Brakuje " + t + " " + GramaticHelper(t) + " do kolejnego poziomu";
                return false;
            }

            if (i >= top)
                return true;
            else
                return false;
        }
        private bool CalculatePlayedMatchesCount(bool firstTime, Player player, Achievement achievement, TrambambuleDBContextDataContext context, int level, int top, int nextStep, out string comment)
        {
            comment = "";
            int i = 0;
            List<Match> playerMatches = context.Matches.Where(p => p.TeamMatches.Any(x =>
                                                  x.TeamMatchPlayers.Any(z => z.PlayerId == player.Id))).ToList();

            if (playerMatches.Any())
            {
                i = playerMatches.Count;

                if (i == top)
                {
                    if (level < 3)
                        comment = "Brakuje " + nextStep + " " + GramaticHelper(nextStep) + " z rzędu do kolejnego poziomu";
                    else
                        comment = "Zdobyto najwyższy poziom w tym osiągnięciu";

                    return true;
                }
                else if (i > top)
                {
                    if (level < 3)
                    {
                        int t = top + nextStep - i;
                        comment = "Brakuje " + t + " " + GramaticHelper(t) + " do kolejnego poziomu";
                    }
                    else
                        comment = "Zdobyto najwyższy poziom w tym osiągnięciu";
                }
                else
                {
                    int t = top - i;
                    comment = "Brakuje " + t + " " + GramaticHelper(t) + " do kolejnego poziomu";
                    return false;
                }

                if (i >= top)
                    return true;
                else
                    return false;
            }
            else
            {
                comment = "Brakuje " + top + " " + GramaticHelper(top) + " do kolejnego poziomu";
                return false;
            }
        }
Ejemplo n.º 4
0
 private bool CaseLevel1(bool firstTime, Player player, Achievement achievement, TrambambuleDBContextDataContext context, ref string label, ref int newLevel, ref string comment)
 {
     if (CalculateLevel1(firstTime, player, achievement, context, out comment))
     {
         string currentComment = comment;
         newLevel = 1;
         label = achievement.Level1Label;
         if (!CaseLevel2(firstTime, player, achievement, context, ref label, ref newLevel, ref comment))
         {
             comment = currentComment;
         }
         return true;
     }
     else
         return false;
 }
 private void BindPlayerRankChart()
 {
     lcRanking.Series.Clear();
     lcRanking.Visible = false;
     Player player = ((Player)Session["UserBasicStatsPlayer"]);
     if (player == null) return;
     using (TrambambuleDBContextDataContext context = new TrambambuleDBContextDataContext())
     {
         List<TeamMatchPlayer> hist = context.TeamMatchPlayers.Where(p => p.PlayerId == player.Id)
             .OrderByDescending(p => p.Timestamp).Take(10).OrderBy(p => p.Timestamp).ToList();
         if (!hist.Any() || hist.Count < 2) return;
         lcRanking.CategoriesAxis = string.Join(",", hist.Select(p => p.Timestamp.ToString("dd-MM-yyyy HH:mm:ss")).ToArray());
         AjaxControlToolkit.LineChartSeries lcs = new AjaxControlToolkit.LineChartSeries();
         lcs.Data = hist.Where(p => p.RankPosition.HasValue).Select(p => (decimal)p.RankPosition.Value).ToArray();
         lcs.Name = "Historia pozycji rankingowej";
         lcRanking.Series.Add(lcs);
         lcRanking.Visible = true;
     }
 }
        public List<AchievementTextWithIds> RecalculateAchievements(bool firstTime)
        {
            List<AchievementTextWithIds> achievementsData = new List<AchievementTextWithIds>();

            using (TrambambuleDBContextDataContext context = new TrambambuleDBContextDataContext())
            {
                List<Achievement> achievements = context.Achievements.ToList();
                foreach (Achievement achievement in achievements)
                {
                    foreach (Player player in players)
                    {
                        string result = CalculateMethod(player, achievement, context, firstTime);
                        if (result != "")
                            achievementsData.Add(new AchievementTextWithIds(result, achievement.Id, player.Id));
                    }
                }

                context.SubmitChanges();
            }

            return achievementsData;
        }
 private static string CalculateMethod(Player player, Achievement achievement, TrambambuleDBContextDataContext context, bool firstTime)
 {
     string result = "";
     Type t = Type.GetType(achievement.Class);
     if (t != null)
     {
         if (t.IsSubclassOf(typeof(AchievementBase)))
         {
             var constructor = t.GetConstructor(new Type[] { });
             if (constructor != null)
             {
                 object o = constructor.Invoke(null);
                 if (o != null)
                 {
                     MethodInfo mi = t.GetMethod(CalculationMethodName);
                     if (mi != null)
                         result = (mi.Invoke(o, new object[] { firstTime, player, achievement, context })).ToString();
                 }
             }
         }
     }
     return result;
 }
Ejemplo n.º 8
0
        public List <AchievementTextWithIds> RecalculateAchievements(bool firstTime)
        {
            List <AchievementTextWithIds> achievementsData = new List <AchievementTextWithIds>();

            using (TrambambuleDBContextDataContext context = new TrambambuleDBContextDataContext())
            {
                List <Achievement> achievements = context.Achievements.ToList();
                foreach (Achievement achievement in achievements)
                {
                    foreach (Player player in players)
                    {
                        string result = CalculateMethod(player, achievement, context, firstTime);
                        if (result != "")
                        {
                            achievementsData.Add(new AchievementTextWithIds(result, achievement.Id, player.Id));
                        }
                    }
                }

                context.SubmitChanges();
            }

            return(achievementsData);
        }
Ejemplo n.º 9
0
 public override bool CalculateLevel3(bool firstTime, Player player, Achievement achievement, TrambambuleDBContextDataContext context, out string comment)
 {
     return(CalculateGamesWithOnePartner(firstTime, player, achievement, context, 3, 30, 10, out comment));
 }
 public override bool CalculateLevel3(bool firstTime, Player player, Achievement achievement, TrambambuleDBContextDataContext context, out string comment)
 {
     return CalculatePlayedMatchesCount(firstTime, player, achievement, context, 3, 300, 100, out comment);
 }
Ejemplo n.º 11
0
        private bool CalculateGamesWithOnePartner(bool firstTime, Player player, Achievement achievement, TrambambuleDBContextDataContext context, int level, int top, int nextStep, out string comment)
        {
            comment = "";
            List <TeamMatch> playerMatches = context.TeamMatches.Where(p => p.Result == 1 &&
                                                                       p.TeamMatchPlayers.Any(x => x.PlayerId == player.Id)).ToList();

            if (playerMatches.Any())
            {
                TeamMatchPlayer playerData   = playerMatches.First().TeamMatchPlayers.First(p => p.PlayerId == player.Id);
                var             partnerGames = playerMatches
                                               .GroupBy(p => new { Partner = p.TeamMatchPlayers.First(x => x.PlayerId != playerData.PlayerId).Player })
                                               .Select(x => new
                {
                    PartnerId = x.Key.Partner.Id,
                    Games     = x.Count(),
                })
                                               .OrderByDescending(p => p.Games).ToList();


                int        topGames    = -1;
                List <int> topPartners = new List <int>();
                foreach (var m in partnerGames)
                {
                    if (topGames == -1)
                    {
                        topGames = m.Games;
                    }

                    if (topGames > m.Games)
                    {
                        break;
                    }
                    else
                    {
                        topPartners.Add(m.PartnerId);
                    }
                }
                int t = top - topGames;
                if (topPartners.Count > 1)
                {
                    StringBuilder partnersList = new StringBuilder();
                    for (int i = 0; i < topPartners.Count; i++)
                    {
                        if (i != 0)
                        {
                            partnersList.Append(", {P_" + topPartners[i] + "}");
                        }
                        else
                        {
                            partnersList.Append("{P_" + topPartners[i] + "}");
                        }
                    }
                    comment = "Brakuje " + t + " " + GramaticHelper(t) + " z jednym z partnerów: " + partnersList + " do kolejnego poziomu";
                }
                else
                {
                    comment = "Brakuje " + t + " " + GramaticHelper(t) + " z: " + "{P_" + topPartners[0] + "}" + " do kolejnego poziomu";
                }


                if (t <= 0)
                {
                    if (level < 3)
                    {
                        if (topPartners.Count > 1)
                        {
                            StringBuilder partnersList = new StringBuilder();
                            for (int i = 0; i < topPartners.Count; i++)
                            {
                                if (i != 0)
                                {
                                    partnersList.Append(", {P_" + topPartners[i] + "}");
                                }
                                else
                                {
                                    partnersList.Append("{P_" + topPartners[i] + "}");
                                }
                            }
                            comment = "Brakuje " + (nextStep + t) + " " + GramaticHelper(nextStep) + " z jednym z partnerów: " + partnersList + " do kolejnego poziomu";
                        }
                        else
                        {
                            comment = "Brakuje " + (nextStep + t) + " " + GramaticHelper(nextStep) + " z: " + "{P_" + topPartners[0] + "}" + " do kolejnego poziomu";
                        }
                    }
                    else
                    {
                        comment = "Zdobyto najwyższy poziom w tym osiągnięciu z partnerem {P_" + topPartners[0] + "}";
                    }
                }

                if (topGames >= top)
                {
                    return(true);
                }
            }
            else
            {
                comment = "Brakuje " + top + " " + GramaticHelper(top) + " z jakimkolwiek partnerem";
            }
            return(false);
        }
Ejemplo n.º 12
0
 private bool CaseLevel1(bool firstTime, Player player, Achievement achievement, TrambambuleDBContextDataContext context, ref string label, ref int newLevel, ref string comment)
 {
     if (CalculateLevel1(firstTime, player, achievement, context, out comment))
     {
         string currentComment = comment;
         newLevel = 1;
         label    = achievement.Level1Label;
         if (!CaseLevel2(firstTime, player, achievement, context, ref label, ref newLevel, ref comment))
         {
             comment = currentComment;
         }
         return(true);
     }
     else
     {
         return(false);
     }
 }
        private bool CalculateGamesWithOnePartner(bool firstTime, Player player, Achievement achievement, TrambambuleDBContextDataContext context, int level, int top, int nextStep, out string comment)
        {
            comment = "";
            List<TeamMatch> playerMatches = context.TeamMatches.Where(p => p.Result == 1 &&
                              p.TeamMatchPlayers.Any(x => x.PlayerId == player.Id)).ToList();

            if (playerMatches.Any())
            {
                TeamMatchPlayer playerData = playerMatches.First().TeamMatchPlayers.First(p => p.PlayerId == player.Id);
                var partnerGames = playerMatches
                    .GroupBy(p => new { Partner = p.TeamMatchPlayers.First(x => x.PlayerId != playerData.PlayerId).Player })
                    .Select(x => new
                    {
                        PartnerId = x.Key.Partner.Id,
                        Games = x.Count(),
                    })
                    .OrderByDescending(p => p.Games).ToList();

                int topGames = -1;
                List<int> topPartners = new List<int>();
                foreach (var m in partnerGames)
                {
                    if (topGames == -1)
                    {
                        topGames = m.Games;
                    }

                    if (topGames > m.Games)
                    {
                        break;
                    }
                    else
                    {
                        topPartners.Add(m.PartnerId);
                    }
                }
                int t = top - topGames;
                if (topPartners.Count > 1)
                {
                    StringBuilder partnersList = new StringBuilder();
                    for (int i = 0; i < topPartners.Count; i++)
                    {
                        if (i != 0)
                            partnersList.Append(", {P_" + topPartners[i] + "}");
                        else
                            partnersList.Append("{P_" + topPartners[i] + "}");
                    }
                    comment = "Brakuje " + t + " " + GramaticHelper(t) + " z jednym z partnerów: " + partnersList + " do kolejnego poziomu";
                }
                else
                {
                    comment = "Brakuje " + t + " " + GramaticHelper(t) + " z: " + "{P_" + topPartners[0] + "}" + " do kolejnego poziomu";
                }

                if (t <= 0)
                {
                    if (level < 3)
                    {
                        if (topPartners.Count > 1)
                        {
                            StringBuilder partnersList = new StringBuilder();
                            for (int i = 0; i < topPartners.Count; i++)
                            {
                                if (i != 0)
                                    partnersList.Append(", {P_" + topPartners[i] + "}");
                                else
                                    partnersList.Append("{P_" + topPartners[i] + "}");
                            }
                            comment = "Brakuje " + (nextStep + t) + " " + GramaticHelper(nextStep) + " z jednym z partnerów: " + partnersList + " do kolejnego poziomu";
                        }
                        else
                        {
                            comment = "Brakuje " + (nextStep + t) + " " + GramaticHelper(nextStep) + " z: " + "{P_" + topPartners[0] + "}" + " do kolejnego poziomu";
                        }
                    }
                    else
                    {
                        comment = "Zdobyto najwyższy poziom w tym osiągnięciu z partnerem {P_" + topPartners[0] + "}";
                    }
                }

                if (topGames >= top)
                    return true;
            }
            else
            {
                comment = "Brakuje " + top + " " + GramaticHelper(top) + " z jakimkolwiek partnerem";
            }
            return false;
        }
Ejemplo n.º 14
0
 public override bool CalculateLevel3(bool firstTime, Player player, Achievement achievement, TrambambuleDBContextDataContext context, out string comment)
 {
     return CalculateGoalsScored(firstTime, player, achievement, context, 3, 2500, 500, out comment);
 }
Ejemplo n.º 15
0
 public abstract bool CalculateLevel3(bool firstTime, Player player, Achievement achievement, TrambambuleDBContextDataContext context, out string toNext);
Ejemplo n.º 16
0
 private bool CaseLevel3(bool firstTime, Player player, Achievement achievement, TrambambuleDBContextDataContext context, ref string label, ref int newLevel, ref string comment)
 {
     if (CalculateLevel3(firstTime, player, achievement, context, out comment))
     {
         newLevel = 3;
         label = achievement.Level3Label;
         //comment = "Osiągnięto najwyższy poziom w tym osiągnięciu";
         return true;
     }
     else
         return false;
 }
Ejemplo n.º 17
0
        public string CalculateAchievement(bool firstTime, Player player, Achievement achievement, TrambambuleDBContextDataContext context)
        {
            int level = 0;
            string label = "";
            int newLevel = 0;
            var currentAchievement = context.AchievementPlayer.FirstOrDefault(w => w.AchievementId == achievement.Id && w.PlayerId == player.Id);
            if (currentAchievement != null)
                level = currentAchievement.LevelOfAchievement;
            else
                level = 0;

            string comment = "";
            switch (level)
            {
                case 0:
                    CaseLevel1(firstTime, player, achievement, context, ref label, ref newLevel, ref comment);
                    break;
                case 1:
                    CaseLevel2(firstTime, player, achievement, context, ref label, ref newLevel, ref comment);
                    break;
                case 2:
                    CaseLevel3(firstTime, player, achievement, context, ref label, ref newLevel, ref comment);
                    break;
            }

            //if (newLevel > level)
            //{
            if (currentAchievement == null)
            {
                currentAchievement = new AchievementPlayer();
                currentAchievement.LevelOfAchievement = newLevel;
                currentAchievement.AchievementId = achievement.Id;
                currentAchievement.ToNextLevelLabel = comment;
                currentAchievement.PlayerId = player.Id;

                context.AchievementPlayer.InsertOnSubmit(currentAchievement);
            }
            else
            {
                if (newLevel > level)
                {
                    currentAchievement.LevelOfAchievement = newLevel;
                }
                if (!string.IsNullOrEmpty(comment))
                {
                    currentAchievement.ToNextLevelLabel = comment;
                }
            }

            if (newLevel > level)
            {
                string levelName = Common.GetAchievementsLevelName(newLevel);
                return string.Format("Gracz {0} {1} uzyskał poziom {2} ({3}) w osiągnięciu \"{4}\".", player.FirstName, player.LastName, levelName, label, achievement.Title);
            }
            else
                return "";
            //}
            //else if (comment != "" && currentAchievement != null)
            //{
            //    currentAchievement.ToNextLevelLabel = comment;
            //}

            //return "";
        }
Ejemplo n.º 18
0
        public static List<BestStat> CalculateBestStats()
        {
            List<BestStat> bestStats = new List<BestStat>();

            //Wins as a defender
            int currentResult_WinsAsADefender = 0;
            int finalResult_LeastWinsAsADefender = 999999;
            int finalResult_MostWinsAsADefender = 0;
            Player finalPlayer_LeastWinsAsADefender = null;
            Player finalPlayer_MostWinsAsADefender = null;

            //Wins as an attacker
            int currentResult_WinsAsAnAttacker = 0;
            int finalResult_LeastWinsAsAnAttacker = 999999;
            int finalResult_MostWinsAsAnAttacker = 0;
            Player finalPlayer_LeastWinsAsAnAttacker = null;
            Player finalPlayer_MostWinsAsAnAttacker = null;

            //Overall wins
            int currentResult_Wins = 0;
            int finalResult_LeastWins = 999999;
            int finalResult_MostWins = 0;
            Player finalPlayer_LeastWins = null;
            Player finalPlayer_MostWins = null;

            //Goals Balance
            int currentResult_GoalsBalance = 0;
            int finalResult_WorstGoalsBalance = 999999;
            int finalResult_BestGoalsBalance = 0;
            Player finalPlayer_WorstGoalsBalance = null;
            Player finalPlayer_BestGoalsBalance = null;

            //Percent of wins
            int finalResult_LowestPercentOfWins = 999999;
            int finalResult_TopPercentOfWins = 0;
            Player finalPlayer_LowestPercentOfWins = null;
            Player finalPlayer_TopPercentOfWins = null;

            //Total games played
            int currentResult_GamesPlayed = 0;
            int finalResult_LeastGamesPlayed = 999999;
            int finalResult_MostGamesPlayed = 0;
            Player finalPlayer_LeastGamesPlayed = null;
            Player finalPlayer_MostGamesPlayed = null;

            var players = DataAccess.GetPlayers();
            using (TrambambuleDBContextDataContext context = new TrambambuleDBContextDataContext())
            {
                try
                {
                    foreach (Player player in players)
                    {
                        currentResult_WinsAsADefender = 0;
                        currentResult_WinsAsAnAttacker = 0;
                        currentResult_Wins = 0;
                        currentResult_GoalsBalance = 0;
                        currentResult_GamesPlayed = 0;

                        List<Match> playerMatches = context.Matches.Where(p => p.TeamMatches.Any(x =>
                                                    x.TeamMatchPlayers.Any(z => z.PlayerId == player.Id))).ToList();

                        if (playerMatches != null && playerMatches.Count > 0)
                        {
                            foreach (Match pm in playerMatches)
                            {
                                foreach (TeamMatch tm in pm.TeamMatches)
                                {
                                    var tmp = tm.TeamMatchPlayers.FirstOrDefault(w => w.PlayerId == player.Id);
                                    if (tmp != null)
                                    {
                                        if (tmp.TeamMatch.Result == (int)Common.EResult.Win && tmp.Position == (int)Common.EPosition.Defence)
                                        {
                                            //Wins as a defender
                                            currentResult_WinsAsADefender++;
                                        }

                                        if (tmp.TeamMatch.Result == (int)Common.EResult.Win && tmp.Position == (int)Common.EPosition.Offence)
                                        {
                                            //Wins as an attacker
                                            currentResult_WinsAsAnAttacker++;
                                        }

                                        if (tmp.TeamMatch.Result == (int)Common.EResult.Win)
                                        {
                                            //Overall wins
                                            currentResult_Wins++;
                                        }

                                        //Goals Balance
                                        currentResult_GoalsBalance += tmp.TeamMatch.GoalsScored;
                                        currentResult_GoalsBalance -= tmp.TeamMatch.GoalsLost;
                                    }
                                }
                            }

                            if (currentResult_WinsAsADefender < finalResult_LeastWinsAsADefender)
                            {
                                //LeastWinsAsADefender
                                finalResult_LeastWinsAsADefender = currentResult_WinsAsADefender;
                                finalPlayer_LeastWinsAsADefender = player;
                            }
                            if (currentResult_WinsAsADefender > finalResult_MostWinsAsADefender)
                            {
                                //MostWinsAsADefender
                                finalResult_MostWinsAsADefender = currentResult_WinsAsADefender;
                                finalPlayer_MostWinsAsADefender = player;
                            }

                            if (currentResult_WinsAsAnAttacker < finalResult_LeastWinsAsAnAttacker)
                            {
                                //LeastWinsAsAnAttacker
                                finalResult_LeastWinsAsAnAttacker = currentResult_WinsAsAnAttacker;
                                finalPlayer_LeastWinsAsAnAttacker = player;
                            }
                            if (currentResult_WinsAsAnAttacker > finalResult_MostWinsAsAnAttacker)
                            {
                                //MostWinsAsAnAttacker
                                finalResult_MostWinsAsAnAttacker = currentResult_WinsAsAnAttacker;
                                finalPlayer_MostWinsAsAnAttacker = player;
                            }

                            if (currentResult_Wins < finalResult_LeastWins)
                            {
                                //LeasttWins
                                finalResult_LeastWins = currentResult_Wins;
                                finalPlayer_LeastWins = player;
                            }
                            if (currentResult_Wins > finalResult_MostWins)
                            {
                                //MostWins
                                finalResult_MostWins = currentResult_Wins;
                                finalPlayer_MostWins = player;
                            }

                            if (currentResult_GoalsBalance < finalResult_WorstGoalsBalance)
                            {
                                //WorstGoalsBalance
                                finalResult_WorstGoalsBalance = currentResult_GoalsBalance;
                                finalPlayer_WorstGoalsBalance = player;
                            }
                            if (currentResult_GoalsBalance > finalResult_BestGoalsBalance)
                            {
                                //BestGoalsBalance
                                finalResult_BestGoalsBalance = currentResult_GoalsBalance;
                                finalPlayer_BestGoalsBalance = player;
                            }

                            int current_PercentOfWins = (int)Math.Round((float)((float)currentResult_Wins / (float)playerMatches.Count) * 100, 0);
                            if (current_PercentOfWins < finalResult_LowestPercentOfWins)
                            {
                                //LowestPercentOfWins
                                finalResult_LowestPercentOfWins = current_PercentOfWins;
                                finalPlayer_LowestPercentOfWins = player;
                            }
                            if (current_PercentOfWins > finalResult_TopPercentOfWins)
                            {
                                //TopPercentOfWins
                                finalResult_TopPercentOfWins = current_PercentOfWins;
                                finalPlayer_TopPercentOfWins = player;
                            }

                            currentResult_GamesPlayed = playerMatches.Count;
                            if (currentResult_GamesPlayed < finalResult_LeastGamesPlayed)
                            {
                                //LeastGamesPlayed
                                finalResult_LeastGamesPlayed = currentResult_GamesPlayed;
                                finalPlayer_LeastGamesPlayed = player;
                            }
                            if (currentResult_GamesPlayed > finalResult_MostGamesPlayed)
                            {
                                //MostGamesPlayed
                                finalResult_MostGamesPlayed = currentResult_GamesPlayed;
                                finalPlayer_MostGamesPlayed = player;
                            }
                        }
                    }

                    bestStats.Add(new BestStat(finalPlayer_MostWins, finalResult_MostWins, "Najwięcej zwycięstw"));
                    bestStats.Add(new BestStat(finalPlayer_LeastWins, finalResult_LeastWins, "Najmniej zwycięstw"));

                    bestStats.Add(new BestStat(finalPlayer_MostWinsAsAnAttacker, finalResult_MostWinsAsAnAttacker, "Najwięcej zwycięstw grając w ataku"));
                    bestStats.Add(new BestStat(finalPlayer_LeastWinsAsAnAttacker, finalResult_LeastWinsAsAnAttacker, "Najmniej zwycięstw grając w ataku"));

                    bestStats.Add(new BestStat(finalPlayer_MostWinsAsADefender, finalResult_MostWinsAsADefender, "Najwięcej zwycięstw grając w obronie"));
                    bestStats.Add(new BestStat(finalPlayer_LeastWinsAsADefender, finalResult_LeastWinsAsADefender, "Najmniej zwycięstw grając w obronie"));

                    bestStats.Add(new BestStat(finalPlayer_MostGamesPlayed, finalResult_MostGamesPlayed, "Najwięcej rozegranych meczów"));
                    bestStats.Add(new BestStat(finalPlayer_LeastGamesPlayed, finalResult_LeastGamesPlayed, "Najmniej rozegranych meczów"));

                    bestStats.Add(new BestStat(finalPlayer_BestGoalsBalance, finalResult_BestGoalsBalance, "Najlepszy bilans bramek"));
                    bestStats.Add(new BestStat(finalPlayer_WorstGoalsBalance, finalResult_WorstGoalsBalance, "Najgorszy bilans bramek"));

                    bestStats.Add(new BestStat(finalPlayer_TopPercentOfWins, finalResult_TopPercentOfWins, "Największy procent wygranych"));
                    bestStats.Add(new BestStat(finalPlayer_LowestPercentOfWins, finalResult_LowestPercentOfWins, "Najmniejszy procent wygranych"));

                }
                catch { }
            }

            return bestStats;
        }
Ejemplo n.º 19
0
        private static string CalculateMethod(Player player, Achievement achievement, TrambambuleDBContextDataContext context, bool firstTime)
        {
            string result = "";
            Type   t      = Type.GetType(achievement.Class);

            if (t != null)
            {
                if (t.IsSubclassOf(typeof(AchievementBase)))
                {
                    var constructor = t.GetConstructor(new Type[] { });
                    if (constructor != null)
                    {
                        object o = constructor.Invoke(null);
                        if (o != null)
                        {
                            MethodInfo mi = t.GetMethod(CalculationMethodName);
                            if (mi != null)
                            {
                                result = (mi.Invoke(o, new object[] { firstTime, player, achievement, context })).ToString();
                            }
                        }
                    }
                }
            }
            return(result);
        }
Ejemplo n.º 20
0
 public override bool CalculateLevel3(bool firstTime, Player player, Achievement achievement, TrambambuleDBContextDataContext context, out string comment)
 {
     return(CalculatePlayedMatchesCount(firstTime, player, achievement, context, 3, 300, 100, out comment));
 }
Ejemplo n.º 21
0
 private bool CaseLevel3(bool firstTime, Player player, Achievement achievement, TrambambuleDBContextDataContext context, ref string label, ref int newLevel, ref string comment)
 {
     if (CalculateLevel3(firstTime, player, achievement, context, out comment))
     {
         newLevel = 3;
         label    = achievement.Level3Label;
         //comment = "Osiągnięto najwyższy poziom w tym osiągnięciu";
         return(true);
     }
     else
     {
         return(false);
     }
 }
 public override bool CalculateLevel3(bool firstTime, Player player, Achievement achievement, TrambambuleDBContextDataContext context, out string comment)
 {
     return CalculateGamesWithOnePartner(firstTime, player, achievement, context, 3, 30, 10, out comment);
 }
Ejemplo n.º 23
0
        private bool CalculatePlayedMatchesCount(bool firstTime, Player player, Achievement achievement, TrambambuleDBContextDataContext context, int level, int top, int nextStep, out string comment)
        {
            comment = "";
            int          i             = 0;
            List <Match> playerMatches = context.Matches.Where(p => p.TeamMatches.Any(x =>
                                                                                      x.TeamMatchPlayers.Any(z => z.PlayerId == player.Id))).ToList();

            if (playerMatches.Any())
            {
                i = playerMatches.Count;

                if (i == top)
                {
                    if (level < 3)
                    {
                        comment = "Brakuje " + nextStep + " " + GramaticHelper(nextStep) + " z rzędu do kolejnego poziomu";
                    }
                    else
                    {
                        comment = "Zdobyto najwyższy poziom w tym osiągnięciu";
                    }

                    return(true);
                }
                else if (i > top)
                {
                    if (level < 3)
                    {
                        int t = top + nextStep - i;
                        comment = "Brakuje " + t + " " + GramaticHelper(t) + " do kolejnego poziomu";
                    }
                    else
                    {
                        comment = "Zdobyto najwyższy poziom w tym osiągnięciu";
                    }
                }
                else
                {
                    int t = top - i;
                    comment = "Brakuje " + t + " " + GramaticHelper(t) + " do kolejnego poziomu";
                    return(false);
                }

                if (i >= top)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                comment = "Brakuje " + top + " " + GramaticHelper(top) + " do kolejnego poziomu";
                return(false);
            }
        }
Ejemplo n.º 24
0
 public override bool CalculateLevel3(bool firstTime, Player player, Achievement achievement, TrambambuleDBContextDataContext context, out string comment)
 {
     return CalculateWinsInRow(firstTime, player, achievement, context, 3, 15, 5, out comment);
 }
Ejemplo n.º 25
0
 public abstract bool CalculateLevel3(bool firstTime, Player player, Achievement achievement, TrambambuleDBContextDataContext context, out string toNext);
Ejemplo n.º 26
0
        private bool CalculateWinsInRow(bool firstTime, Player player, Achievement achievement, TrambambuleDBContextDataContext context, int level, int top, int nextStep, out string comment)
        {
            comment = "";
            int i = 0;
            bool result = true;

            if (!firstTime)
            {
                List<Match> playerMatches = context.Matches.Where(p => p.TeamMatches.Any(x =>
                                            x.TeamMatchPlayers.Any(z => z.PlayerId == player.Id)))
                                            .OrderByDescending(p => p.Timestamp).Take(top).OrderByDescending(w => w.Timestamp).ToList();

                //if (playerMatches.Count == top)
                //{
                    List<TeamMatch> tmList = new List<TeamMatch>();
                    foreach (Match pm in playerMatches)
                    {
                        foreach (TeamMatch tm in pm.TeamMatches)
                        {
                            var tmp = tm.TeamMatchPlayers.FirstOrDefault(w => w.PlayerId == player.Id);
                            if (tmp != null)
                            {
                                if (tmp.TeamMatch.Result == 0)
                                {
                                    result = false;
                                    int t = (top - i);
                                    comment = "Brakuje " + t + " " + GramaticHelper(t) + " z rzędu do kolejnego poziomu";
                                    break;
                                }
                                else
                                {
                                    i++;
                                }
                            }
                        }
                        if (!result)
                            break;
                    }
                //}
                //else
                //{
                //    int t = top - playerMatches.Count;
                //    comment = "Brakuje " + t + " " + GramaticHelper(t) + " z rzędu do kolejnego poziomu";
                //    return false;
                //}

                if (comment == "")
                {
                    if (level < 3)
                    {
                        if (i > 0)
                            comment = "Brakuje " + (nextStep - i) + " " + GramaticHelper(nextStep - i) + " z rzędu do kolejnego poziomu";
                        else
                            comment = "Brakuje " + nextStep + " " + GramaticHelper(nextStep) + " z rzędu do kolejnego poziomu";
                    }
                    else
                        comment = "Zdobyto najwyższy poziom w tym osiągnięciu";
                }

                if (top == i && result)
                    return true;
                else
                    return false;
            }
            else
            {
                int j = 0;
                int winsAtTheBeginning = 0;
                bool lost = false;
                List<Match> playerMatches = context.Matches.Where(p => p.TeamMatches.Any(x =>
                                         x.TeamMatchPlayers.Any(z => z.PlayerId == player.Id)))
                                          .OrderByDescending(p => p.Timestamp).ToList();

                //if (playerMatches.Count >= top)
                //{
                    List<TeamMatch> tmList = new List<TeamMatch>();
                    foreach (Match pm in playerMatches)
                    {
                        for (int counter = 0; counter < pm.TeamMatches.Count; counter++)
                        {
                            TeamMatch tm = pm.TeamMatches[counter];
                            var tmp = tm.TeamMatchPlayers.FirstOrDefault(w => w.PlayerId == player.Id);
                            if (tmp != null)
                            {
                                if (tmp.TeamMatch.Result == 1)
                                {
                                    i++;
                                    if (!lost)
                                    {
                                        winsAtTheBeginning++;
                                    }
                                    if (i >= top)
                                    {
                                        j = i;
                                    }
                                }
                                else
                                {
                                    i = 0;
                                    if (!lost)
                                        lost = true;
                                }
                            }
                        }
                    }

                    if (comment == "")
                    {
                        if (level < 3)
                        {
                            if (winsAtTheBeginning > top || j > 0)
                            {
                                int t = top + nextStep - winsAtTheBeginning;
                                comment = "Brakuje " + t + " " + GramaticHelper(t) + " z rzędu do kolejnego poziomu";
                            }
                            else if (j == 0 )
                            {
                                if (winsAtTheBeginning > 0)
                                {
                                    int t = top - winsAtTheBeginning;
                                    comment = "Brakuje " + t + " " + GramaticHelper(t) + " z rzędu do kolejnego poziomu";
                                }
                                else if (winsAtTheBeginning == 0)
                                {
                                    comment = "Brakuje " + top + " " + GramaticHelper(top) + " z rzędu do kolejnego poziomu";
                                }
                            }
                        }
                        else
                            comment = "Zdobyto najwyższy poziom w tym osiągnięciu";
                    }
                    if (top <= j)
                        return true;
                    else
                        return false;
                //}
                //else
                //{
                //    int t = top - playerMatches.Count;
                //    comment = "Brakuje " + t + " " + GramaticHelper(t) + " z rzędu do kolejnego poziomu";
                //    return false;
                //}
            }
        }
Ejemplo n.º 27
0
        public string CalculateAchievement(bool firstTime, Player player, Achievement achievement, TrambambuleDBContextDataContext context)
        {
            int    level              = 0;
            string label              = "";
            int    newLevel           = 0;
            var    currentAchievement = context.AchievementPlayer.FirstOrDefault(w => w.AchievementId == achievement.Id && w.PlayerId == player.Id);

            if (currentAchievement != null)
            {
                level = currentAchievement.LevelOfAchievement;
            }
            else
            {
                level = 0;
            }

            string comment = "";

            switch (level)
            {
            case 0:
                CaseLevel1(firstTime, player, achievement, context, ref label, ref newLevel, ref comment);
                break;

            case 1:
                CaseLevel2(firstTime, player, achievement, context, ref label, ref newLevel, ref comment);
                break;

            case 2:
                CaseLevel3(firstTime, player, achievement, context, ref label, ref newLevel, ref comment);
                break;
            }

            //if (newLevel > level)
            //{
            if (currentAchievement == null)
            {
                currentAchievement = new AchievementPlayer();
                currentAchievement.LevelOfAchievement = newLevel;
                currentAchievement.AchievementId      = achievement.Id;
                currentAchievement.ToNextLevelLabel   = comment;
                currentAchievement.PlayerId           = player.Id;

                context.AchievementPlayer.InsertOnSubmit(currentAchievement);
            }
            else
            {
                if (newLevel > level)
                {
                    currentAchievement.LevelOfAchievement = newLevel;
                }
                if (!string.IsNullOrEmpty(comment))
                {
                    currentAchievement.ToNextLevelLabel = comment;
                }
            }

            if (newLevel > level)
            {
                string levelName = Common.GetAchievementsLevelName(newLevel);
                return(string.Format("Gracz {0} {1} uzyskał poziom {2} ({3}) w osiągnięciu \"{4}\".", player.FirstName, player.LastName, levelName, label, achievement.Title));
            }
            else
            {
                return("");
            }
            //}
            //else if (comment != "" && currentAchievement != null)
            //{
            //    currentAchievement.ToNextLevelLabel = comment;
            //}

            //return "";
        }
Ejemplo n.º 28
0
 public override bool CalculateLevel3(bool firstTime, Player player, Achievement achievement, TrambambuleDBContextDataContext context, out string comment)
 {
     return(CalculateWinsInRow(firstTime, player, achievement, context, 3, 15, 5, out comment));
 }
        private void BindPlayerStats()
        {
            Player player = ((Player)Session["UserBasicStatsPlayer"]);

            if (player == null)
            {
                return;
            }

            using (TrambambuleDBContextDataContext context = new TrambambuleDBContextDataContext())
            {
                List <TeamMatch> playerMatches = context.TeamMatches.Where(p =>
                                                                           p.TeamMatchPlayers.Any(x => x.PlayerId == player.Id)).ToList();
                StringBuilder sb = new StringBuilder();

                List <TeamMatch> lastGames = playerMatches.OrderByDescending(p => p.Timestamp).ToList();
                if (lastGames.Any())
                {
                    TeamMatchPlayer playerData = lastGames.First().TeamMatchPlayers.First(p => p.PlayerId == player.Id);
                    sb.AppendLine("Obecna pozycja w rankingu: " + context.GetPlayerRankPosition(player.Id));
                    sb.AppendLine("Punkty rankingowe: " + (playerData.Rating.HasValue
                        ? ((int)playerData.Rating.Value).ToString() : string.Empty));
                    string form = string.Empty;
                    foreach (TeamMatch tm in lastGames.Take(15).ToList())
                    {
                        form += GetMatchResultLabel(tm);
                    }
                    sb.AppendLine("Forma: " + form);
                    sb.Append("<hr/>");
                }

                //sb.AppendLine("Rozegranych: " + playerMatches.Select(p => new { Mid = p.MatchId }).Distinct().Count());
                sb.AppendLine("Bilans W/R/P: "
                              + playerMatches.Select(p => new { Mid = p.MatchId, Result = p.Result }).Distinct().Count(p => p.Result == (int)Common.EResult.Win) + " / "
                              + playerMatches.Select(p => new { Mid = p.MatchId, Result = p.Result }).Distinct().Count(p => p.Result == (int)Common.EResult.Draw) + " / "
                              + playerMatches.Select(p => new { Mid = p.MatchId, Result = p.Result }).Distinct().Count(p => p.Result == (int)Common.EResult.Loose));

                sb.AppendLine("Bilans W/R/P [atak]: "
                              + playerMatches.Count(p => p.Result == (int)Common.EResult.Win &&
                                                    p.TeamMatchPlayers.First(x => x.PlayerId == player.Id).Position == (byte)Common.EPosition.Offence) + " / "
                              + playerMatches.Count(p => p.Result == (int)Common.EResult.Draw &&
                                                    p.TeamMatchPlayers.First(x => x.PlayerId == player.Id).Position == (byte)Common.EPosition.Offence) + " / "
                              + playerMatches.Count(p => p.Result == (int)Common.EResult.Loose &&
                                                    p.TeamMatchPlayers.First(x => x.PlayerId == player.Id).Position == (byte)Common.EPosition.Offence));

                sb.AppendLine("Bilans W/R/P [obrona]: " + playerMatches.Count(p => p.Result == (int)Common.EResult.Win &&
                                                                              p.TeamMatchPlayers.First(x => x.PlayerId == player.Id).Position == (byte)Common.EPosition.Defence) + " / "
                              + playerMatches.Count(p => p.Result == (int)Common.EResult.Draw &&
                                                    p.TeamMatchPlayers.First(x => x.PlayerId == player.Id).Position == (byte)Common.EPosition.Defence) + " / "
                              + playerMatches.Count(p => p.Result == (int)Common.EResult.Loose &&
                                                    p.TeamMatchPlayers.First(x => x.PlayerId == player.Id).Position == (byte)Common.EPosition.Defence));

                sb.AppendLine("Bilans bramek: "
                              + playerMatches.Select(p => new { Mid = p.MatchId, GoalsScored = p.GoalsScored }).Distinct().Sum(p => p.GoalsScored)
                              + " / "
                              + playerMatches.Select(p => new { Mid = p.MatchId, GoalsLost = p.GoalsLost }).Distinct().Sum(p => p.GoalsLost));

                var achievements = (from ap in context.AchievementPlayer
                                    join p in context.Players
                                    on ap.PlayerId equals p.Id
                                    join a in context.Achievements
                                    on ap.AchievementId equals a.Id
                                    where p.Id == player.Id
                                    select new PlayerWithAchievement(p, ap.LevelOfAchievement, ap.ToNextLevelLabel, a)).ToList();

                if (achievements.Any())
                {
                    sb.AppendLine("<hr/>Osiągnięcia:");
                    for (int i = 0; i < achievements.Count; i++)
                    {
                        var ach = achievements[i];
                        //if (ach.LevelOfAchievement>0)
                        //    sb.AppendFormat("{0}. Poziom {1} ({2}) w osiągnięciu \"{3}\".<br/>", (i + 1).ToString(), Common.GetAchievementsLevelName(ach.LevelOfAchievement), GetLabel(ach.LevelOfAchievement, ach.Achievement), ach.Achievement.Title);
                        //else
                        //    sb.AppendFormat("{0}. Nie zdobyto jeszcze żadnego poziomu w osiągnięciu \"{2}\". {3}.", (i+1).ToString(),

                        if (ach.LevelOfAchievement > 0)
                        {
                            sb.AppendFormat("<b>{0}. {1}</b><br/>Poziom {2}: {3}.<br/>{4}.<br/>", (i + 1).ToString(), ach.Achievement.Title, Common.GetAchievementsLevelName(ach.LevelOfAchievement), GetLabel(ach.LevelOfAchievement, ach.Achievement), GetTextWithAnchors(ach.ToNextLevelLabel));
                        }
                        else
                        {
                            sb.AppendFormat("<b>{0}. {1}</b><br/>Nie osiągnięto jeszcze żadnego poziomu.<br/>{2}.<br/>", (i + 1).ToString(), ach.Achievement.Title, GetTextWithAnchors(ach.ToNextLevelLabel));
                        }
                    }
                    sb.Append("<hr/>");
                }

                sb = sb.Replace(Environment.NewLine, "<br/>");

                lblStatsDetails.Text = sb.ToString();
            }
        }
Ejemplo n.º 30
0
        private bool CalculateWinsInRow(bool firstTime, Player player, Achievement achievement, TrambambuleDBContextDataContext context, int level, int top, int nextStep, out string comment)
        {
            comment = "";
            int  i      = 0;
            bool result = true;

            if (!firstTime)
            {
                List <Match> playerMatches = context.Matches.Where(p => p.TeamMatches.Any(x =>
                                                                                          x.TeamMatchPlayers.Any(z => z.PlayerId == player.Id)))
                                             .OrderByDescending(p => p.Timestamp).Take(top).OrderByDescending(w => w.Timestamp).ToList();

                //if (playerMatches.Count == top)
                //{
                List <TeamMatch> tmList = new List <TeamMatch>();
                foreach (Match pm in playerMatches)
                {
                    foreach (TeamMatch tm in pm.TeamMatches)
                    {
                        var tmp = tm.TeamMatchPlayers.FirstOrDefault(w => w.PlayerId == player.Id);
                        if (tmp != null)
                        {
                            if (tmp.TeamMatch.Result == 0)
                            {
                                result = false;
                                int t = (top - i);
                                comment = "Brakuje " + t + " " + GramaticHelper(t) + " z rzędu do kolejnego poziomu";
                                break;
                            }
                            else
                            {
                                i++;
                            }
                        }
                    }
                    if (!result)
                    {
                        break;
                    }
                }
                //}
                //else
                //{
                //    int t = top - playerMatches.Count;
                //    comment = "Brakuje " + t + " " + GramaticHelper(t) + " z rzędu do kolejnego poziomu";
                //    return false;
                //}


                if (comment == "")
                {
                    if (level < 3)
                    {
                        if (i > 0)
                        {
                            comment = "Brakuje " + (nextStep - i) + " " + GramaticHelper(nextStep - i) + " z rzędu do kolejnego poziomu";
                        }
                        else
                        {
                            comment = "Brakuje " + nextStep + " " + GramaticHelper(nextStep) + " z rzędu do kolejnego poziomu";
                        }
                    }
                    else
                    {
                        comment = "Zdobyto najwyższy poziom w tym osiągnięciu";
                    }
                }

                if (top == i && result)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                int          j = 0;
                int          winsAtTheBeginning = 0;
                bool         lost          = false;
                List <Match> playerMatches = context.Matches.Where(p => p.TeamMatches.Any(x =>
                                                                                          x.TeamMatchPlayers.Any(z => z.PlayerId == player.Id)))
                                             .OrderByDescending(p => p.Timestamp).ToList();

                //if (playerMatches.Count >= top)
                //{
                List <TeamMatch> tmList = new List <TeamMatch>();
                foreach (Match pm in playerMatches)
                {
                    for (int counter = 0; counter < pm.TeamMatches.Count; counter++)
                    {
                        TeamMatch tm  = pm.TeamMatches[counter];
                        var       tmp = tm.TeamMatchPlayers.FirstOrDefault(w => w.PlayerId == player.Id);
                        if (tmp != null)
                        {
                            if (tmp.TeamMatch.Result == 1)
                            {
                                i++;
                                if (!lost)
                                {
                                    winsAtTheBeginning++;
                                }
                                if (i >= top)
                                {
                                    j = i;
                                }
                            }
                            else
                            {
                                i = 0;
                                if (!lost)
                                {
                                    lost = true;
                                }
                            }
                        }
                    }
                }


                if (comment == "")
                {
                    if (level < 3)
                    {
                        if (winsAtTheBeginning > top || j > 0)
                        {
                            int t = top + nextStep - winsAtTheBeginning;
                            comment = "Brakuje " + t + " " + GramaticHelper(t) + " z rzędu do kolejnego poziomu";
                        }
                        else if (j == 0)
                        {
                            if (winsAtTheBeginning > 0)
                            {
                                int t = top - winsAtTheBeginning;
                                comment = "Brakuje " + t + " " + GramaticHelper(t) + " z rzędu do kolejnego poziomu";
                            }
                            else if (winsAtTheBeginning == 0)
                            {
                                comment = "Brakuje " + top + " " + GramaticHelper(top) + " z rzędu do kolejnego poziomu";
                            }
                        }
                    }
                    else
                    {
                        comment = "Zdobyto najwyższy poziom w tym osiągnięciu";
                    }
                }
                if (top <= j)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
                //}
                //else
                //{
                //    int t = top - playerMatches.Count;
                //    comment = "Brakuje " + t + " " + GramaticHelper(t) + " z rzędu do kolejnego poziomu";
                //    return false;
                //}
            }
        }
Ejemplo n.º 31
0
 public override bool CalculateLevel3(bool firstTime, Player player, Achievement achievement, TrambambuleDBContextDataContext context, out string comment)
 {
     return(CalculateGoalsScored(firstTime, player, achievement, context, 3, 2500, 500, out comment));
 }
Ejemplo n.º 32
0
        private bool CalculateGoalsScored(bool firstTime, Player player, Achievement achievement, TrambambuleDBContextDataContext context, int level, int top, int nextStep, out string comment)
        {
            comment = "";
            int          i             = 0;
            List <Match> playerMatches = context.Matches.Where(p => p.TeamMatches.Any(x =>
                                                                                      x.TeamMatchPlayers.Any(z => z.PlayerId == player.Id))).ToList();

            if (playerMatches.Any())
            {
                foreach (Match pm in playerMatches)
                {
                    foreach (TeamMatch tm in pm.TeamMatches)
                    {
                        var tmp = tm.TeamMatchPlayers.FirstOrDefault(w => w.PlayerId == player.Id);
                        if (tmp != null)
                        {
                            i += tmp.TeamMatch.GoalsScored;
                        }
                    }
                }
            }


            if (i == top)
            {
                if (level < 3)
                {
                    comment = "Brakuje " + nextStep + " " + GramaticHelper(nextStep) + " z rzędu do kolejnego poziomu";
                }
                else
                {
                    comment = "Zdobyto najwyższy poziom w tym osiągnięciu";
                }

                return(true);
            }
            else if (i > top)
            {
                if (level < 3)
                {
                    int t = top + nextStep - i;
                    comment = "Brakuje " + t + " " + GramaticHelper(t) + " do kolejnego poziomu";
                }
                else
                {
                    comment = "Zdobyto najwyższy poziom w tym osiągnięciu";
                }
            }
            else
            {
                int t = top - i;
                comment = "Brakuje " + t + " " + GramaticHelper(t) + " do kolejnego poziomu";
                return(false);
            }

            if (i >= top)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
        private void BindPlayerStats()
        {
            Player player = ((Player)Session["UserBasicStatsPlayer"]);
            if (player == null) return;

            using (TrambambuleDBContextDataContext context = new TrambambuleDBContextDataContext())
            {
                List<TeamMatch> playerMatches = context.TeamMatches.Where(p =>
                    p.TeamMatchPlayers.Any(x => x.PlayerId == player.Id)).ToList();
                StringBuilder sb = new StringBuilder();

                List<TeamMatch> lastGames = playerMatches.OrderByDescending(p => p.Timestamp).ToList();
                if(lastGames.Any())
                {
                    TeamMatchPlayer playerData = lastGames.First().TeamMatchPlayers.First(p => p.PlayerId == player.Id);
                    sb.AppendLine("Obecna pozycja w rankingu: " + context.GetPlayerRankPosition(player.Id));
                    sb.AppendLine("Punkty rankingowe: " + (playerData.Rating.HasValue
                        ? ((int)playerData.Rating.Value).ToString() : string.Empty));
                    string form = string.Empty;
                    foreach (TeamMatch tm in lastGames.Take(15).ToList())
                        form += GetMatchResultLabel(tm);
                    sb.AppendLine("Forma: " + form);
                    sb.Append("<hr/>");
                }

                //sb.AppendLine("Rozegranych: " + playerMatches.Select(p => new { Mid = p.MatchId }).Distinct().Count());
                sb.AppendLine("Bilans W/R/P: "
                    + playerMatches.Select(p => new { Mid = p.MatchId, Result = p.Result }).Distinct().Count(p => p.Result == (int)Common.EResult.Win) + " / "
                    + playerMatches.Select(p => new { Mid = p.MatchId, Result = p.Result }).Distinct().Count(p => p.Result == (int)Common.EResult.Draw) + " / "
                    + playerMatches.Select(p => new { Mid = p.MatchId, Result = p.Result }).Distinct().Count(p => p.Result == (int)Common.EResult.Loose));

                sb.AppendLine("Bilans W/R/P [atak]: "
                    + playerMatches.Count(p => p.Result == (int)Common.EResult.Win
                    && p.TeamMatchPlayers.First(x => x.PlayerId == player.Id).Position == (byte)Common.EPosition.Offence) + " / "
                    + playerMatches.Count(p => p.Result == (int)Common.EResult.Draw
                    && p.TeamMatchPlayers.First(x => x.PlayerId == player.Id).Position == (byte)Common.EPosition.Offence) + " / "
                    + playerMatches.Count(p => p.Result == (int)Common.EResult.Loose
                    && p.TeamMatchPlayers.First(x => x.PlayerId == player.Id).Position == (byte)Common.EPosition.Offence));

                sb.AppendLine("Bilans W/R/P [obrona]: " + playerMatches.Count(p => p.Result == (int)Common.EResult.Win
                    && p.TeamMatchPlayers.First(x => x.PlayerId == player.Id).Position == (byte)Common.EPosition.Defence) + " / "
                    + playerMatches.Count(p => p.Result == (int)Common.EResult.Draw
                    && p.TeamMatchPlayers.First(x => x.PlayerId == player.Id).Position == (byte)Common.EPosition.Defence) + " / "
                    + playerMatches.Count(p => p.Result == (int)Common.EResult.Loose
                    && p.TeamMatchPlayers.First(x => x.PlayerId == player.Id).Position == (byte)Common.EPosition.Defence));

                sb.AppendLine("Bilans bramek: "
                    + playerMatches.Select(p => new { Mid = p.MatchId, GoalsScored = p.GoalsScored }).Distinct().Sum(p => p.GoalsScored)
                    + " / "
                    + playerMatches.Select(p => new { Mid = p.MatchId, GoalsLost = p.GoalsLost }).Distinct().Sum(p => p.GoalsLost));

                var achievements = (from ap in context.AchievementPlayer
                                   join p in context.Players
                                   on ap.PlayerId equals p.Id
                                   join a in context.Achievements
                                   on ap.AchievementId equals a.Id
                                   where p.Id == player.Id
                                    select new PlayerWithAchievement(p, ap.LevelOfAchievement, ap.ToNextLevelLabel, a)).ToList();

                if (achievements.Any())
                {
                    sb.AppendLine("<hr/>Osiągnięcia:");
                    for (int i = 0; i < achievements.Count; i++)
                    {
                        var ach = achievements[i];
                        //if (ach.LevelOfAchievement>0)
                        //    sb.AppendFormat("{0}. Poziom {1} ({2}) w osiągnięciu \"{3}\".<br/>", (i + 1).ToString(), Common.GetAchievementsLevelName(ach.LevelOfAchievement), GetLabel(ach.LevelOfAchievement, ach.Achievement), ach.Achievement.Title);
                        //else
                        //    sb.AppendFormat("{0}. Nie zdobyto jeszcze żadnego poziomu w osiągnięciu \"{2}\". {3}.", (i+1).ToString(),

                        if (ach.LevelOfAchievement > 0)
                            sb.AppendFormat("<b>{0}. {1}</b><br/>Poziom {2}: {3}.<br/>{4}.<br/>", (i + 1).ToString(), ach.Achievement.Title, Common.GetAchievementsLevelName(ach.LevelOfAchievement), GetLabel(ach.LevelOfAchievement, ach.Achievement), GetTextWithAnchors(ach.ToNextLevelLabel));
                        else
                            sb.AppendFormat("<b>{0}. {1}</b><br/>Nie osiągnięto jeszcze żadnego poziomu.<br/>{2}.<br/>",(i + 1).ToString(), ach.Achievement.Title, GetTextWithAnchors(ach.ToNextLevelLabel));
                    }
                    sb.Append("<hr/>");
                }

                sb = sb.Replace(Environment.NewLine, "<br/>");

                lblStatsDetails.Text = sb.ToString();
            }
        }
Ejemplo n.º 34
0
        public static List <BestStat> CalculateBestStats()
        {
            List <BestStat> bestStats = new List <BestStat>();

            //Wins as a defender
            int    currentResult_WinsAsADefender    = 0;
            int    finalResult_LeastWinsAsADefender = 999999;
            int    finalResult_MostWinsAsADefender  = 0;
            Player finalPlayer_LeastWinsAsADefender = null;
            Player finalPlayer_MostWinsAsADefender  = null;

            //Wins as an attacker
            int    currentResult_WinsAsAnAttacker    = 0;
            int    finalResult_LeastWinsAsAnAttacker = 999999;
            int    finalResult_MostWinsAsAnAttacker  = 0;
            Player finalPlayer_LeastWinsAsAnAttacker = null;
            Player finalPlayer_MostWinsAsAnAttacker  = null;

            //Overall wins
            int    currentResult_Wins    = 0;
            int    finalResult_LeastWins = 999999;
            int    finalResult_MostWins  = 0;
            Player finalPlayer_LeastWins = null;
            Player finalPlayer_MostWins  = null;

            //Goals Balance
            int    currentResult_GoalsBalance    = 0;
            int    finalResult_WorstGoalsBalance = 999999;
            int    finalResult_BestGoalsBalance  = 0;
            Player finalPlayer_WorstGoalsBalance = null;
            Player finalPlayer_BestGoalsBalance  = null;

            //Percent of wins
            int    finalResult_LowestPercentOfWins = 999999;
            int    finalResult_TopPercentOfWins    = 0;
            Player finalPlayer_LowestPercentOfWins = null;
            Player finalPlayer_TopPercentOfWins    = null;

            //Total games played
            int    currentResult_GamesPlayed    = 0;
            int    finalResult_LeastGamesPlayed = 999999;
            int    finalResult_MostGamesPlayed  = 0;
            Player finalPlayer_LeastGamesPlayed = null;
            Player finalPlayer_MostGamesPlayed  = null;

            var players = DataAccess.GetPlayers();

            using (TrambambuleDBContextDataContext context = new TrambambuleDBContextDataContext())
            {
                try
                {
                    foreach (Player player in players)
                    {
                        currentResult_WinsAsADefender  = 0;
                        currentResult_WinsAsAnAttacker = 0;
                        currentResult_Wins             = 0;
                        currentResult_GoalsBalance     = 0;
                        currentResult_GamesPlayed      = 0;

                        List <Match> playerMatches = context.Matches.Where(p => p.TeamMatches.Any(x =>
                                                                                                  x.TeamMatchPlayers.Any(z => z.PlayerId == player.Id))).ToList();

                        if (playerMatches != null && playerMatches.Count > 0)
                        {
                            foreach (Match pm in playerMatches)
                            {
                                foreach (TeamMatch tm in pm.TeamMatches)
                                {
                                    var tmp = tm.TeamMatchPlayers.FirstOrDefault(w => w.PlayerId == player.Id);
                                    if (tmp != null)
                                    {
                                        if (tmp.TeamMatch.Result == (int)Common.EResult.Win && tmp.Position == (int)Common.EPosition.Defence)
                                        {
                                            //Wins as a defender
                                            currentResult_WinsAsADefender++;
                                        }

                                        if (tmp.TeamMatch.Result == (int)Common.EResult.Win && tmp.Position == (int)Common.EPosition.Offence)
                                        {
                                            //Wins as an attacker
                                            currentResult_WinsAsAnAttacker++;
                                        }

                                        if (tmp.TeamMatch.Result == (int)Common.EResult.Win)
                                        {
                                            //Overall wins
                                            currentResult_Wins++;
                                        }

                                        //Goals Balance
                                        currentResult_GoalsBalance += tmp.TeamMatch.GoalsScored;
                                        currentResult_GoalsBalance -= tmp.TeamMatch.GoalsLost;
                                    }
                                }
                            }

                            if (currentResult_WinsAsADefender < finalResult_LeastWinsAsADefender)
                            {
                                //LeastWinsAsADefender
                                finalResult_LeastWinsAsADefender = currentResult_WinsAsADefender;
                                finalPlayer_LeastWinsAsADefender = player;
                            }
                            if (currentResult_WinsAsADefender > finalResult_MostWinsAsADefender)
                            {
                                //MostWinsAsADefender
                                finalResult_MostWinsAsADefender = currentResult_WinsAsADefender;
                                finalPlayer_MostWinsAsADefender = player;
                            }


                            if (currentResult_WinsAsAnAttacker < finalResult_LeastWinsAsAnAttacker)
                            {
                                //LeastWinsAsAnAttacker
                                finalResult_LeastWinsAsAnAttacker = currentResult_WinsAsAnAttacker;
                                finalPlayer_LeastWinsAsAnAttacker = player;
                            }
                            if (currentResult_WinsAsAnAttacker > finalResult_MostWinsAsAnAttacker)
                            {
                                //MostWinsAsAnAttacker
                                finalResult_MostWinsAsAnAttacker = currentResult_WinsAsAnAttacker;
                                finalPlayer_MostWinsAsAnAttacker = player;
                            }


                            if (currentResult_Wins < finalResult_LeastWins)
                            {
                                //LeasttWins
                                finalResult_LeastWins = currentResult_Wins;
                                finalPlayer_LeastWins = player;
                            }
                            if (currentResult_Wins > finalResult_MostWins)
                            {
                                //MostWins
                                finalResult_MostWins = currentResult_Wins;
                                finalPlayer_MostWins = player;
                            }


                            if (currentResult_GoalsBalance < finalResult_WorstGoalsBalance)
                            {
                                //WorstGoalsBalance
                                finalResult_WorstGoalsBalance = currentResult_GoalsBalance;
                                finalPlayer_WorstGoalsBalance = player;
                            }
                            if (currentResult_GoalsBalance > finalResult_BestGoalsBalance)
                            {
                                //BestGoalsBalance
                                finalResult_BestGoalsBalance = currentResult_GoalsBalance;
                                finalPlayer_BestGoalsBalance = player;
                            }


                            int current_PercentOfWins = (int)Math.Round((float)((float)currentResult_Wins / (float)playerMatches.Count) * 100, 0);
                            if (current_PercentOfWins < finalResult_LowestPercentOfWins)
                            {
                                //LowestPercentOfWins
                                finalResult_LowestPercentOfWins = current_PercentOfWins;
                                finalPlayer_LowestPercentOfWins = player;
                            }
                            if (current_PercentOfWins > finalResult_TopPercentOfWins)
                            {
                                //TopPercentOfWins
                                finalResult_TopPercentOfWins = current_PercentOfWins;
                                finalPlayer_TopPercentOfWins = player;
                            }

                            currentResult_GamesPlayed = playerMatches.Count;
                            if (currentResult_GamesPlayed < finalResult_LeastGamesPlayed)
                            {
                                //LeastGamesPlayed
                                finalResult_LeastGamesPlayed = currentResult_GamesPlayed;
                                finalPlayer_LeastGamesPlayed = player;
                            }
                            if (currentResult_GamesPlayed > finalResult_MostGamesPlayed)
                            {
                                //MostGamesPlayed
                                finalResult_MostGamesPlayed = currentResult_GamesPlayed;
                                finalPlayer_MostGamesPlayed = player;
                            }
                        }
                    }


                    bestStats.Add(new BestStat(finalPlayer_MostWins, finalResult_MostWins, "Najwięcej zwycięstw"));
                    bestStats.Add(new BestStat(finalPlayer_LeastWins, finalResult_LeastWins, "Najmniej zwycięstw"));

                    bestStats.Add(new BestStat(finalPlayer_MostWinsAsAnAttacker, finalResult_MostWinsAsAnAttacker, "Najwięcej zwycięstw grając w ataku"));
                    bestStats.Add(new BestStat(finalPlayer_LeastWinsAsAnAttacker, finalResult_LeastWinsAsAnAttacker, "Najmniej zwycięstw grając w ataku"));

                    bestStats.Add(new BestStat(finalPlayer_MostWinsAsADefender, finalResult_MostWinsAsADefender, "Najwięcej zwycięstw grając w obronie"));
                    bestStats.Add(new BestStat(finalPlayer_LeastWinsAsADefender, finalResult_LeastWinsAsADefender, "Najmniej zwycięstw grając w obronie"));

                    bestStats.Add(new BestStat(finalPlayer_MostGamesPlayed, finalResult_MostGamesPlayed, "Najwięcej rozegranych meczów"));
                    bestStats.Add(new BestStat(finalPlayer_LeastGamesPlayed, finalResult_LeastGamesPlayed, "Najmniej rozegranych meczów"));

                    bestStats.Add(new BestStat(finalPlayer_BestGoalsBalance, finalResult_BestGoalsBalance, "Najlepszy bilans bramek"));
                    bestStats.Add(new BestStat(finalPlayer_WorstGoalsBalance, finalResult_WorstGoalsBalance, "Najgorszy bilans bramek"));

                    bestStats.Add(new BestStat(finalPlayer_TopPercentOfWins, finalResult_TopPercentOfWins, "Największy procent wygranych"));
                    bestStats.Add(new BestStat(finalPlayer_LowestPercentOfWins, finalResult_LowestPercentOfWins, "Najmniejszy procent wygranych"));
                }
                catch { }
            }


            return(bestStats);
        }