using System.Collections.Generic; using Dalamud.Plugin.Services; using LLib.Shop.Model; using LLib.Shop.Searchers; namespace LLib.Shop; public sealed class VendorResolver { private readonly GilShopSearcher _gilShopSearcher; private readonly SpecialShopSearcher _specialShopSearcher; private readonly GCShopSearcher _gcShopSearcher; public VendorResolver(IDataManager dataManager, NpcPositionCache positionCache) { _gilShopSearcher = new GilShopSearcher(dataManager, positionCache); _specialShopSearcher = new SpecialShopSearcher(dataManager, positionCache); _gcShopSearcher = new GCShopSearcher(dataManager, positionCache); } public IReadOnlyList FindVendorsForItem(uint itemId) { List list = new List(); list.AddRange(_gilShopSearcher.Search(itemId)); list.AddRange(_specialShopSearcher.Search(itemId)); list.AddRange(_gcShopSearcher.Search(itemId)); return list; } public IReadOnlyList FindVendorsForItem(uint itemId, EShopType shopType) { return shopType switch { EShopType.GilShop => _gilShopSearcher.Search(itemId), EShopType.SpecialShop => _specialShopSearcher.Search(itemId), EShopType.GCShop => _gcShopSearcher.Search(itemId), _ => new List(), }; } public ShopSearchResult? FindGilVendor(uint itemId) { List list = _gilShopSearcher.Search(itemId); if (list.Count <= 0) { return null; } return list[0]; } }