コード例 #1
0
        /// <summary>
        /// Parses the Regex match
        /// </summary>
        /// <remarks>Parses the copy output</remarks>
        public static Report ParseMatch(Match match, ReportOutputOptions options)
        {
            Report report = new Report();

            report._reportOptions = options;
            report._attacker      = new ReportVillage(match.Groups["you"].Value.Trim(), match.Groups["attacker"].Value.Trim());
            report._defender      = new ReportVillage(match.Groups["him"].Value.Trim(), match.Groups["defender"].Value.Trim());

            DateTime testDate;

            if (DateTime.TryParse(match.Groups["date"].Value.Trim(), out testDate))
            {
                report._dateReport = testDate;
            }
            report._luck   = match.Groups["luck"].Value.Trim();
            report._morale = match.Groups["morale"].Value.Trim();
            report._winner = match.Groups["winner"].Value.Trim();

            int.TryParse(match.Groups["haul"].Value, out report._resourceHaulGot);
            int.TryParse(match.Groups["haulmax"].Value, out report._resourceHaulMax);

            report._buildings = ReportParser.GetBuildings(match.Groups["building"], out report._calculatedPoints);
            ReportParser.UpdateBuildings(report.Buildings, WorldBuildings.Default[BuildingTypes.Wall].Name, match.Groups["ramBefore"], match.Groups["ramAfter"]);
            ReportParser.UpdateBuildings(report.Buildings, match.Groups["catBuilding"].Value, match.Groups["catBefore"], match.Groups["catAfter"]);

            // put resources in a different Group when they come from the html parser :(
            report._resourcesHaul = ReportParser.GetResources(match.Groups["res"]);
            report._resourcesLeft = ReportParser.GetResources(match.Groups["resLeft"]);
            report._attack        = ReportParser.GetTroops(match.Groups["atforce"], match.Groups["atloss"]);
            report._defense       = ReportParser.GetTroops(match.Groups["defforce"], match.Groups["defloss"], match.Groups["defOut"]);

            if (match.Groups["loyaltyBegin"].Success)
            {
                report._loyaltyBegin = System.Convert.ToInt32(match.Groups["loyaltyBegin"].Value);
                report._loyaltyEnd   = System.Convert.ToInt32(match.Groups["loyaltyEnd"].Value);
                if (report._loyaltyEnd <= 0)
                {
                    report._reportFlag |= ReportFlags.Nobled;
                }
            }

            if (match.Groups["defOut"].Success)
            {
                report._reportFlag |= ReportFlags.SeenOutside;
            }
            if (match.Groups["defforce"].Success)
            {
                report._reportFlag |= ReportFlags.SeenDefense;
            }

            SetReportType(report);

            return(report);
        }
コード例 #2
0
        /// <summary>
        /// Parses the Regex match
        /// </summary>
        /// <remarks>Parses the Html output</remarks>
        public static Report ParseHtmlMatch(Dictionary <string, Group> match, ReportOutputOptions options)
        {
            Report report = new Report();

            report._reportOptions = options;
            report._attacker      = new ReportVillage(match["you"].Value.Trim(), match["attacker"].Value.Replace("</a>", "").Trim());
            report._defender      = new ReportVillage(match["him"].Value.Trim(), match["defender"].Value.Replace("</a>", "").Trim());

            DateTime testDate;

            if (DateTime.TryParse(match["date"].Value.Trim(), out testDate))
            {
                report._dateReport = testDate;
            }
            report._luck   = match["luck"].Value.Trim();
            report._morale = match["morale"].Value.Trim();
            report._winner = match["winner"].Value.Trim();

            if (match.ContainsKey("haul"))
            {
                int.TryParse(match["haul"].Value, out report._resourceHaulGot);
                int.TryParse(match["haulMax"].Value, out report._resourceHaulMax);
            }

            //Hiding place <b>(Level 4)</b><br />
            if (match.ContainsKey("buildings"))
            {
                report._buildings = ReportParser.GetBuildings(match["buildings"], out report._calculatedPoints);
            }
            if (match.ContainsKey("ramBefore"))
            {
                ReportParser.UpdateBuildings(report.Buildings, WorldBuildings.Default[BuildingTypes.Wall].Name, match["ramBefore"], match["ramAfter"]);
            }
            if (match.ContainsKey("catBuilding"))
            {
                ReportParser.UpdateBuildings(report.Buildings, match["catBuilding"].Value, match["catBefore"], match["catAfter"]);
            }

            // html strippen van res en resLeft
            if (match.ContainsKey("res"))
            {
                report._resourcesHaul = ReportParser.GetResources(match["res"]);
            }
            if (match.ContainsKey("resLeft"))
            {
                report._resourcesLeft = ReportParser.GetResources(match["resLeft"]);
            }

            report._attack = ReportParser.GetTroops(match["atforce"], match["atloss"]);
            if (match.ContainsKey("defforce"))
            {
                if (match.ContainsKey("defOut"))
                {
                    report._defense = ReportParser.GetTroops(match["defforce"], match["defloss"], match["defOut"]);
                }
                else
                {
                    report._defense = ReportParser.GetTroops(match["defforce"], match["defloss"]);
                }
            }

            if (match.ContainsKey("loyaltyBegin") && match["loyaltyBegin"].Success)
            {
                report._loyaltyBegin = System.Convert.ToInt32(match["loyaltyBegin"].Value);
                report._loyaltyEnd   = System.Convert.ToInt32(match["loyaltyEnd"].Value);
                if (report._loyaltyEnd <= 0)
                {
                    report._reportFlag |= ReportFlags.Nobled;
                }
            }

            if (match.ContainsKey("defOut") && match["defOut"].Success)
            {
                report._reportFlag |= ReportFlags.SeenOutside;
            }
            if (match.ContainsKey("defforce") && match["defforce"].Success)
            {
                report._reportFlag |= ReportFlags.SeenDefense;
            }

            SetReportType(report);

            return(report);
        }