using Core.Annotations;
using Core.Models.Eft.Common;
using Core.Models.Eft.Common.Tables;
using Core.Models.Spt.Config;
using Core.Models.Spt.Fence;
namespace Core.Services;
[Injectable(InjectionType.Singleton)]
public class FenceService
{
///
/// Replace main fence assort with new assort
///
/// New assorts to replace old with
public void SetFenceAssort(TraderAssort assort)
{
throw new NotImplementedException();
}
///
/// Replace discount fence assort with new assort
///
/// New assorts to replace old with
public void SetDiscountFenceAssort(TraderAssort assort)
{
throw new NotImplementedException();
}
///
/// Get main fence assort
///
/// TraderAssort
public TraderAssort GetMainFenceAssort()
{
throw new NotImplementedException();
}
///
/// Get discount fence assort
///
/// TraderAssort
public TraderAssort GetDiscountFenceAssort()
{
throw new NotImplementedException();
}
///
/// Replace high rep level fence assort with new assort
///
/// New assorts to replace old with
public void SetFenceDiscountAssort(TraderAssort discountAssort)
{
throw new NotImplementedException();
}
///
/// Get assorts player can purchase
/// Adjust prices based on fence level of player
///
/// Player profile
/// TraderAssort
public TraderAssort GetFenceAssorts(PmcData pmcProfile)
{
throw new NotImplementedException();
}
///
/// Adds to fence assort a single item (with its children)
///
/// the items to add with all its childrens
/// the most parent item of the array
public void AddItemsToFenceAssort(List- items, Item mainItem)
{
throw new NotImplementedException();
}
///
/// Calculates the overall price for an item (with all its children)
///
/// the item tpl to calculate the fence price for
/// the items (with its children) to calculate fence price for
/// the fence price of the item
public double GetItemPrice(string itemTpl, List
- items)
{
throw new NotImplementedException();
}
///
/// Calculate the overall price for an ammo box, where only one item is
/// the ammo box itself and every other items are the bullets in that box
///
/// the ammo box (and all its children ammo items)
/// the price of the ammo box
protected double GetAmmoBoxPrice(List
- items)
{
throw new NotImplementedException();
}
///
/// Adjust all items contained inside an assort by a multiplier
///
/// (clone)Assort that contains items with prices to adjust
/// multipler to use on items
/// preset multipler to use on presets
protected void AdjustAssortItemPricesByConfigMultiplier(
TraderAssort assort,
double itemMultipler,
double presetMultiplier)
{
throw new NotImplementedException();
}
///
/// Merge two trader assort files together
///
/// assort 1#
/// assort #2
/// merged assort
protected TraderAssort MergeAssorts(TraderAssort firstAssort, TraderAssort secondAssort)
{
throw new NotImplementedException();
}
///
/// Adjust assorts price by a modifier
///
/// assort item details
/// assort to be modified
/// value to multiply item price by
/// value to multiply preset price by
protected void AdjustItemPriceByModifier(
Item item,
TraderAssort assort,
double modifier,
double presetModifier)
{
throw new NotImplementedException();
}
///
/// Get fence assorts with no price adjustments based on fence rep
///
/// TraderAssort
public TraderAssort GetRawFenceAssorts()
{
throw new NotImplementedException();
}
///
/// Does fence need to perform a partial refresh because its passed the refresh timer defined in trader.json
///
/// true if it needs a partial refresh
public bool NeedsPartialRefresh()
{
throw new NotImplementedException();
}
///
/// Replace a percentage of fence assorts with freshly generated items
///
public void PerformPartialRefresh()
{
throw new NotImplementedException();
}
///
/// Handle the process of folding new assorts into existing assorts, when a new assort exists already, increment its StackObjectsCount instead
///
/// Assorts to fold into existing fence assorts
/// Current fence assorts new assorts will be added to
protected void UpdateFenceAssorts(
CreateFenceAssortsResult newFenceAssorts,
TraderAssort existingFenceAssorts
)
{
throw new NotImplementedException();
}
///
/// Increment fence next refresh timestamp by current timestamp + partialRefreshTimeSeconds from config
///
protected void IncrementPartialRefreshTime()
{
throw new NotImplementedException();
}
///
/// Get values that will hydrate the passed in assorts back to the desired counts
///
/// Current assorts after items have been removed
/// Base counts assorts should be adjusted to
/// GenerationAssortValues object with adjustments needed to reach desired state
protected GenerationAssortValues GetItemCountsToGenerate(
Item[] assortItems,
GenerationAssortValues generationValues
)
{
throw new NotImplementedException();
}
///
/// Delete desired number of items from assort (including children)
///
///
///
protected void DeleteRandomAssorts(int itemCountToReplace, TraderAssort assort)
{
throw new NotImplementedException();
}
///
/// Choose an item at random and remove it + mods from assorts
///
/// Trader assort to remove item from
/// Pool of root items to pick from to remove
protected void RemoveRandomItemFromAssorts(TraderAssort assort, Item[] rootItems)
{
throw new NotImplementedException();
}
///
/// Get an integer rounded count of items to replace based on percentrage from traderConfig value
///
/// total item count
/// rounded int of items to replace
protected int GetCountOfItemsToReplace(int totalItemCount)
{
throw new NotImplementedException();
}
///
/// Get the count of items fence offers
///
/// int
public int GetOfferCount()
{
throw new NotImplementedException();
}
///
/// Create trader assorts for fence and store in fenceService cache
/// Uses fence base cache generated on server start as a base
///
public void GenerateFenceAssorts()
{
throw new NotImplementedException();
}
///
/// Convert the intermediary assort data generated into format client can process
///
/// Generated assorts that will be converted
/// TraderAssort
protected TraderAssort ConvertIntoFenceAssort(CreateFenceAssortsResult intermediaryAssorts)
{
throw new NotImplementedException();
}
///
/// Create object that contains calculated fence assort item values to make based on config
/// Stored in this.DesiredAssortCounts
///
protected void CreateInitialFenceAssortGenerationValues()
{
throw new NotImplementedException();
}
///
/// Create skeleton to hold assort items
///
/// TraderAssort object
protected TraderAssort CreateFenceAssortSkeleton()
{
throw new NotImplementedException();
}
///
/// Hydrate assorts parameter object with generated assorts
///
/// Number of assorts to generate
/// Loyalty level to set new item to
/// CreateFenceAssortsResult
protected CreateFenceAssortsResult CreateAssorts(GenerationAssortValues itemCounts, int loyaltyLevel)
{
throw new NotImplementedException();
}
///
/// Add item assorts to existing assort data
///
/// Number to add
/// Assorts data to add to
/// Base data to draw from
///
/// Loyalty level to set new item to
protected void AddItemAssorts(
int assortCount,
CreateFenceAssortsResult assorts,
TraderAssort baseFenceAssortClone,
Dictionary itemTypeLimits,
int loyaltyLevel
)
{
throw new NotImplementedException();
}
///
/// Find an assort item that matches the first parameter, also matches based on upd properties
/// e.g. salewa hp resource units left
///
/// item to look for a match against
/// Db details of matching item
/// Items to search through
/// Matching assort item
protected virtual Item GetMatchingItem(
Item rootItemBeingAdded,
TemplateItem itemDbDetails,
List
> itemsWithChildren)
{
throw new NotImplementedException();
}
///
/// Should this item be forced into only 1 stack on fence
///
/// Existing item from fence assort
/// Item we want to add db details
/// True item should be force stacked
protected virtual bool ItemShouldBeForceStacked(Item existingItem, TemplateItem itemDbDetails)
{
throw new NotImplementedException();
}
protected virtual bool ItemInPreventDupeCategoryList(string tpl)
{
throw new NotImplementedException();
}
///
/// Adjust price of item based on what is left to buy (resource/uses left)
///
/// All barter scheme for item having price adjusted
/// Root item having price adjusted
/// Db template of item
protected virtual void AdjustItemPriceByQuality(
Dictionary>> barterSchemes,
Item itemRoot,
TemplateItem itemTemplate)
{
throw new NotImplementedException();
}
protected virtual Dictionary GetMatchingItemLimit(
Dictionary itemTypeLimits,
string itemTpl)
{
throw new NotImplementedException();
}
///
/// Find presets in base fence assort and add desired number to 'assorts' parameter
///
///
/// Assorts to add preset to
/// Base data to draw from
/// Which loyalty level is required to see/buy item
protected virtual void AddPresetsToAssort(
int desiredWeaponPresetsCount,
int desiredEquipmentPresetsCount,
CreateFenceAssortsResult assorts,
TraderAssort baseFenceAssort,
int loyaltyLevel)
{
throw new NotImplementedException();
}
///
/// Adjust plate / soft insert durability values
///
/// Armor item array to add mods into
/// Armor items db template
protected virtual void RandomiseArmorModDurability(List- armor, TemplateItem itemDbDetails)
{
throw new NotImplementedException();
}
///
/// Randomise the durability values of items on armor with a passed in slot
///
/// Slots of items to randomise
/// Array of armor + inserts to get items from
protected virtual void RandomiseArmorSoftInsertDurabilities(List softInsertSlots, List
- armorItemAndMods)
{
throw new NotImplementedException();
}
///
/// Randomise the durability values of plate items in armor
/// Has chance to remove plate
///
/// Slots of items to randomise
/// Array of armor + inserts to get items from
protected virtual void RandomiseArmorInsertsDurabilities(List plateSlots, List
- armorItemAndMods)
{
throw new NotImplementedException();
}
///
/// Get stack size of a singular item (no mods)
///
/// item being added to fence
/// Stack size
protected virtual int GetSingleItemStackCount(TemplateItem itemDbDetails)
{
throw new NotImplementedException();
}
///
/// Remove parts of a weapon prior to being listed on flea
///
/// Weapon to remove parts from
protected virtual void RemoveRandomModsOfItem(List
- itemAndMods)
{
throw new NotImplementedException();
}
///
/// Roll % chance check to see if item should be removed
///
/// Weapon mod being checked
/// Current list of items on weapon being deleted
/// True if item will be removed
protected virtual bool PresetModItemWillBeRemoved(Item weaponMod, List itemsBeingDeleted)
{
throw new NotImplementedException();
}
///
/// Randomise items' upd properties e.g. med packs/weapons/armor
///
/// Item being randomised
/// Item being edited
protected virtual void RandomiseItemUpdProperties(TemplateItem itemDetails, Item itemToAdjust)
{
throw new NotImplementedException();
}
///
/// Generate a randomised current and max durabiltiy value for an armor item
///
/// Item to create values for
/// Max durabiltiy percent min/max values
/// Durability + MaxDurability values
protected virtual UpdRepairable GetRandomisedArmorDurabilityValues(
TemplateItem itemDetails,
ItemDurabilityCurrentMax equipmentDurabilityLimits)
{
throw new NotImplementedException();
}
///
/// Construct item limit record to hold max and current item count
///
/// limits as defined in config
/// record, key: item tplId, value: current/max item count allowed
protected Dictionary InitItemLimitCounter(Dictionary limits)
{
throw new NotImplementedException();
}
///
/// Get the next update timestamp for fence
///
/// future timestamp
public int GetNextFenceUpdateTimestamp()
{
throw new NotImplementedException();
}
///
/// Get fence refresh time in seconds
///
/// Refresh time in seconds
protected int GetFenceRefreshTime()
{
throw new NotImplementedException();
}
///
/// Get fence level the passed in profile has
///
/// Player profile
/// FenceLevel object
public FenceLevel GetFenceInfo(PmcData pmcData)
{
throw new NotImplementedException();
}
///
/// Remove or lower stack size of an assort from fence by id
///
/// assort id to adjust
/// Count of items bought
public void AmendOrRemoveFenceOffer(string assortId, int buyCount)
{
throw new NotImplementedException();
}
protected void DeleteOffer(string assortId, List
- assorts)
{
throw new NotImplementedException();
}
}