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>()); } }
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); }