final
This commit is contained in:
37
BlueLaminate/BlueLaminate.Core/Tradeups/TradeupGraph.cs
Normal file
37
BlueLaminate/BlueLaminate.Core/Tradeups/TradeupGraph.cs
Normal file
@@ -0,0 +1,37 @@
|
||||
namespace BlueLaminate.Core.Tradeups;
|
||||
|
||||
/// <summary>
|
||||
/// A skin that can come OUT of a tradeup, carrying the float bounds needed to map an
|
||||
/// input average float onto this skin's own wear range. <see cref="StatTrakAvailable"/>
|
||||
/// is recorded so the listing-side query (Phase C) can filter ST vs non-ST outputs;
|
||||
/// the graph itself is ST-agnostic.
|
||||
/// </summary>
|
||||
public sealed record TradeupOutputSkin(
|
||||
int SkinId,
|
||||
string Name,
|
||||
decimal FloatMin,
|
||||
decimal FloatMax,
|
||||
bool StatTrakAvailable);
|
||||
|
||||
/// <summary>
|
||||
/// One tradeup "recipe slot": all eligible input skins of a single rarity within one
|
||||
/// collection, and the set of output skins they produce (the next rarity tier present
|
||||
/// in that collection). For a single-collection contract, ten inputs are drawn from
|
||||
/// <see cref="InputSkinIds"/> and each of <see cref="OutputSkins"/> is an equally likely
|
||||
/// outcome, so k_C = <c>OutputSkins.Count</c>.
|
||||
/// </summary>
|
||||
public sealed record TradeupInputGroup(
|
||||
int CollectionId,
|
||||
string CollectionName,
|
||||
WeaponRarity InputRarity,
|
||||
WeaponRarity OutputRarity,
|
||||
IReadOnlyList<int> InputSkinIds,
|
||||
IReadOnlyList<TradeupOutputSkin> OutputSkins);
|
||||
|
||||
/// <summary>
|
||||
/// The full tradeup reference graph derived from the static catalogue: every
|
||||
/// (collection, input rarity) → (output rarity, output skins) edge that yields a
|
||||
/// 10-input weapon tradeup. Built once per process from the monthly-synced catalogue
|
||||
/// (see <see cref="TradeupGraphBuilder"/>); contains no pricing or listing data.
|
||||
/// </summary>
|
||||
public sealed record TradeupGraph(IReadOnlyList<TradeupInputGroup> Groups);
|
||||
Reference in New Issue
Block a user