예제 #1
0
        public override IEnumerable <DataObject> ProcessInternal(ClientBase client, ResponseContainer container)
        {
            HtmlDocument       doc         = container.ResponseHtml.Value;
            HtmlNodeCollection imageFields = doc.DocumentNode.SelectNodes("//div[starts-with(@id, 'fleet')]");

            if (imageFields == null)
            {
                yield break;
            }

            FleetSlotCount count = new FleetSlotCount();
            HtmlNode       slots = doc.DocumentNode.SelectSingleNode("//div[@id='content']//div[@class='fleetStatus']/span[@class='fleetSlots']");

            count.Current = int.Parse(slots.SelectSingleNode("./span[@class='current']").InnerText);
            count.Max     = int.Parse(slots.SelectSingleNode("./span[@class='all']").InnerText);

            yield return(count);

            foreach (HtmlNode node in imageFields)
            {
                string idText = node.GetAttributeValue("id", null);
                int    id     = int.Parse(FleetIdRegex.Match(idText).Groups[1].Value, NumberStyles.AllowThousands | NumberStyles.Integer, client.ServerCulture);

                FleetMissionDetails missionDetails = FleetUtilityParser.ParseFleetMissionDetails(node);
                HtmlNode            fleetInfo      = node.SelectSingleNode(".//span[@class='starStreak']");
                FleetComposition    composition    = FleetUtilityParser.ParseFleetInfoTable((OGameClient)client, fleetInfo);

                FleetEndpointInfo endpointOrigin      = ParseEndpoint(node.SelectSingleNode("./span[@class='originData']"));
                FleetEndpointInfo endpointDestination = ParseEndpoint(node.SelectSingleNode("./span[@class='destinationData']"));

                yield return(new FleetInfo
                {
                    Id = id,
                    ArrivalTime = missionDetails.ArrivalTime,
                    IsReturning = missionDetails.IsReturn,
                    MissionType = missionDetails.Mission,
                    Origin = endpointOrigin,
                    Destination = endpointDestination,
                    Composition = composition
                });
            }
        }
예제 #2
0
        public override IEnumerable <DataObject> ProcessInternal(ClientBase client, ResponseContainer container)
        {
            HtmlDocument       doc         = container.ResponseHtml.Value;
            HtmlNodeCollection imageFields = doc.DocumentNode.SelectNodes("//div[starts-with(@id, 'fleet')]");

            if (imageFields == null)
            {
                yield break;
            }

            foreach (HtmlNode node in imageFields)
            {
                string idText = node.GetAttributeValue("id", null);
                int    id     = int.Parse(FleetIdRegex.Match(idText).Groups[1].Value, NumberStyles.AllowThousands | NumberStyles.Integer, client.ServerCulture);

                MissionType    missionType = (MissionType)node.GetAttributeValue("data-mission-type", 0);
                bool           isReturn    = node.GetAttributeValue("data-return-flight", false);
                int            arrivalSec  = node.GetAttributeValue("data-arrival-time", 0);
                DateTimeOffset arrival     = DateTimeOffset.FromUnixTimeSeconds(arrivalSec);

                HtmlNode         fleetInfo   = node.SelectSingleNode(".//span[@class='starStreak']");
                FleetComposition composition = FleetCompositionParser.ParseFleetInfoTable((OGameClient)client, fleetInfo);

                FleetEndpointInfo endpointOrigin      = ParseEndpoint(node.SelectSingleNode("./span[@class='originData']"));
                FleetEndpointInfo endpointDestination = ParseEndpoint(node.SelectSingleNode("./span[@class='destinationData']"));

                yield return(new FleetInfo
                {
                    Id = id,
                    ArrivalTime = arrival,
                    IsReturning = isReturn,
                    MissionType = missionType,
                    Origin = endpointOrigin,
                    Destination = endpointDestination,
                    Composition = composition
                });
            }
        }