コード例 #1
0
        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();
            }
        }
コード例 #2
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);
        }