public CustomGroupings(MessageQueue message, string groupName) { InitializeComponent(); _message = message; _tDescription = new TankDescriptions(_message); _cDescription = new CountryDescriptions(_message); _typeDescription = new TankTypeDescription(_message); _customGrouping = new CustomGrouping(_message); _ID = groupName.Replace(" ", "_"); txtGroupName.Text = _customGrouping.Description(_ID); ListViewSettings(); }
public CustomGroupings(MessageQueue message) { InitializeComponent(); _message = message; _tDescription = new TankDescriptions(_message); _cDescription = new CountryDescriptions(_message); _typeDescription = new TankTypeDescription(_message); _ID = ""; ListViewSettings(); }
public GraphSetup(MessageQueue message, string graphID) { InitializeComponent(); _message = message; _ID = graphID; //textName.Text = graphName; //textName.Enabled = false; _tDescription = new TankDescriptions(_message); _cDescription = new CountryDescriptions(_message); _typeDescription = new TankTypeDescription(_message); _graphSettings = new GraphsSettings(_message); ListViewSettings(); LoadSettings(); }
public GraphSetup(MessageQueue message) { InitializeComponent(); _message = message; _tDescription = new TankDescriptions(_message); _cDescription = new CountryDescriptions(_message); _typeDescription = new TankTypeDescription(_message); _graphSettings = new GraphsSettings(_message); helpProvider1.HelpNamespace = Path.Combine(WOTHelper.GetEXEPath(), "Help", "WoT_Stats.chm"); helpProvider1.SetHelpNavigator(this, HelpNavigator.TopicId); helpProvider1.SetHelpKeyword(this, "520"); ListViewSettings(); LoadSettings(); }
private string TierEfficiency(WOTStats stats, WOTStats prevStats) { TankTypeDescription tankTypes = new TankTypeDescription(_message); string html = @"<table class=o width=100%> <thead> </thead> <tbody> <tr> <th align=center><strong>" + Translations.TranslationGet("HTML_HEAD_TIER", "DE", "Tier") + @"</strong></th> <th align=center><strong>" + Translations.TranslationGet("HTML_HEAD_TANKCOUNT", "DE", "Tank Count") + @"</strong></th> <th align=center><strong>" + Translations.TranslationGet("HTML_HEAD_BATTLES", "DE", "Battles") + @"</strong></th> <th align=center><strong>" + Translations.TranslationGet("HTML_HEAD_DELTA", "DE", "Delta") + @"</strong></th> <th align=center><strong>" + Translations.TranslationGet("STR_WN7_Caption", "DE", "WN7") + @"</strong></th> <th align=center><strong>" + Translations.TranslationGet("HTML_HEAD_DELTA", "DE", "Delta") + @"</strong></th> </tr>"; for (int i = 1; i <= 10; i++) { double frags = (from x in stats.tanks where x.Tier == i select x.Data.Frags).Sum(); double victories = (from x in stats.tanks where x.Tier == i select x.Data.Victories).Sum(); double victoriesPercentage = (from x in stats.tanks where x.Tier == i select x.Data.VictoryPercentage).Sum(); double damage = (from x in stats.tanks where x.Tier == i select x.Data.DamageDealt).Sum(); double damageAssistedRadio = (from x in stats.tanks where x.Tier == i select x.Data.DamageAssistedRadio).Sum(); double damageAssistedTrack = (from x in stats.tanks where x.Tier == i select x.Data.DamageAssistedTracks).Sum(); double spotted = (from x in stats.tanks where x.Tier == i select x.Data.Spotted).Sum(); double defence = (from x in stats.tanks where x.Tier == i select x.Data.DefencePoints).Sum(); double capture = (from x in stats.tanks where x.Tier == i select x.Data.CapturePoints).Sum(); double battles = (from x in stats.tanks where x.Tier == i select x.Data.BattlesCount).Sum(); double tanksPerTier = stats.tanks.Where(x => x.Tier == i).Count(); RatingStructure ratingStructs = new RatingStructure(); ratingStructs.countryID = 0; ratingStructs.tankID = 0; ratingStructs.tier = stats.AverageTier; ratingStructs.globalTier = ratingStructs.tier; ratingStructs.singleTank = false; ratingStructs.battlesCount = Convert.ToInt32(battles); ratingStructs.battlesCount8_8 = 0; ratingStructs.capturePoints = capture; ratingStructs.defencePoints = defence; ratingStructs.damageAssistedRadio = damageAssistedRadio; ratingStructs.damageAssistedTracks = damageAssistedTrack; ratingStructs.damageDealt = damage; ratingStructs.frags = frags; ratingStructs.spotted = spotted; ratingStructs.wins=victories; ratingStructs.gWinRate = ratingStructs.winRate; double efficiency = WOTStatistics.Core.Ratings.GetRatingWN7(ratingStructs).Value; //double efficiency = -64323; //ScriptWrapper.GetEFFValue(battles, damage, i, frags, spotted, capture, defence, victoriesPercentage, true, stats.AverageTier, stats.AverageDefencePoints, stats.BattlesCount, damageAssistedRadio, damageAssistedTrack); double prevFrags = (from x in prevStats.tanks where x.Tier == i select x.Data.Frags).Sum(); double prevVictories = (from x in prevStats.tanks where x.Tier == i select x.Data.Victories).Sum(); double prevVictoriesPercentage = (from x in prevStats.tanks where x.Tier == i select x.Data.VictoryPercentage).Sum(); double prevDamage = (from x in prevStats.tanks where x.Tier == i select x.Data.DamageDealt).Sum(); double prevDamageAssistedRadio = (from x in prevStats.tanks where x.Tier == i select x.Data.DamageAssistedRadio).Sum(); double prevDamageAssistedTrack = (from x in prevStats.tanks where x.Tier == i select x.Data.DamageAssistedTracks).Sum(); double prevSpotted = (from x in prevStats.tanks where x.Tier == i select x.Data.Spotted).Sum(); double prevDefence = (from x in prevStats.tanks where x.Tier == i select x.Data.DefencePoints).Sum(); double prevCapture = (from x in prevStats.tanks where x.Tier == i select x.Data.CapturePoints).Sum(); double prevBattles = (from x in prevStats.tanks where x.Tier == i select x.Data.BattlesCount).Sum(); //double prevEfficiency = -6343; //ScriptWrapper.GetEFFValue(prevBattles, prevDamage, i, prevFrags, prevSpotted, prevCapture, prevDefence, prevVictoriesPercentage, true, stats.AverageTier, stats.AverageDefencePoints, stats.BattlesCount, prevDamageAssistedRadio, prevDamageAssistedTrack); //double prevEfficiency = ScriptWrapper.GetEFFValue(prevBattles, prevDamage, i, prevFrags, prevSpotted, prevCapture, prevDefence, (prevVictories / prevBattles) * 100, true, stats.AverageTier, stats.AverageDefencePoints, stats.BattlesCount); ratingStructs.countryID = 0; ratingStructs.tankID = 0; ratingStructs.tier = stats.AverageTier; ratingStructs.globalTier = ratingStructs.tier; ratingStructs.singleTank = false; ratingStructs.battlesCount = Convert.ToInt32(prevBattles); ratingStructs.battlesCount8_8 = 0; ratingStructs.capturePoints = prevCapture; ratingStructs.defencePoints = prevDefence; ratingStructs.damageAssistedRadio = prevDamageAssistedRadio; ratingStructs.damageAssistedTracks = prevDamageAssistedTrack; ratingStructs.damageDealt = prevDamage; ratingStructs.frags = prevFrags; ratingStructs.spotted = prevSpotted; ratingStructs.wins=prevVictories; ratingStructs.gWinRate = ratingStructs.winRate; double prevEfficiency = WOTStatistics.Core.Ratings.GetRatingWN7(ratingStructs).Value; //var answer = stats.tanks.Where(x => x.Tier == i).Select(x => new { tankid = x.CountryID + "_" + x.TankID, Tier = x.Tier, TotalEff = x.Data.BattlesCount * x.Efficiency }).Sum(y => y.TotalEff) / stats.tanks.Where(x => x.Tier == i).Sum(y => y.Data.BattlesCount); //var answer = stats.tanks.Where(x => x.Tier == i).Select(x => new { tankid = x.CountryID + "_" + x.TankID, Tier = x.Tier, TotalEff = x.Data.BattlesCount * x.Efficiency }).Sum(y => y.TotalEff); //var answer = stats.tanks.Where(x => x.Tier == i).Select(x => new { tankid = x.CountryID + "_" + x.TankID, Tier = x.Tier, TotalEff = x.Data.BattlesCount * x.Efficiency }); //var answer = stats.tanks.Where(x => x.Tier == i).Select(x => new { tankid = x.CountryID + "_" + x.TankID, Tier = x.Tier, Battles = x.Data.BattlesCount, Eff = x.Efficiency }); //<td class='td-1' align=right width=auto>" + WOTHelper.FormatNumberToString((stats.tanks.Where(x => x.Tier == i).Sum(y => y.Efficiency) / stats.tanks.Where(x => x.Tier == i).Count()), 2) + @"</td> //<td class='td-1' align=right width=auto>" + GetDelta((delta.tanks.Where(x => x.Tier == i).Sum(y => y.Efficiency) / delta.tanks.Where(x => x.Tier == i).Count()), "", 2) + @"</td> html += @"<tr> <td class='td-1' align=center width=auto>" + GetRoman(i) + @"</td> <td class='td-1' align=center width=auto>" + WOTHelper.FormatNumberToString(tanksPerTier, 0) + @"</td> <td class='td-1' align=center width=auto>" + WOTHelper.FormatNumberToString(battles, 0) + @"</td> <td class='td-1' align=center width=auto>" + GetDelta(battles - prevBattles, "", 0) + @"</td> <td class='td-1' align=right width=auto>" + WOTHelper.FormatNumberToString(efficiency, 2) + @"</td> <td class='td-1' align=right width=auto>" + GetDelta(efficiency - prevEfficiency, "", 2) + @"</td> </tr>"; } // html += @"</tbody> </table>"; return html; }
private string TankTypeStats(WOTStats stats, WOTStats prevStats, WOTStatsDelta delta) { using (TankTypeDescription tankTypes = new TankTypeDescription(_message)) { string html = @"<table class=o width=100%> <thead> </thead> <tbody> <tr> <th align=center><strong>" + Translations.TranslationGet("HTML_HEAD_VEHICLECLASS", "DE", "Vehicle Class") + @"</strong></th> <th align=center><strong>" + Translations.TranslationGet("HTML_HEAD_BATTLES", "DE", "Battles") + @"</strong></th> <th align=center><strong>" + Translations.TranslationGet("HTML_HEAD_DELTA", "DE", "Delta") + @"</strong></th> <th align=center><strong>" + Translations.TranslationGet("HTML_CONT_VICTORIES", "DE", "Victories") + @"</strong></th> <th align=center><strong>" + Translations.TranslationGet("HTML_HEAD_DELTA", "DE", "Delta") + @"</strong></th> <th align=center><strong>" + Translations.TranslationGet("HTML_CONT_DEFEATS", "DE", "Defeats") + @"</strong></th> <th align=center><strong>" + Translations.TranslationGet("HTML_HEAD_DELTA", "DE", "Delta") + @"</strong></th> <th align=center><strong>" + Translations.TranslationGet("HTML_CONT_DRAWS", "DE", "Draws") + @"</strong></th> <th align=center><strong>" + Translations.TranslationGet("HTML_HEAD_DELTA", "DE", "Delta") + @"</strong></th> <th align=center><strong>" + Translations.TranslationGet("HTML_HEAD_LASTPLAY", "DE", "Last Played") + @"</strong></th> <th align=center><strong>" + Translations.TranslationGet("HTML_CONT_KILLS", "DE", "Kills") + @"</strong></th> <th align=center><strong>" + Translations.TranslationGet("HTML_HEAD_DELTA", "DE", "Delta") + @"</strong></th> <th align=center><strong>" + Translations.TranslationGet("HTML_CONT_DMGCAUSED", "DE", "Damage Dealt") + @"</strong></th> <th align=center><strong>" + Translations.TranslationGet("HTML_HEAD_DELTA", "DE", "Delta") + @"</strong></th> <th align=center><strong>" + Translations.TranslationGet("HTML_CONT_DMGASSRADIO", "DE", "Damage Assisted Radio") + @"</strong></th> <th align=center><strong>" + Translations.TranslationGet("HTML_HEAD_DELTA", "DE", "Delta") + @"</strong></th> <th align=center><strong>" + Translations.TranslationGet("HTML_CONT_DMGASSTRACK", "DE", "Damage Assisted Track") + @"</strong></th> <th align=center><strong>" + Translations.TranslationGet("HTML_HEAD_DELTA", "DE", "Delta") + @"</strong></th> <th align=center><strong>" + Translations.TranslationGet("HTML_CONT_DMGREC", "DE", "Damage Received") + @"</strong></th> <th align=center><strong>" + Translations.TranslationGet("HTML_HEAD_DELTA", "DE", "Delta") + @"</strong></th> <th align=center><strong>" + Translations.TranslationGet("STR_WN7_Caption", "DE", "WN7") + @"</strong></th> <th align=center><strong>" + Translations.TranslationGet("HTML_HEAD_DELTA", "DE", "Delta") + @"</strong></th> </tr>"; foreach (KeyValuePair<string, string> tankType in tankTypes) { double tier = 0; for (int i = 1; i <= 10; i++) { double var = (from x in stats.tanks where x.Tier == i && x.TankClass == tankType.Key select x.Data.BattlesCount).Sum() * i; tier += var; } double frags = (from x in stats.tanks where x.TankClass == tankType.Key select x.Data.Frags).Sum(); double victories = (from x in stats.tanks where x.TankClass == tankType.Key select x.Data.Victories).Sum(); double defeats = (from x in stats.tanks where x.TankClass == tankType.Key select x.Data.Defeats).Sum(); double draws = (from x in stats.tanks where x.TankClass == tankType.Key select x.Data.Draws).Sum(); double damage = (from x in stats.tanks where x.TankClass == tankType.Key select x.Data.DamageDealt).Sum(); double damageAssistedRadio = (from x in stats.tanks where x.TankClass == tankType.Key select x.Data.DamageAssistedRadio).Sum(); double damageAssistedTrack = (from x in stats.tanks where x.TankClass == tankType.Key select x.Data.DamageAssistedTracks).Sum(); double damageReceived = (from x in stats.tanks where x.TankClass == tankType.Key select x.Data.DamageReceived).Sum(); double spotted = (from x in stats.tanks where x.TankClass == tankType.Key select x.Data.Spotted).Sum(); double defence = (from x in stats.tanks where x.TankClass == tankType.Key select x.Data.DefencePoints).Sum(); double capture = (from x in stats.tanks where x.TankClass == tankType.Key select x.Data.CapturePoints).Sum(); double battles = (from x in stats.tanks where x.TankClass == tankType.Key select x.Data.BattlesCount).Sum(); //double efficiency = (frags * (350.0 - (Math.Round(tier / battles, 2)) * 20.0) + damage * (0.2 + 1.5 / (Math.Round(tier / battles, 2))) + 200.0 * spotted + 150.0 * defence + 150.0 * capture) / battles; //double efficiency = ((damage / battles) * (10 / (Math.Round(tier / battles, 2) + 2)) * (0.23 + 2 * Math.Round(tier / battles, 2) / 100)) + ((frags / battles) * 250) + ((spotted / battles) * 150) + ((Math.Log((capture / battles) + 1, 1.732)) * 150) + ((defence / battles) * 150); RatingStructure ratingStructs = new RatingStructure(); ratingStructs.countryID =0; ratingStructs.tankID = 0; ratingStructs.tier = tier; ratingStructs.globalTier = tier; ratingStructs.singleTank = false; ratingStructs.battlesCount = Convert.ToInt32(battles); ratingStructs.battlesCount8_8 = 0; ratingStructs.capturePoints = capture; ratingStructs.defencePoints = defence; ratingStructs.damageAssistedRadio = damageAssistedRadio; ratingStructs.damageAssistedTracks = damageAssistedTrack; ratingStructs.damageDealt = damage; ratingStructs.frags = frags; ratingStructs.spotted = spotted; ratingStructs.wins=victories; ratingStructs.gWinRate = ratingStructs.winRate; double efficiency = WOTStatistics.Core.Ratings.GetRatingWN7(ratingStructs).Value; //ScriptWrapper.GetEFFValue(battles, damage, Math.Round(tier / battles, 2), frags, spotted, capture, defence, (victories / battles) * 100, true, stats.AverageTier, stats.AverageDefencePoints, stats.BattlesCount, damageAssistedRadio, damageAssistedTrack); //double delTier = 0; //for (int i = 1; i <= 10; i++) //{ //double delVar = (from x in delta.tanks // where x.Tier == i && x.TankClass == tankType.Key // select x.Data.BattlesCount).Sum() * i; //delTier += delVar; //} //double delFrags = (from x in delta.tanks // where x.TankClass == tankType.Key // select x.Data.Frags).Sum(); //double delDamage = (from x in delta.tanks // where x.TankClass == tankType.Key // select x.Data.DamageDealt).Sum(); //double delSpotted = (from x in delta.tanks // where x.TankClass == tankType.Key // select x.Data.Spotted).Sum(); //double delDefence = (from x in delta.tanks // where x.TankClass == tankType.Key // select x.Data.DefencePoints).Sum(); //double delCapture = (from x in delta.tanks // where x.TankClass == tankType.Key // select x.Data.CapturePoints).Sum(); //double delBattles = (from x in delta.tanks // where x.TankClass == tankType.Key // select x.Data.BattlesCount).Sum(); double prevTier = 0; for (int i = 1; i <= 10; i++) { double prevVar = (from x in prevStats.tanks where x.Tier == i && x.TankClass == tankType.Key select x.Data.BattlesCount).Sum() * i; prevTier += prevVar; } double prevFrags = (from x in prevStats.tanks where x.TankClass == tankType.Key select x.Data.Frags).Sum(); double prevVictories = (from x in prevStats.tanks where x.TankClass == tankType.Key select x.Data.Victories).Sum(); double prevDefeats = (from x in prevStats.tanks where x.TankClass == tankType.Key select x.Data.Defeats).Sum(); double prevDraws = (from x in prevStats.tanks where x.TankClass == tankType.Key select x.Data.Draws).Sum(); double prevDamage = (from x in prevStats.tanks where x.TankClass == tankType.Key select x.Data.DamageDealt).Sum(); double prevDamageAssistedRadio = (from x in prevStats.tanks where x.TankClass == tankType.Key select x.Data.DamageAssistedRadio).Sum(); double prevDamageAssistedTrack = (from x in prevStats.tanks where x.TankClass == tankType.Key select x.Data.DamageAssistedTracks).Sum(); double prevDamageReceived = (from x in prevStats.tanks where x.TankClass == tankType.Key select x.Data.DamageReceived).Sum(); double prevSpotted = (from x in prevStats.tanks where x.TankClass == tankType.Key select x.Data.Spotted).Sum(); double prevDefence = (from x in prevStats.tanks where x.TankClass == tankType.Key select x.Data.DefencePoints).Sum(); double prevCapture = (from x in prevStats.tanks where x.TankClass == tankType.Key select x.Data.CapturePoints).Sum(); double prevBattles = (from x in prevStats.tanks where x.TankClass == tankType.Key select x.Data.BattlesCount).Sum(); // double delEfficiency = ((frags - delFrags) * (350.0 - (Math.Round((tier - delTier) / (battles - delBattles), 2)) * 20.0) + (damage - delDamage) * (0.2 + 1.5 / (Math.Round((tier - delTier) / (battles - delBattles), 2))) + 200.0 * (spotted - delSpotted) + 150.0 * (defence - delDefence) + 150.0 * (capture - delCapture)) / (battles - delBattles); //double delEfficiency = ((prevDamage / prevBattles) * (10 / (Math.Round(prevTier / prevBattles, 2) + 2)) * (0.23 + 2 * Math.Round(prevTier / prevBattles, 2) / 100)) + ((prevFrags / prevBattles) * 250) + ((prevSpotted / prevBattles) * 150) + ((Math.Log((prevCapture / prevBattles) + 1, 1.732)) * 150) + ((prevDefence / prevBattles) * 150); //EffCalcProperties f = new EffCalcProperties(DateTime.Now) { battles = 1, winRate = 50 }; ratingStructs.countryID = 0; ratingStructs.tankID = 0; ratingStructs.tier = prevTier; ratingStructs.globalTier = prevTier; ratingStructs.singleTank = false; ratingStructs.battlesCount = Convert.ToInt32(prevBattles); ratingStructs.battlesCount8_8 = 0; ratingStructs.capturePoints = prevCapture; ratingStructs.defencePoints = prevDefence; ratingStructs.damageAssistedRadio = prevDamageAssistedRadio; ratingStructs.damageAssistedTracks = prevDamageAssistedTrack; ratingStructs.damageDealt = prevDamage; ratingStructs.frags = prevFrags; ratingStructs.spotted = prevSpotted; ratingStructs.wins= prevVictories; ratingStructs.gWinRate = ratingStructs.winRate; double prevEfficiency = WOTStatistics.Core.Ratings.GetRatingWN7(ratingStructs).Value; //double prevEfficiency = -356; //ScriptWrapper.GetEFFValue(prevBattles, prevDamage, Math.Round(prevTier / prevBattles, 2), prevFrags, prevSpotted, prevCapture, prevDefence, (prevVictories / prevBattles) * 100, true, prevStats.AverageTier, prevStats.AverageDefencePoints, stats.BattlesCount, prevDamageAssistedRadio, prevDamageAssistedTrack); html += @" <tr> <td class='td-1' align=leff>" + tankType.Value + @"</td> <td class='td-1' align=right>" + WOTHelper.FormatNumberToString(battles, 0) + @"</td> <td class='td-1' align=right>" + GetDelta(battles - prevBattles, "", 0) + @"</td> <td class='td-1' align=right>" + WOTHelper.FormatNumberToString(victories, 0) + @"</td> <td class='td-1' align=right>" + WOTHelper.FormatNumberToString(victories - prevVictories, 0) + @" <span style='white-space: nowrap;'>(" + GetDelta(Math.Round((victories / battles * 100) - (prevVictories / prevBattles * 100), 2), "%", 2) + ")</span>" + @"</td> <td class='td-1' align=right>" + WOTHelper.FormatNumberToString(defeats, 0) + @"</td> <td class='td-1' align=right>" + WOTHelper.FormatNumberToString(defeats - prevDefeats, 0) + @" <span style='white-space: nowrap;'>(" + GetDelta(Math.Round((defeats / battles * 100) - (prevDefeats / prevBattles * 100), 2), "%", 2, true) + ")</span>" + @"</td> <td class='td-1' align=right>" + WOTHelper.FormatNumberToString(draws, 0) + @"</td> <td class='td-1' align=right>" + WOTHelper.FormatNumberToString(draws - prevDraws, 0) + @" <span style='white-space: nowrap;'>(" + GetDelta(Math.Round((draws / battles * 100) - (prevDraws / prevBattles * 100), 2), "%", 2, true) + ")</span>" + "</td>"; try { html += @"<td class='td-1' align=right>" + stats.tanks.Where(x => x.TankClass == tankType.Key).Max(y => y.Updated_Friendly).ToString(UserSettings.DateFormat + (UserSettings.TimeStamp ? " " + UserSettings.TimeFormat : "")) + "</td>"; } catch { html += @"<td class='td-1' align=right> </td>"; } html += @" <td class='td-1' align=right>" + WOTHelper.FormatNumberToString(frags, 0) + @"</td> <td class='td-1' align=right>" + GetDelta(Math.Round(frags - prevFrags, 2), "", 0) + @"</td> <td class='td-1' align=right>" + WOTHelper.FormatNumberToString(damage, 0) + @"</td> <td class='td-1' align=right>" + GetDelta(Math.Round(damage - prevDamage, 2), "", 0) + @"</td> <td class='td-1' align=right>" + WOTHelper.FormatNumberToString(damageAssistedRadio, 0) + @"</td> <td class='td-1' align=right>" + GetDelta(Math.Round(damageAssistedRadio - prevDamageAssistedTrack, 2), "", 0) + @"</td> <td class='td-1' align=right>" + WOTHelper.FormatNumberToString(damageAssistedRadio, 0) + @"</td> <td class='td-1' align=right>" + GetDelta(Math.Round(damageAssistedTrack - prevDamageAssistedTrack, 2), "", 0) + @"</td> <td class='td-1' align=right>" + WOTHelper.FormatNumberToString(damageReceived, 0) + @"</td> <td class='td-1' align=right>" + GetDelta(Math.Round(damageReceived - prevDamageReceived, 2), "", 0) + @"</td> <td class='td-1' align=right>" + WOTHelper.FormatNumberToString(Math.Round(efficiency, 2), 2) + @"</td> <td class='td-1' align=right>" + GetDelta(Math.Round(efficiency, 2) - Math.Round(prevEfficiency, 2), "", 2) + @"</td> </tr>"; } html += @"</tbody> </table>"; return html; } }
private string TankInfo(Tank tank) { string html = @" <Table class='b-gray-text' width=100%> <Thead> <tr> <td width=10%>" + TankImageLarge(tank.CountryID, tank.TankID, tank.Tank_Description) + @"</td>" + "<th width=80% align=center valign=middle><font size=" + (UserSettings.HTMLHeaderFont + 2) + @"px>(" + GetRoman(tank.Tier) + ") " + tank.Tank_Description + @"</font></th> <td class='" + CountryFlagFill(tank.CountryID) + @"' width=10%>" + MasterBadgeImage(tank.Special.MarkOfMastery) + @"</td> </tr> </Thead> <Tbody> <Tbody> </Table> <Table class='b-gray-text' width=100%> <Thead> <tr> <th width = 50% align=Center></th> <th width = 50% align=center></th> </tr> </Thead> <Tbody> <tr> <td class='td-1' valign=top> <table width=100%> <thead> </thead> <tbody> <tr> <td class='td-1' align=center> <strong>" + Translations.TranslationGet("HTML_HEAD_BATTLES", "DE", "Battles") + @"</strong> </td> <td class='td-1' align=center> " + WOTHelper.FormatNumberToString(tank.Data.BattlesCount, 0) + @" </td> </tr> <tr> <td class='td-1' align=center> <strong>" + Translations.TranslationGet("HTML_CONT_VICTORIES", "DE", "Victories") + @"</strong> </td> <td class='td-1' align=center> " + WOTHelper.FormatNumberToString(tank.Data.Victories, 0) + " (" + WOTHelper.FormatNumberToString(Math.Round(tank.Data.VictoryPercentage, 2), 2) + @"%) </td> </tr> <tr> <td class='td-1' align=center> <strong>" + Translations.TranslationGet("HTML_CONT_DEFEATS", "DE", "Defeats") + @"</strong> </td> <td class='td-1' align=center> " + WOTHelper.FormatNumberToString(tank.Data.Defeats, 0) + " (" + WOTHelper.FormatNumberToString(Math.Round(tank.Data.LossesPercentage, 2), 2) + @"%) </td> </tr> <tr> <td class='td-1' align=center> <strong>" + Translations.TranslationGet("HTML_CONT_DRAWS", "DE", "Draws") + @"</strong> </td> <td class='td-1' align=center> " + WOTHelper.FormatNumberToString(tank.Data.Draws, 0) + " (" + WOTHelper.FormatNumberToString(Math.Round(tank.Data.DrawsPercentage, 2), 2) + @"%) </td> </tr> <tr> <td class='td-1' align=center> <strong>" + Translations.TranslationGet("HTML_SURVIVED", "DE", "Survived") + @"</strong> </td> <td class='td-1' align=center> " + WOTHelper.FormatNumberToString(tank.Data.Survived, 0) + " (" + WOTHelper.FormatNumberToString(Math.Round((double)tank.Data.SurvivedPercentage, 2), 2) + @"%) </td> </tr> <tr> <td class='td-1' colspan=2> <table class='b-gray-text' width=100%> <thead/> <tr> <td class='td-1' align=center>" + Translations.TranslationGet("HTML_SHOTS", "DE", "Shots") + @"</td> <td class='td-1' align=center>" + Translations.TranslationGet("HTML_HITS", "DE", "Hits") + @"</td> <td class='td-1' align=center>" + Translations.TranslationGet("HTML_CONT_HITRATIO", "DE", "Accuracy") + @"</td> <td class='td-1' align=center>" + Translations.TranslationGet("HTML_MAXKILLS", "DE", "Max Kills") + @"</td> <td class='td-1' align=center>" + Translations.TranslationGet("HTML_COMP_KILLPERBATTLE", "DE", "Kills/Battles") + @"</td> <td class='td-1' align=center>" + Translations.TranslationGet("HTML_COMP_KILLPERDEATH", "DE", "Kills/Deaths") + @"</td> </tr> <tbody> <tr> <td class='td-1' align=center>" + WOTHelper.FormatNumberToString(tank.Data.Shots, 0) + @"</td> <td class='td-1' align=center>" + WOTHelper.FormatNumberToString(tank.Data.Hits, 0) + @"</td> <td class='td-1' align=center>" + WOTHelper.FormatNumberToString(Math.Round(tank.Data.Accuracy, 2), 2) + @" %</td> <td class='td-1' align=Center>" + WOTHelper.FormatNumberToString(tank.Data.MaxFrags, 0) + @"</td> <td align=Center> " + WOTHelper.FormatNumberToString(((double)tank.Data.Frags / (double)tank.Data.BattlesCount), 2) + @" <td align=Center> " + WOTHelper.FormatNumberToString(((double)tank.Data.Frags / ((double)tank.Data.BattlesCount - (double)tank.Data.Survived)), 2) + @" </tr> </tbody> </table> </td> </tr> </tbody> </table> </td> <td class='td-1' valign=top> <table class='b-gray-text' width=100%> <thead> </thead> <tbody> <tr> <td class='td-1' align=center> <strong>" + Translations.TranslationGet("HTML_CONT_EFFICIENCY", "DE", "Efficiency") + @"</strong> </td> <td class='td-1' align=center> <strong>" + "" + EfficiencyDescription(tank.RatingEff) + " - " + WOTHelper.FormatNumberToString(Math.Round(tank.RatingEff, 2), 2) + @"</strong> </td> </tr> <tr> <td class='td-1' align=center> <strong>" + Translations.TranslationGet("STR_BR_Caption", "DE", "Battle Rating") + @"</strong> </td> <td class='td-1' align=center> <strong>" + "" + EfficiencyDescription(tank.RatingBR) + " - " + WOTHelper.FormatNumberToString(Math.Round(tank.RatingBR, 2), 2) + @"</strong> </td> </tr> <tr> <td class='td-1' align=center> <strong>" + Translations.TranslationGet("STR_WN7_Caption", "DE", "WN7") + @"</strong> </td> <td class='td-1' align=center> <strong>" + "" + WN7ColorScaleDescription(tank.RatingWN7) + " - " + WOTHelper.FormatNumberToString(Math.Round(tank.RatingWN7, 5), 2) + @"</strong> </td> </tr> <tr> <td class='td-1' align=center> <strong>" + Translations.TranslationGet("STR_WN8_Caption", "DE", "WN8") + @"</strong> </td> <td class='td-1' align=center> <strong>" + "" + WN8ColorScaleDescription(tank.RatingWN8) + " - " + WOTHelper.FormatNumberToString(Math.Round(tank.RatingWN8, 2), 2) + @"</strong> </td> </tr> <tr> <td class='td-1' align=center> <strong>" + Translations.TranslationGet("HTML_CONT_KILLS", "DE", "Kills") + @"</strong> </td> <td class='td-1' align=center> " + WOTHelper.FormatNumberToString(tank.Data.Frags, 0) + @" </td> </tr> <tr> <td class='td-1' align=center> <strong>" + Translations.TranslationGet("HTML_CONT_DMGCAUSED", "DE", "Damage Caused") + @"</strong> </td> <td class='td-1' align=center> " + WOTHelper.FormatNumberToString(tank.Data.DamageDealt, 0) + @" </td> </tr> <tr> <td class='td-1' align=center> <strong>" + Translations.TranslationGet("HTML_CONT_CAPPOINTS", "DE", "Capture Points") + @"</strong> </td> <td class='td-1' align=center> " + WOTHelper.FormatNumberToString(tank.Data.CapturePoints, 0) + @" </td> </tr> <tr> <td class='td-1' align=center> <strong>" + Translations.TranslationGet("HTML_CONT_DEFPOINTS", "DE", "Defense Points") + @"</strong> </td> <td class='td-1' align=center> " + WOTHelper.FormatNumberToString(tank.Data.DefencePoints, 0) + @" </td> </tr> <tr> <td class='td-1' align=center> <strong>" + Translations.TranslationGet("HTML_CONT_DETECTED", "DE", "Detected") + @"</strong> </td> <td class='td-1' align=center> " + WOTHelper.FormatNumberToString(tank.Data.Spotted, 0) + @" </td> </tr> <tr> <td class='td-1' align=center> <strong>" + Translations.TranslationGet("HTML_BATTLETIME", "DE", "Battle Time") + @"</strong> </td> <td class='td-1' align=center> " + FormatBattleTime(tank.Data.BattleLifeTime_Friendly) + @" </td> </tr> </tbody> </table> </td> </tr> <tr> <td class='td-1' valign=top> <table class='b-gray-text' width=100%> <thead> </thead> <tbody> <tr> <td class='td-1' align=center> <strong>" + Translations.TranslationGet("HTML_EXPER", "DE", "Experience") + @"</strong> </td> <td class='td-1' align=center> " + WOTHelper.FormatNumberToString(tank.Data.Xp, 0) + @" </td> </tr> <tr> <td class='td-1' align=center> <strong>" + Translations.TranslationGet("HTML_COMP_MAXEXP", "DE", "Maximum Experience") + @"</strong> </td> <td class='td-1' align=center> " + WOTHelper.FormatNumberToString(tank.Data.MaxXp, 0) + @" </td> </tr> <tr> <td class='td-1' align=center> <strong>" + Translations.TranslationGet("HTML_COMP_AVGEXP", "DE", "Average Experience") + @"</strong> </td> <td class='td-1' align=center> " + WOTHelper.FormatNumberToString((tank.Data.Xp / (tank.Data.BattlesCount == 0 ? 1 : tank.Data.BattlesCount)), 2) + @" </td> </tr> </tbody> </table> </td> <td class='td-1' valign=top> <table class='b-gray-text' width=100%> <thead> </thead> <tbody> <tr> <td class='td-1' align=center> <strong>" + Translations.TranslationGet("HTML_CONT_DMGREC", "DE", "Damage Received") + @"</strong> </td> <td class='td-1' align=center> " + WOTHelper.FormatNumberToString(tank.Data.DamageReceived, 0) + @" </td> </tr> <tr> <td class='td-1' align=center> <strong>" + Translations.TranslationGet("HTML_CONT_DMGRATIO", "DE", "Damage Ratio") + @"</strong> </td> <td class='td-1' align=center> " + WOTHelper.FormatNumberToString(tank.Data.DamageRatio, 2) + @" </td> </tr> <tr> <td class='td-1' align=center> <strong>" + Translations.TranslationGet("HTML_COMP_AVGDAM", "DE", "Average Damage") + @"</strong> </td> <td class='td-1' align=center> " + WOTHelper.FormatNumberToString(Math.Round(tank.Data.AverageDamageDealt, 2), 2) + @" </td> </tr> </tbody> </table> </td> </tr> <Tbody> </Table> <Table class='b-gray-text' width=100%> <Thead> <tr> <th width = 5% align=center colspan=5>" + Translations.TranslationGet("HTML_TANKINFO_KILLBCLASS", "DE", "Kills By Class (Combined Battle Modes)") + @"</th> </tr> <tr> <td class='td-1' align=center>" + Translations.TranslationGet("HTML_HEAD_VEHICLECLASS", "DE", "Vehicle Class") + @"</td> <td class='td-1' align=center>" + Translations.TranslationGet("HTML_CONT_KILLS", "DE", "Kills") + @"</td> </tr> </Thead> <Tbody>"; using (TankTypeDescription tankTypes = new TankTypeDescription(_message)) { foreach (KeyValuePair<string, string> tankType in tankTypes) { html += @"<tr> <td><strong> " + tankType.Value + @"<strong> <td class='td-1' align=center>" + tank.FragList.Where(a => a.TankClass == tankType.Key).Sum(y => y.frags) + @"<td> </tr>"; } } html += @"<Tbody> </Table> <Table class='b-gray-text' width=100%> <Thead> <tr> <th align=center colspan=10>" + Translations.TranslationGet("HTML_TANKINFO_KILLS", "DE", "Kills (Combined Battle Modes)") + @"</th> </tr> </Thead> <Tbody> "; int x = 0; foreach (FragCount item in tank.FragList.OrderByDescending(y => y.Tier)) { if (x == 0) { html += "<tr>"; } html += String.Format(@"<td class='" + CountryFlag(item.CountryID) + @" td-armory-icon'> <div class='wrapper'> <span class='level'><a class='b-gray-text'>" + GetRoman(item.Tier) + @"</a></span> <a>" + TankImage(item.CountryID, item.TankID, item.Tank_Description) + @"</a> </div> </td> <td valign=left>{0} : <strong>{1}</strong></td>", item.Tank_Description, item.frags); x++; if (x == 5) { html += "</tr>"; x = 0; } } html += @"<Tbody> </Table>"; return html; }