public WN8ExpValues() { XmlDocument xmlDoc = new XmlDocument(); XmlNodeList nodes = null; XmlNodeList headerNodes = null; try { xmlDoc.Load(WOTHelper.GetWN8ExpectedTankValuesFile()); XmlElement root = xmlDoc.DocumentElement; nodes = root.SelectSingleNode("WN8").ChildNodes; headerNodes = root.SelectSingleNode("Header").ChildNodes; } catch (Exception ex) { WOTHelper.AddToLog(ex.Message); } WN8Version = 0; WN8DateEpoch = 0; WN8Date = new DateTime(1970, 1, 1, 0, 0, 0); if (headerNodes != null) { foreach (XmlNode headerNode in headerNodes) { if (headerNode.Name == "Version") { WN8Version = Convert.ToInt16(headerNode.InnerText); } if (headerNode.Name == "Date") { WN8DateEpoch = Convert.ToInt32(headerNode.InnerText); WN8Date = new DateTime(1970, 1, 1, 0, 0, 0).AddSeconds(WN8DateEpoch); } } } if (nodes != null) { MessageQueue _messages = null; TankDescriptions tankDescription = new TankDescriptions(_messages); foreach (XmlNode node in nodes) { WN8ExpValue expVal = new WN8ExpValue(); expVal.Tank = tankDescription.Description(Convert.ToInt32(node.Attributes["countryid"].Value), Convert.ToInt32(node.Attributes["tankid"].Value)); expVal.Country = Translations.TranslationGet(Convert.ToString(node.Attributes["countryid"].Value), "DE", Convert.ToString(node.Attributes["countryid"].Value)); expVal.Tier = tankDescription.Tier(Convert.ToInt32(node.Attributes["countryid"].Value), Convert.ToInt32(node.Attributes["tankid"].Value)); expVal.tankID = Convert.ToInt32(node.Attributes["tankid"].Value); expVal.countryID = Convert.ToInt32(node.Attributes["countryid"].Value); expVal.expFrag = double.Parse(node.Attributes["expFrag"].Value, System.Globalization.CultureInfo.InvariantCulture); expVal.expDamage = double.Parse(node.Attributes["expDamage"].Value, System.Globalization.CultureInfo.InvariantCulture); expVal.expSpot = double.Parse(node.Attributes["expSpot"].Value, System.Globalization.CultureInfo.InvariantCulture); expVal.expDefense = double.Parse(node.Attributes["expDef"].Value, System.Globalization.CultureInfo.InvariantCulture); expVal.expWin = double.Parse(node.Attributes["expWinRate"].Value, System.Globalization.CultureInfo.InvariantCulture); Add(expVal); } } }
public CountryDescriptions(MessageQueue message) { _message = message; try { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(WOTHelper.GetSettingsFile()); XmlElement root = xmlDoc.DocumentElement; XmlNodeList nodes = root.SelectSingleNode(@"Countries").ChildNodes; foreach (XmlNode node in nodes) { _countries.Add(int.Parse(node.Attributes["Code"].Value), Translations.TranslationGet(node.Attributes["Code"].Value, "DE", node.InnerText)); } } catch (Exception) { File.Copy(Path.Combine(WOTHelper.GetEXEPath(), "settings.xml"), WOTHelper.GetSettingsFile()); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(WOTHelper.GetSettingsFile()); XmlElement root = xmlDoc.DocumentElement; XmlNodeList nodes = root.SelectSingleNode(@"Countries").ChildNodes; foreach (XmlNode node in nodes) { _countries.Add(int.Parse(node.Attributes["Code"].Value), Translations.TranslationGet(node.Attributes["Code"].Value, "DE", node.InnerText)); } } }
public TankDescriptions(MessageQueue message) { _message = message; _tankTypeDescriptions = new TankTypeDescription(message); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(WOTHelper.GetSettingsFile()); XmlElement root = xmlDoc.DocumentElement; XmlNodeList nodes = root.SelectSingleNode(@"Tanks").ChildNodes; foreach (XmlNode node in nodes) { TankKey tKey = new TankKey() { CountryID = int.Parse(node.Attributes["Country"].Value), TankID = int.Parse(node.Attributes["Code"].Value) }; TankValue tValue = new TankValue() { Description = Translations.TranslationGet(node.Attributes["Country"].Value + "_" + node.Attributes["Code"].Value, "DE", node.InnerText), Tier = int.Parse(node.Attributes["Tier"].Value), Premium = int.Parse(node.Attributes["Premium"].Value), Active = (node.Attributes["Active"] == null ? true : bool.Parse(node.Attributes["Active"].Value)), TankType = node.Attributes["TankType"].Value }; _tanks.Add(tKey, tValue); } }
private void DeleteFile() { if (DevExpress.XtraEditors.XtraMessageBox.Show(Translations.TranslationGet("STR_CLEARRECENTERRORNOTIFY", "DE", "The recent battle log has become unstable. File will be resetted."), "WOT Statistics", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == System.Windows.Forms.DialogResult.OK) { File.Delete(Path.Combine(WOTHelper.GetApplicationData(), "Hist_" + _playerName, "LastBattle", "LastBattles.wot")); } }
public TankTypeDescription(MessageQueue message) { _message = message; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(WOTHelper.GetSettingsFile()); XmlElement root = xmlDoc.DocumentElement; XmlNodeList nodes = root.SelectSingleNode(@"TankTypes").ChildNodes; foreach (XmlNode node in nodes) { _tankTypes.Add(node.Attributes["Code"].Value, Translations.TranslationGet(node.Attributes["Code"].Value, "DE", node.InnerText)); } }
public TankDescriptions(MessageQueue message, string playerDBFile) { _message = message; _tankTypeDescriptions = new TankTypeDescription(message); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(WOTHelper.GetSettingsFile()); XmlElement root = xmlDoc.DocumentElement; XmlNodeList nodes = root.SelectSingleNode(@"Tanks").ChildNodes; //TODO DataTable dt = getMyTanks(playerDBFile); bool gotIt = false; foreach (XmlNode node in nodes) { //TODO gotIt = false; string strExpr = "cmCountryID = " + int.Parse(node.Attributes["Country"].Value) + " AND cmTankID = " + int.Parse(node.Attributes["Code"].Value); var match = dt.Select(strExpr); if (match.Length > 0) { gotIt = true; } // TankKey tKey = new TankKey() { CountryID = int.Parse(node.Attributes["Country"].Value), TankID = int.Parse(node.Attributes["Code"].Value) }; TankValue tValue = new TankValue() { Description = Translations.TranslationGet(node.Attributes["Country"].Value + "_" + node.Attributes["Code"].Value, "DE", node.InnerText), Tier = int.Parse(node.Attributes["Tier"].Value), Premium = int.Parse(node.Attributes["Premium"].Value), Active = (node.Attributes["Active"] == null ? true : bool.Parse(node.Attributes["Active"].Value)), TankType = node.Attributes["TankType"].Value, //TODO GotIt = gotIt }; _tanks.Add(tKey, tValue); } }
public string Description(int countryId, int tankID) { TankKey tk = new TankKey() { CountryID = countryId, TankID = tankID }; TankValue tValue; if (!_tanks.TryGetValue(tk, out tValue)) { return("Unknown"); } else { return(Translations.TranslationGet(countryId + "_" + tankID, "DE", tValue.Description)); } }
public Achievements() { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(WOTHelper.GetSettingsFile()); XmlElement root = xmlDoc.DocumentElement; XmlNodeList nodes = root.SelectSingleNode(@"Achievements").ChildNodes; foreach (XmlNode node in nodes) { string trKey = node.Attributes["Key"] == null ? "" : node.Attributes["Key"].Value; _achievements.Add(int.Parse(node.Attributes["Order"].Value), new Achievement() { Name = Translations.TranslationGet(trKey, "DE", node.Attributes["Name"].Value), Value = Convert.ToInt16(node.Attributes["Value"].Value), Tanks = node.Attributes["Tanks"].Value.Split('|') }); } }
public static string AchievementsHTML(WOTStats stats) { string html = @"<table class='b-gray-text' width='100%'><tbody>"; using (Achievements ach = new Achievements()) { foreach (KeyValuePair <int, Achievement> item in ach.OrderBy(x => x.Key)) { int total = 0; int completed = 0; foreach (string tank in item.Value.Tanks) { total += (from x in stats.tanks.Select(h => h.FragList.Where(f => f.CountryID + "_" + f.TankID == tank).Select(g => g.frags).Sum()) select x).Sum(); } while (total >= item.Value.Value) { total -= item.Value.Value; completed++; } html += @"<tr><th class='th1' align='center' width=100% colspan='2'>" + item.Value.Name + @"</th></tr> <tr><th class='th1' align='center' width=100% colspan='2'>" + Translations.TranslationGet("STR_ACHIEVED", "DE", "Achieved: ") + completed + @"</th> </tr>"; html += @"<tr><td width=100%><table width=100%><tr><td align='center' width=" + Math.Round((decimal)total / (decimal)item.Value.Value * (decimal)100, 0) + "% bgColor=green><font><strong>" + (total == 0 ? "" : total.ToString()) + @"</strong></font></td>"; html += @"<td align='center' width=" + ((decimal)100 - Math.Round((decimal)total / (decimal)item.Value.Value * (decimal)100, 0)) + "% bgColor=red><font ><strong>" + ((item.Value.Value - total) == 0 ? "" : (item.Value.Value - total).ToString()) + @"</strong></font></td></tr></table></td></tr>"; } } html += @"</tbody></table>"; return(html); }
private static string WN7_Tooltip(RatingStructure ratingStruct) { double damageFormula = WN7_Damage(ratingStruct); double killFormula = WN7_Frags(ratingStruct); double spottedFormula = WN7_Spotted(ratingStruct); double winRateFormula = WN7_WinRate(ratingStruct); double defenceFormula = WN7_Defence(ratingStruct); double tierMalusFormula = WN7_TierMalus(ratingStruct); string total = FormatNumberToString(damageFormula + killFormula + spottedFormula + winRateFormula + defenceFormula + tierMalusFormula, 2); double[] valueArray = new double[] { damageFormula, killFormula, spottedFormula, winRateFormula, defenceFormula, tierMalusFormula }; double maxValue = valueArray.Max(); double iTotal = maxValue; List <string> i = new List <string>(); string[] s = new string[7] { "", "Value", "WN7", "0", "0", "1", "H" }; i.Add(string.Join("|", s)); s[0] = Translations.TranslationGet("STR_DAMAGE", "de", "Damage"); s[1] = FormatNumberToString(ratingStruct.damageDealt, 0); s[2] = FormatNumberToString(damageFormula, 2); s[3] = FormatNumberToString(Math.Abs(((damageFormula / iTotal) - 1) * 100), 2); s[4] = FormatNumberToString(Math.Abs(((damageFormula / iTotal)) * 100), 2); s[5] = "0"; s[6] = "D"; i.Add(string.Join("|", s)); s[0] = Translations.TranslationGet("HTML_CONT_KILLS", "de", "Kills"); s[1] = FormatNumberToString(ratingStruct.frags, 0); s[2] = FormatNumberToString(killFormula, 2); s[3] = FormatNumberToString(Math.Abs(((killFormula / iTotal) - 1) * 100), 2); s[4] = FormatNumberToString(Math.Abs(((killFormula / iTotal)) * 100), 2); s[5] = "0"; i.Add(string.Join("|", s)); s[0] = Translations.TranslationGet("HTML_CONT_DETECTED", "de", "Spotted"); s[1] = FormatNumberToString(ratingStruct.spotted, 0); s[2] = FormatNumberToString(spottedFormula, 2); s[3] = FormatNumberToString(Math.Abs(((spottedFormula / iTotal) - 1) * 100), 2); s[4] = FormatNumberToString(Math.Abs(((spottedFormula / iTotal)) * 100), 2); s[5] = "0"; i.Add(string.Join("|", s)); s[0] = Translations.TranslationGet("STR_DEFENCE", "de", "Defence"); s[1] = FormatNumberToString(ratingStruct.defencePoints, 0); s[2] = FormatNumberToString(defenceFormula, 2); s[3] = FormatNumberToString(Math.Abs(((defenceFormula / iTotal) - 1) * 100), 2); s[4] = FormatNumberToString(Math.Abs(((defenceFormula / iTotal)) * 100), 2); s[5] = "0"; i.Add(string.Join("|", s)); s[0] = Translations.TranslationGet("STR_WINRATE", "de", "Win Percentage"); // TODO: Added by BadButton 2014-06-25 - Added method for getting correct win rate used for calculation, to be chacked by Phalynx s[1] = FormatNumberToString(WN7_WinRateTooltipPrefix(ratingStruct), 0); s[2] = FormatNumberToString(winRateFormula, 2); s[3] = FormatNumberToString(Math.Abs(((winRateFormula / iTotal) - 1) * 100), 2); s[4] = FormatNumberToString(Math.Abs(((winRateFormula / iTotal)) * 100), 2); s[5] = "0"; i.Add(string.Join("|", s)); s[0] = Translations.TranslationGet("STR_TIERMALUS", "de", "Tier Malus"); s[1] = FormatNumberToString(ratingStruct.tier, 0); s[2] = FormatNumberToString(tierMalusFormula, 2); s[3] = FormatNumberToString(Math.Abs(((tierMalusFormula / iTotal) - 1) * 100), 2); s[4] = FormatNumberToString(Math.Abs(((tierMalusFormula / iTotal)) * 100), 2); s[5] = "0"; i.Add(string.Join("|", s)); s[0] = "Total"; s[1] = ""; s[2] = total; s[3] = "0"; s[4] = "0"; s[5] = "1"; s[6] = "T"; i.Add(string.Join("|", s)); //RatingStorage rr = new RatingStorage(ratingStruct); return(string.Join(";", i)); }
private static string WN8_Tooltip(RatingStorage WN8) //string damageCaption, double damage, double damageFormula, string killCaption, double kill, double killFormula, string spottedCaption, double spotted, double spottedFormula, string Translations.TranslationGet("STR_DEFENCE", "de", "Defence"), double defence, double defenceFormula, string winRateCaption, double winRate, double winRateFormula) { //, WN8.damage, WN8.rDAMAGE, , WN8.frags, WN8.rFRAG, , WN8.spotted, WN8.rSPOT, , WN8.defence, WN8.rDEF, , WN8.winRate, WN8.rWIN string total = FormatNumberToString(WN8.Value, 2); double[] valueArray = new double[] { WN8.rDAMAGE, WN8.rFRAG, WN8.rSPOT, WN8.rDEF, WN8.rWIN }; double maxValue = valueArray.Max(); double iTotal = maxValue; List<string> i = new List<string>(); string[] s = new string[8] { "", "Value", "Expected", "WN8", "0", "0", "1", "H" }; i.Add(string.Join("|", s)); s[0] = Translations.TranslationGet("STR_DAMAGE", "de", "Damage"); s[1] = FormatNumberToString(WN8.damage, 0); s[2] = FormatNumberToString(WN8.rDAMAGE, 0); s[3] = FormatNumberToString(WN8.expDAMAGE, 0); s[4] = FormatNumberToString(Math.Abs(((WN8.rDAMAGE / iTotal) - 1) * 100), 2); s[5] = FormatNumberToString(Math.Abs(((WN8.rDAMAGE / iTotal)) * 100), 2); s[6] = "0"; s[7] = "D"; i.Add(string.Join("|", s)); s[0] = Translations.TranslationGet("HTML_CONT_KILLS", "de", "Kills"); s[1] = FormatNumberToString(WN8.frags, 1); s[2] = FormatNumberToString(WN8.rFRAG, 1); s[3] = FormatNumberToString(WN8.expFRAG, 1); s[4] = FormatNumberToString(Math.Abs(((WN8.rFRAG / iTotal) - 1) * 100), 2); s[5] = FormatNumberToString(Math.Abs(((WN8.rFRAG / iTotal)) * 100), 2); s[6] = "0"; i.Add(string.Join("|", s)); s[0] = Translations.TranslationGet("HTML_CONT_DETECTED", "de", "Detected"); s[1] = FormatNumberToString(WN8.spotted, 1); s[2] = FormatNumberToString(WN8.rSPOT, 1); s[3] = FormatNumberToString(WN8.expSPOT, 1); s[4] = FormatNumberToString(Math.Abs(((WN8.rSPOT / iTotal) - 1) * 100), 2); s[5] = FormatNumberToString(Math.Abs(((WN8.rSPOT / iTotal)) * 100), 2); s[6] = "0"; i.Add(string.Join("|", s)); s[0] = Translations.TranslationGet("STR_DEFENCE", "de", "Defence"); s[1] = FormatNumberToString(WN8.defence, 1); s[2] = FormatNumberToString(WN8.rDEF, 1); s[3] = FormatNumberToString(WN8.expDEF, 1); s[4] = FormatNumberToString(Math.Abs(((WN8.rDEF / iTotal) - 1) * 100), 2); s[5] = FormatNumberToString(Math.Abs(((WN8.rDEF / iTotal)) * 100), 2); s[6] = "0"; i.Add(string.Join("|", s)); s[0] = Translations.TranslationGet("STR_WINRATE", "de", "Win Percentage"); s[1] = FormatNumberToString(WN8.winRate, 1); s[2] = FormatNumberToString(WN8.rWIN, 1); s[3] = FormatNumberToString(WN8.expWIN, 1); s[4] = FormatNumberToString(Math.Abs(((WN8.rWIN / iTotal) - 1) * 100), 2); s[5] = FormatNumberToString(Math.Abs(((WN8.rWIN / iTotal)) * 100), 2); s[6] = "0"; i.Add(string.Join("|", s)); s[0] = "Total"; s[1] = ""; s[2] = total; s[3] = ""; s[4] = "0"; s[5] = "0"; s[6] = "1"; s[7] = "T"; i.Add(string.Join("|", s)); //WOTHelper.AddToLog (string.Join(";", i)); return string.Join(";", i); }
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); }
private static string Eff_Tooltip(RatingStructure ratingStruct) { double damageFormula = EFF_Damage(ratingStruct); double killFormula = EFF_Kills(ratingStruct); double spottedFormula = EFF_Spotted(ratingStruct); double captureFormula = EFF_Captured(ratingStruct); double defenceFormula = EFF_Defence(ratingStruct); string total = FormatNumberToString(damageFormula + killFormula + spottedFormula + captureFormula + defenceFormula, 2); double[] valueArray = new double[] { damageFormula, killFormula, spottedFormula, captureFormula, defenceFormula }; double maxValue = valueArray.Max(); double iTotal = maxValue; List <string> i = new List <string>(); string[] s = new string[7] { "", "Value", "Eff", "0", "0", "1", "H" }; i.Add(string.Join("|", s)); s[0] = Translations.TranslationGet("STR_DAMAGE", "de", "Damage"); s[1] = FormatNumberToString(ratingStruct.damageDealt, 0); s[2] = FormatNumberToString(damageFormula, 2); s[3] = FormatNumberToString(Math.Abs(((damageFormula / iTotal) - 1) * 100), 2); s[4] = FormatNumberToString(Math.Abs(((damageFormula / iTotal)) * 100), 2); s[5] = "0"; s[6] = "D"; i.Add(string.Join("|", s)); s[0] = Translations.TranslationGet("HTML_CONT_KILLS", "de", "Kills"); s[1] = FormatNumberToString(ratingStruct.frags, 0); s[2] = FormatNumberToString(killFormula, 2); s[3] = FormatNumberToString(Math.Abs(((killFormula / iTotal) - 1) * 100), 2); s[4] = FormatNumberToString(Math.Abs(((killFormula / iTotal)) * 100), 2); s[5] = "0"; i.Add(string.Join("|", s)); s[0] = Translations.TranslationGet("HTML_CONT_DETECTED", "de", "Detected"); s[1] = FormatNumberToString(ratingStruct.spotted, 0); s[2] = FormatNumberToString(spottedFormula, 2); s[3] = FormatNumberToString(Math.Abs(((spottedFormula / iTotal) - 1) * 100), 2); s[4] = FormatNumberToString(Math.Abs(((spottedFormula / iTotal)) * 100), 2); s[5] = "0"; i.Add(string.Join("|", s)); s[0] = Translations.TranslationGet("STR_CAPTURE", "de", "Capture"); s[1] = FormatNumberToString(ratingStruct.capturePoints, 0); s[2] = FormatNumberToString(captureFormula, 2); s[3] = FormatNumberToString(Math.Abs(((captureFormula / iTotal) - 1) * 100), 2); s[4] = FormatNumberToString(Math.Abs(((captureFormula / iTotal)) * 100), 2); s[5] = "0"; i.Add(string.Join("|", s)); s[0] = Translations.TranslationGet("STR_DEFENCE", "de", "Defence"); s[1] = FormatNumberToString(ratingStruct.defencePoints, 0); s[2] = FormatNumberToString(defenceFormula, 2); s[3] = FormatNumberToString(Math.Abs(((defenceFormula / iTotal) - 1) * 100), 2); s[4] = FormatNumberToString(Math.Abs(((defenceFormula / iTotal)) * 100), 2); s[5] = "0"; i.Add(string.Join("|", s)); s[0] = "Total"; s[1] = ""; s[2] = total; s[3] = "0"; s[4] = "0"; s[5] = "1"; s[6] = "T"; i.Add(string.Join("|", s)); return(string.Join(";", i)); }
private string AutoSessions() { //we need to build in a fail safe, if auto session is not enables if (!UserSettings.AutoCreateSession) { string failSafe_sql = String.Format("select count(rbCountryID) count from RecentBattles where rbSessionID = '{0}'", GetSession()); using (IDBHelpers db = new DBHelpers(Path.Combine(WOTHelper.GetApplicationData(), "Hist_" + _playerName, "LastBattle", "WOTSStore.db"))) { string returnValue = db.ExecuteScalar(failSafe_sql); if (int.Parse(returnValue == "" ? "0" : returnValue) >= ApplicationSettings.MaxNoGamesAllowedRB) { string sessionID = NewSession(); UserSettings.ViewSessionID = sessionID; UserSettings.RecentBattlesCurrentSession = 0; _message.Add("Info : New Session has been created. Max Limit of games has been reached for session. Please enable auto session to avoid this in future."); return(sessionID); } } } //once failsafe has passed we can carry on if (UserSettings.AutoCreateSession) { if (!UserSettings.AutoSessionXBattles && !UserSettings.AutoSessionXHours) { return(GetSession()); } else { if (UserSettings.AutoSessionXBattles) { string sql = String.Format("select count(rbCountryID) count from RecentBattles where rbSessionID = '{0}'", GetSession()); using (IDBHelpers db = new DBHelpers(Path.Combine(WOTHelper.GetApplicationData(), "Hist_" + _playerName, "LastBattle", "WOTSStore.db"))) { string returnValue = db.ExecuteScalar(sql); if (int.Parse(returnValue == "" ? "0" : returnValue) >= UserSettings.AutoSessionXBattlesValue) { if (UserSettings.AutoSessionXBattlesMessage) { if (DevExpress.XtraEditors.XtraMessageBox.Show(Translations.TranslationGet("STR_NEWSESSIONNOTIFY", "DE", "Would you like to create a new recent battles session."), "WOT Statistics", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == System.Windows.Forms.DialogResult.Yes) { string sessionID = NewSession(); UserSettings.ViewSessionID = sessionID; UserSettings.RecentBattlesCurrentSession = 0; return(sessionID); } else { return(GetSession()); } } else { string sessionID = NewSession(); UserSettings.ViewSessionID = sessionID; UserSettings.RecentBattlesCurrentSession = 0; return(sessionID); } } else { return(GetSession()); } } } if (UserSettings.AutoSessionXHours) { string sql = @"select (strftime('%s','now', 'localtime') - strftime('%s',datetime(rbBattleTime, 'unixepoch', 'localtime')))/60/60 from recentbattles order by rbID desc limit 1"; using (IDBHelpers db = new DBHelpers(Path.Combine(WOTHelper.GetApplicationData(), "Hist_" + _playerName, "LastBattle", "WOTSStore.db"))) { string returnValue = db.ExecuteScalar(sql); if (int.Parse(returnValue == "" ? "0" : returnValue) >= UserSettings.AutoSessionXHoursValue) { if (UserSettings.AutoSessionXHoursMessage) { if (DevExpress.XtraEditors.XtraMessageBox.Show(Translations.TranslationGet("STR_NEWSESSIONNOTIFY", "DE", "Would you like to create a new recent battles session."), "WOT Statistics", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == System.Windows.Forms.DialogResult.Yes) { string sessionID = NewSession(); UserSettings.ViewSessionID = sessionID; UserSettings.RecentBattlesCurrentSession = 0; return(sessionID); } else { return(GetSession()); } } else { string sessionID = NewSession(); UserSettings.ViewSessionID = sessionID; UserSettings.RecentBattlesCurrentSession = 0; return(sessionID); } } else { return(GetSession()); } } } return(GetSession()); } } else { return(GetSession()); } }