diff --git a/DepotDownloader/CDRManager.cs b/DepotDownloader/CDRManager.cs index 5fdaa02c..58501ad1 100644 --- a/DepotDownloader/CDRManager.cs +++ b/DepotDownloader/CDRManager.cs @@ -30,6 +30,9 @@ namespace DepotDownloader [BlobField( FieldKey = CDRAppRecordFields.eFieldFilesystemsRecord, Complex = true, Depth = 1 )] public List FileSystems { get; private set; } + + [BlobField( FieldKey = CDRAppRecordFields.eFieldUserDefinedRecord, Depth = 1 )] + public Dictionary UserDefined { get; private set; } } class AppVersion @@ -183,6 +186,24 @@ namespace DepotDownloader return appIDs; } + public static string GetDedicatedServerFolder( int depotId ) + { + App app = GetAppBlob( depotId ); + + if ( app.UserDefined == null ) + return null; + + foreach ( var entry in app.UserDefined ) + { + if ( entry.Key.Equals( "dedicatedserverfolder", StringComparison.OrdinalIgnoreCase ) ) + { + return entry.Value; + } + } + + return null; + } + static byte[] GetCdr() { try diff --git a/DepotDownloader/ContentDownloader.cs b/DepotDownloader/ContentDownloader.cs index b4456d78..db7e5dcd 100644 --- a/DepotDownloader/ContentDownloader.cs +++ b/DepotDownloader/ContentDownloader.cs @@ -34,6 +34,14 @@ namespace DepotDownloader else { Directory.CreateDirectory( installDir ); + + string serverFolder = CDRManager.GetDedicatedServerFolder( depotId ); + if ( serverFolder != null || !serverFolder.Equals( "" ) ) + { + installDir = Path.Combine( installDir, serverFolder ); + Directory.CreateDirectory( installDir ); + + } } } catch @@ -191,7 +199,7 @@ namespace DepotDownloader } float perc = ( ( float )x / ( float )manifest.Nodes.Count ) * 100.0f; - Console.WriteLine( " {0:0.00}%\t{1}", perc, dirEntry.FullName ); + Console.WriteLine( " {0:0.00}%\t{1}", perc, Path.Combine( installDir, dirEntry.FullName ) ); FileInfo fi = new FileInfo( downloadPath );