eft-lootvalueex/Plugin/Utils/ItemUtils.cs
Yui db4003caa7
feat: get best trader offer for items
TODO: Make a better conversion for USD/EUR to RUB
2024-11-08 17:17:10 -03:00

38 lines
1.3 KiB
C#

using EFT.InventoryLogic;
using LootValueEX.Extensions;
using SPT.Reflection.Utils;
namespace LootValueEX.Utils
{
internal class ItemUtils
{
public static float GetArmorDurability(IEnumerable<RepairableComponent> repairableComponents)
{
float totalDurability = 0;
foreach (RepairableComponent component in repairableComponents)
{
totalDurability += component.Durability;
}
return totalDurability;
}
public static Task<Structs.TradeOfferStruct> 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;
}
}