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());
        }
Exemple #2
0
        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());
            }
        }