Пример #1
0
        public static List <Digsite> GetDigsitesZoneAvailable(string NameForSecond = null)
        {
            try
            {
                GetAllDigsitesZone();
                List <Digsite>         resultList      = new List <Digsite>();
                List <DigsitesZoneLua> digsitesZoneLua = GetDigsitesZoneLua();

                if (digsitesZoneLua.Count > 0)
                {
                    foreach (DigsitesZoneLua dl in digsitesZoneLua)
                    {
                        bool            zonefound = false;
                        WoWResearchSite RowRSite;
                        if (NameForSecond == dl.name)
                        {
                            RowRSite = WoWResearchSite.FromName(dl.name, true);
                        }
                        else
                        {
                            RowRSite = WoWResearchSite.FromName(dl.name);
                        }
                        WoWQuestPOIPoint qPOI = WoWQuestPOIPoint.FromSetId(RowRSite.Record.QuestIdPoint);
                        for (int i = 0; i <= _allDigsiteZone.Count - 1; i++)
                        {
                            if (_allDigsiteZone[i].id == RowRSite.Record.Id && _allDigsiteZone[i].Active)
                            {
                                resultList.Add(_allDigsiteZone[i]);
                                Logging.Write("Digsite zone found: Name: " + dl.name + " - Distance = " +
                                              qPOI.Center.DistanceTo2D(ObjectManager.ObjectManager.Me.Position));
                                zonefound = true;
                            }
                        }
                        if (!zonefound)
                        {
                            Logging.Write("Digsite zone not found in database: Name=" + dl.name);
                        }
                    }
                }
                else
                {
                    Logging.Write("No digsites zones found, make sure 'Show Digsites' is activated in your map window.");
                    Thread.Sleep(500);
                }

                return(resultList);
            }
            catch (Exception e)
            {
                Logging.WriteError("Archaeology > GetDigsitesZoneAvailable(): " + e);
                return(new List <Digsite>());
            }
        }
Пример #2
0
        public static List <Digsite> GenerateOrUpdate(List <Digsite> listDigsitesZoneFromXML)
        {
            bool doUpdate = listDigsitesZoneFromXML != null;

            if (doUpdate)
            {
                listDigsitesZoneFromXML.OrderByDescending(c => c.id).ToList();
            }
            List <Digsite> fullList = new List <Digsite>();

            // Extracting the complete list from the DBC
            foreach (var digsite in WoWResearchSite.ExtractAllDigsites())
            {
                if (digsite.Id != 0)
                {
                    Digsite curDigSite = new Digsite {
                        id = (int)digsite.Id, name = digsite.Name(), PriorityDigsites = 1, Active = true
                    };
                    fullList.Add(curDigSite);
                }
            }
            if (doUpdate)
            {
                List <Digsite> finalList = fullList.Concat(listDigsitesZoneFromXML)
                                           .ToLookup(p => p.id)
                                           .Select(g => g.Aggregate((p1, p2) => new Digsite
                {
                    id               = p1.id,
                    name             = p1.name,
                    PriorityDigsites = p2.PriorityDigsites,
                    Active           = p2.Active
                })).ToList();
                return(finalList);
            }
            return /*finalList = */ (fullList);
        }