コード例 #1
0
ファイル: WN8ExpValues.cs プロジェクト: yagis/WOT-Statistics
        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);
                }
            }
        }
コード例 #2
0
        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));
                }
            }
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
 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"));
     }
 }
コード例 #5
0
        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));
            }
        }
コード例 #6
0
        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);
            }
        }
コード例 #7
0
        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));
            }
        }
コード例 #8
0
ファイル: Achievements.cs プロジェクト: yagis/WOT-Statistics
        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('|')
                });
            }
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        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));
        }
コード例 #11
0
        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);
        }
コード例 #12
0
        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);
        }
コード例 #13
0
ファイル: Ratings_Eff.cs プロジェクト: yagis/WOT-Statistics
        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));
        }
コード例 #14
0
        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());
            }
        }