void HandlePackagesImpl() { Tools.FileUtil.Ops.CreateDirectoryAndSetACLWithFallbackAndRetry(_gameDir); var syncPackagesPath = _gameDir.GetChildDirectoryWithName("syncpackages"); if (!syncPackagesPath.Exists) return; var packages = syncPackagesPath.DirectoryInfo.EnumerateDirectories() .Where(x => File.Exists(Path.Combine(x.FullName, "package.config"))).ToArray(); if (!packages.Any()) return; var tempPath = Path.GetTempPath().ToAbsoluteDirectoryPath().GetChildDirectoryWithName("RpfGenerator"); if (!tempPath.Exists) Directory.CreateDirectory(tempPath.ToString()); var consts = new Uri("https://dl.dropboxusercontent.com/u/18252370/GTA/gta5_const.dat.gz"); using (var wc = new WebClient()) { var data = wc.DownloadData(consts); var decompressed = Decompress(data); using (var ms = new MemoryStream(decompressed)) LoadConsts(ms); } var packager = new Packager(_gameDir, _gameDir.GetChildDirectoryWithName("mods"), tempPath, new Packager.PackagerConfig { TreatImportsAsInserts = true, BuilderConfig = new RpfListBuilder.RpfListBuilderConfig {AudioPathsOnly = true} }); foreach (var p in packages) packager.PackageMod(p.FullName.ToAbsoluteDirectoryPath()); }
private static void Main(string[] args) { LoadConsts(); #if TESTING if (args.Length == 0) { args = new[] { @"D:\games\Rockstar Games\Grand Theft Auto V", @"D:\games\Rockstar Games\Grand Theft Auto V\syncpackages\@RealismDispatchEnhanced", "--treat-imports-as-inserts" }; } #endif var gamePath = args.First().ToAbsoluteDirectoryPath(); var tempPath = Path.GetTempPath().ToAbsoluteDirectoryPath().GetChildDirectoryWithName("RpfGenerator"); var treatImportsAsInsert = args.Contains("--treat-imports-as-inserts"); var audioPathsOnly = args.Contains("--audio-paths-only"); try { if (!tempPath.Exists) Directory.CreateDirectory(tempPath.ToString()); var p = new Packager(gamePath, gamePath.GetChildDirectoryWithName("mods"), tempPath, new Packager.PackagerConfig { TreatImportsAsInserts = treatImportsAsInsert, BuilderConfig = new RpfListBuilder.RpfListBuilderConfig {AudioPathsOnly = audioPathsOnly} }); var dir = args.Length > 1 ? args[1] : Directory.GetCurrentDirectory(); p.PackageMod(dir.ToAbsoluteDirectoryPath()); } finally { Directory.Delete(tempPath.ToString()); } }