From d59f3524c898dedb9ff9671ec4d842be91675f38 Mon Sep 17 00:00:00 2001 From: Nicholas Hastings Date: Wed, 13 Nov 2013 12:30:35 -0500 Subject: [PATCH] Add support for "depotfromapp". --- DepotDownloader/ContentDownloader.cs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/DepotDownloader/ContentDownloader.cs b/DepotDownloader/ContentDownloader.cs index aa5c8b83..bcf349db 100644 --- a/DepotDownloader/ContentDownloader.cs +++ b/DepotDownloader/ContentDownloader.cs @@ -207,6 +207,21 @@ namespace DepotDownloader if (depotChild == KeyValue.Invalid) return INVALID_MANIFEST_ID; + if (depotChild["depotfromapp"] != KeyValue.Invalid) + { + uint otherAppId = (uint)depotChild["depotfromapp"].AsInteger(); + if (otherAppId == appId) + { + // This shouldn't ever happen, but ya never know with Valve. Don't infinite loop. + Console.WriteLine("App {0}, Depot {1} has depotfromapp of {2}!", + appId, depotId, otherAppId); + return INVALID_MANIFEST_ID; + } + + steam3.RequestAppInfo(otherAppId); + return GetSteam3DepotManifest(depotId, otherAppId, branch); + } + var manifests = depotChild["manifests"]; var manifests_encrypted = depotChild["encryptedmanifests"]; @@ -246,10 +261,6 @@ namespace DepotDownloader if (node.Value == null) return INVALID_MANIFEST_ID; - // These are broken and don't care enough to figure out why at the moment - if (depotChild["depotfromapp"] != KeyValue.Invalid) - return INVALID_MANIFEST_ID; - return UInt64.Parse(node.Value); }