Fix tradableOnly/marketableOnly not working properly

This commit is contained in:
Archi
2024-03-17 22:06:30 +01:00
parent 5723ee7b19
commit 1c01d8f59f
2 changed files with 25 additions and 2 deletions

View File

@@ -231,7 +231,21 @@ public sealed class ArchiHandler : ClientMsgHandler {
}
foreach (CEcon_Asset? asset in response.assets) {
if (!descriptions.TryGetValue((asset.classid, asset.instanceid), out InventoryDescription? description) || !assetIDs.Add(asset.assetid)) {
if (!assetIDs.Add(asset.assetid)) {
continue;
}
(ulong ClassID, ulong InstanceID) key = (asset.classid, asset.instanceid);
if (!descriptions.TryGetValue(key, out InventoryDescription? description)) {
// Best effort only
description = new InventoryDescription(appID, asset.classid, asset.instanceid);
descriptions.Add(key, description);
}
// Extra bulletproofing against Steam showing us middle finger
if ((tradableOnly && !description.Tradable) || (marketableOnly && !description.Marketable)) {
continue;
}

View File

@@ -363,10 +363,19 @@ public sealed class ArchiWebHandler : IDisposable {
}
foreach (Asset asset in response.Content.Assets) {
if (!descriptions.TryGetValue((asset.ClassID, asset.InstanceID), out InventoryDescription? description) || !assetIDs.Add(asset.AssetID)) {
if (!assetIDs.Add(asset.AssetID)) {
continue;
}
(ulong ClassID, ulong InstanceID) key = (asset.ClassID, asset.InstanceID);
if (!descriptions.TryGetValue(key, out InventoryDescription? description)) {
// Best effort only
description = new InventoryDescription(appID, asset.ClassID, asset.InstanceID);
descriptions.Add(key, description);
}
asset.Description = description;
yield return asset;