using EFT.InventoryLogic; using LootValueEX.Extensions; using SPT.Reflection.Utils; namespace LootValueEX.Utils { internal static class ItemUtils { internal static float GetArmorDurability(IEnumerable repairableComponents) { float totalDurability = 0; foreach (RepairableComponent component in repairableComponents) { totalDurability += component.Durability; } return totalDurability; } internal static Task GetBestTraderValueAsync(Item item) { Structs.TradeOfferStruct bestOffer = new(); item = item.UnstackItem(); foreach (TraderClass trader in ClientAppUtils.GetMainApp().GetClientBackEndSession().DisplayableTraders) { Structs.TradeOfferStruct currentOffer = EconomyUtils.GetTraderItemOffer(trader, item); if (currentOffer.Equals(default) || currentOffer.Price <= 0) continue; if (currentOffer.PriceInRouble > bestOffer.PriceInRouble) bestOffer = currentOffer; } return Task.FromResult(bestOffer); } public static Structs.TradeOfferStruct GetBestTraderValue(Item item) => Task.Run(() => GetBestTraderValueAsync(item)).Result; } }