public override void Run(CompileContext context) { try { bspZip = context.Configuration.BSPZip; gameFolder = context.Configuration.GameFolder; bspPath = context.BSPFile; Keys.vmtTextureKeyWords = File.ReadAllLines(System.IO.Path.Combine(keysFolder, "texturekeys.txt")).ToList(); Keys.vmtMaterialKeyWords = File.ReadAllLines(System.IO.Path.Combine(keysFolder, "materialkeys.txt")).ToList(); Keys.vmfSoundKeys = File.ReadAllLines(System.IO.Path.Combine(keysFolder, "vmfsoundkeys.txt")).ToList(); Keys.vmfMaterialKeys = File.ReadAllLines(System.IO.Path.Combine(keysFolder, "vmfmaterialkeys.txt")).ToList(); Keys.vmfModelKeys = File.ReadAllLines(System.IO.Path.Combine(keysFolder, "vmfmodelkeys.txt")).ToList(); CompilePalLogger.LogLine("Finding sources of game content..."); GetSourceDirectories(gameFolder); CompilePalLogger.LogLine("Reading BSP..."); BSP map = new BSP(new FileInfo(bspPath)); AssetUtils.findBspUtilityFiles(map, sourceDirectories); string unpackDir = System.IO.Path.GetTempPath() + Guid.NewGuid(); UnpackBSP(unpackDir); AssetUtils.findBspPakDependencies(map, unpackDir); CompilePalLogger.LogLine("Initializing pak file..."); PakFile pakfile = new PakFile(map, sourceDirectories); CompilePalLogger.LogLine("Writing file list..."); pakfile.OutputToFile(); CompilePalLogger.LogLine("Running bspzip..."); PackBSP(); CompilePalLogger.LogLine("Finished packing!"); CompilePalLogger.LogLine("---------------------"); CompilePalLogger.LogLine(pakfile.vmtcount + " materials added"); CompilePalLogger.LogLine(pakfile.mdlcount + " models added"); CompilePalLogger.LogLine(pakfile.pcfcount + " particle files added"); CompilePalLogger.LogLine(pakfile.sndcount + " sounds added"); CompilePalLogger.LogLine("Nav file: " + (map.nav.Key != default(string) ? "yes" : "no")); CompilePalLogger.LogLine("Soundscape: " + (map.soundscape.Key != default(string) ? "yes" : "no")); CompilePalLogger.LogLine("Soundscript: " + (map.soundscript.Key != default(string) ? "yes" : "no")); CompilePalLogger.LogLine("Detail File: " + (map.detail.Key != default(string) ? "yes" : "no")); CompilePalLogger.LogLine("Particle Manifest: " + (map.particleManifest.Key != default(string) ? "yes" : "no")); CompilePalLogger.LogLine("---------------------"); } catch (Exception exception) { CompilePalLogger.LogLine("Something broke:"); CompilePalLogger.LogLine(exception.ToString()); } }
public override void Run(CompileContext context) { CompileErrors = new List <Error>(); verbose = GetParameterString().Contains("-verbose"); dryrun = GetParameterString().Contains("-dryrun"); renamenav = GetParameterString().Contains("-renamenav"); include = Regex.IsMatch(GetParameterString(), @"-include\b"); // ensures it doesnt match -includedir includeDir = GetParameterString().Contains("-includedir"); exclude = Regex.IsMatch(GetParameterString(), @"-exclude\b"); // ensures it doesnt match -excludedir excludeDir = GetParameterString().Contains("-excludedir"); excludevpk = GetParameterString().Contains("-excludevpk"); packvpk = GetParameterString().Contains("-vpk"); includefilelist = GetParameterString().Contains("-includefilelist"); usefilelist = GetParameterString().Contains("-usefilelist"); char[] paramChars = GetParameterString().ToCharArray(); List <string> parameters = ParseParameters(paramChars); List <string> includeFiles = new List <string>(); List <string> excludeFiles = new List <string>(); List <string> excludeDirs = new List <string>(); List <string> excludedVpkFiles = new List <string>(); try { CompilePalLogger.LogLine("\nCompilePal - Automated Packaging"); bspZip = context.Configuration.BSPZip; vpk = context.Configuration.VPK; gameFolder = context.Configuration.GameFolder; bspPath = context.CopyLocation; if (!File.Exists(bspPath)) { throw new FileNotFoundException(); } // manually passing in a file list if (usefilelist) { var fileListParam = parameters.First(p => p.StartsWith("usefilelist")).Split(new[] { " " }, 2, StringSplitOptions.None); if (fileListParam.Length > 1 && !string.IsNullOrWhiteSpace(fileListParam[1])) { outputFile = fileListParam[1]; if (!File.Exists(outputFile)) { CompilePalLogger.LogCompileError($"Could not find file list {outputFile}, exiting pack step\n", new Error($"Could not find file list {outputFile}, exiting pack step\n", ErrorSeverity.Error)); return; } CompilePalLogger.LogLine($"Using file list {outputFile}"); PackFileList(context, outputFile); return; } CompilePalLogger.LogCompileError("No file list set, exiting pack step\n", new Error("No file list set, exiting pack step", ErrorSeverity.Error)); return; } outputFile = "BSPZipFiles\\files.txt"; Keys.vmtTextureKeyWords = File.ReadAllLines(System.IO.Path.Combine(keysFolder, "texturekeys.txt")).ToList(); Keys.vmtMaterialKeyWords = File.ReadAllLines(System.IO.Path.Combine(keysFolder, "materialkeys.txt")).ToList(); Keys.vmfSoundKeys = File.ReadAllLines(System.IO.Path.Combine(keysFolder, "vmfsoundkeys.txt")).ToList(); Keys.vmfMaterialKeys = File.ReadAllLines(System.IO.Path.Combine(keysFolder, "vmfmaterialkeys.txt")).ToList(); Keys.vmfModelKeys = File.ReadAllLines(System.IO.Path.Combine(keysFolder, "vmfmodelkeys.txt")).ToList(); // get manually included files if (include) { //Get included files from parameter list foreach (string parameter in parameters) { if (parameter.Contains("include")) { var filePath = parameter.Replace("\"", "").Replace("include ", "").TrimEnd(' '); //Test that file exists if (File.Exists(filePath)) { includeFiles.Add(filePath); } else { CompilePalLogger.LogCompileError($"Could not find file: {filePath}\n", new Error($"Could not find file: {filePath}", $"Could not find file: {filePath}", ErrorSeverity.Caution)); } } } } // get manually included files in directories if (includeDir) { //Get included files from parameter list foreach (string parameter in parameters) { if (parameter.Contains("includedir")) { var folderPath = parameter.Replace("\"", "").Replace("includedir ", "").TrimEnd(' '); //Test that folder exists if (Directory.Exists(folderPath)) { var files = Directory.GetFiles(folderPath, "*", SearchOption.AllDirectories); foreach (var file in files) { includeFiles.Add(file); } } else { CompilePalLogger.LogCompileError($"Could not find folder: {folderPath}\n", new Error($"Could not find folder: {folderPath}", ErrorSeverity.Caution)); } } } } if (exclude) { //Get excluded files from parameter list foreach (string parameter in parameters) { if (Regex.IsMatch(parameter, @"^exclude\b")) { var filePath = parameter.Replace("\"", "") .Replace("exclude ", "") .Replace('/', '\\') .ToLower().TrimEnd(' '); //Test that file exists if (File.Exists(filePath)) { excludeFiles.Add(filePath); } else { CompilePalLogger.LogCompileError($"Could not find file: {filePath}\n", new Error($"Could not find file: {filePath}", ErrorSeverity.Caution)); } } } } if (excludeDir) { //Get excluded directories from parameter list foreach (string parameter in parameters) { if (Regex.IsMatch(parameter, @"^excludedir\b")) { var path = parameter.Replace("\"", "") .Replace("excludedir ", "") .Replace('/', '\\') .ToLower().TrimEnd(' '); //Test that dir exists if (Directory.Exists(path)) { excludeDirs.Add(path); } else { CompilePalLogger.LogCompileError($"Could not find folder: {path}\n", new Error($"Could not find folder: {path}", ErrorSeverity.Caution)); } } } } // exclude files that are in the specified vpk. if (excludevpk) { foreach (string parameter in parameters) { if (parameter.Contains("excludevpk")) { var vpkPath = parameter.Replace("\"", "").Replace("excludevpk ", "").TrimEnd(' '); string[] vpkFileList = GetVPKFileList(vpkPath); foreach (string file in vpkFileList) { excludedVpkFiles.Add(file.ToLower()); } } } } CompilePalLogger.LogLine("Finding sources of game content..."); sourceDirectories = GetSourceDirectories(gameFolder); if (verbose) { CompilePalLogger.LogLine("Source directories:"); foreach (var sourceDirectory in sourceDirectories) { CompilePalLogger.LogLine(sourceDirectory); } } CompilePalLogger.LogLine("Reading BSP..."); BSP map = new BSP(new FileInfo(bspPath)); AssetUtils.findBspUtilityFiles(map, sourceDirectories, renamenav, genParticleManifest); // give files unique names based on map so they dont get overwritten if (dryrun) { outputFile = $"BSPZipFiles\\{Path.GetFileNameWithoutExtension(map.file.FullName)}_files.txt"; } //Set map particle manifest if (genParticleManifest) { map.particleManifest = particleManifest; } string unpackDir = System.IO.Path.GetTempPath() + Guid.NewGuid(); UnpackBSP(unpackDir); AssetUtils.findBspPakDependencies(map, unpackDir); CompilePalLogger.LogLine("Initializing pak file..."); PakFile pakfile = new PakFile(map, sourceDirectories, includeFiles, excludeFiles, excludeDirs, excludedVpkFiles, outputFile); if (includefilelist) { var fileListParams = parameters.Where(p => p.StartsWith("includefilelist")).Select(f => f.Split(new[] { " " }, 2, StringSplitOptions.None)); foreach (var fileListParam in fileListParams) { if (fileListParam.Length <= 1 || string.IsNullOrWhiteSpace(fileListParam[1])) { CompilePalLogger.LogCompileError("No file list parameter set\n", new Error("No file list parameterparameter set", ErrorSeverity.Error)); continue; } var inputFile = fileListParam[1]; if (!File.Exists(inputFile)) { CompilePalLogger.LogCompileError($"Could not find file list {inputFile}\n", new Error($"Could not find file list {inputFile}\n", ErrorSeverity.Error)); continue; } CompilePalLogger.LogDebug($"Adding files from file list {inputFile}"); var filelist = File.ReadAllLines(inputFile); // file list format is internal path, newline, external path for (int i = 0; i < filelist.Length - 1; i += 2) { var internalPath = filelist[i]; var externalPath = filelist[i + 1]; if (!pakfile.AddInternalFile(internalPath, externalPath)) { CompilePalLogger.LogCompileError($"Failed to pack ${externalPath}\n", new Error($"Failed to pack ${externalPath}\n", ErrorSeverity.Error)); } } CompilePalLogger.LogLine($"Added {filelist.Length / 2} files from ${inputFile}"); } } if (packvpk) { string vpkName = context.BSPFile.Replace(".bsp", ".vpk"); if (File.Exists(vpkName)) { File.Delete(vpkName); } var responseFile = pakfile.GetResponseFile(); if (File.Exists(bspPath)) { // Add bsp to the vpk responseFile.Add(bspPath.Replace(gameFolder + "\\", ""), gameFolder); } if (GetParameterString().Contains("-ainfo")) { foreach (string parameter in parameters) { if (parameter.Contains("ainfo")) { var @filePath = parameter.Replace("\"", "").Replace("ainfo ", "").TrimEnd(' '); //Test that file exists if (File.Exists(filePath)) { File.Copy(filePath, Path.Combine(gameFolder, "addoninfo.txt"), true); responseFile.Add("addoninfo.txt", gameFolder); } } } } CompilePalLogger.LogLine("Running VPK..."); foreach (var path in sourceDirectories) { var testedFiles = ""; foreach (var entry in responseFile) { if (entry.Value.Contains(path) || path.Contains(entry.Value)) { testedFiles += entry.Key + "\n"; } } var combinedPath = Path.Combine(path, "_tempResponseFile.txt"); File.WriteAllText(combinedPath, testedFiles); PackVPK(vpkName, combinedPath, path); File.Delete(combinedPath); } File.Delete("_tempResponseFile.txt"); if (GetParameterString().Contains("-ainfo")) { File.Delete(Path.Combine(gameFolder, "addoninfo.txt")); } } else { CompilePalLogger.LogLine("Writing file list..."); pakfile.OutputToFile(); if (dryrun) { CompilePalLogger.LogLine("File list saved as " + Environment.CurrentDirectory + outputFile); } else { PackFileList(context, outputFile); } } CompilePalLogger.LogLine("Finished!"); CompilePalLogger.LogLine("---------------------"); CompilePalLogger.LogLine(pakfile.vmtcount + " materials found"); CompilePalLogger.LogLine(pakfile.mdlcount + " models found"); CompilePalLogger.LogLine(pakfile.pcfcount + " particle files found"); CompilePalLogger.LogLine(pakfile.sndcount + " sounds found"); if (pakfile.vehiclescriptcount != 0) { CompilePalLogger.LogLine(pakfile.vehiclescriptcount + " vehicle scripts found"); } if (pakfile.effectscriptcount != 0) { CompilePalLogger.LogLine(pakfile.effectscriptcount + " effect scripts found"); } if (pakfile.vscriptcount != 0) { CompilePalLogger.LogLine(pakfile.vscriptcount + " vscripts found"); } if (pakfile.panoramaMapIconCount != 0) { CompilePalLogger.LogLine(pakfile.panoramaMapIconCount + " panorama map icons found"); } string additionalFiles = (map.nav.Key != default(string) ? "\n-nav file" : "") + (map.soundscape.Key != default(string) ? "\n-soundscape" : "") + (map.soundscript.Key != default(string) ? "\n-soundscript" : "") + (map.detail.Key != default(string) ? "\n-detail file" : "") + (map.particleManifest.Key != default(string) ? "\n-particle manifest" : "") + (map.radartxt.Key != default(string) ? "\n-radar files" : "") + (map.txt.Key != default(string) ? "\n-loading screen text" : "") + (map.jpg.Key != default(string) ? "\n-loading screen image" : "") + (map.kv.Key != default(string) ? "\n-kv file" : "") + (map.res.Key != default(string) ? "\n-res file" : ""); if (additionalFiles != "") { CompilePalLogger.LogLine("additional files: " + additionalFiles); } CompilePalLogger.LogLine("---------------------"); } catch (FileNotFoundException) { CompilePalLogger.LogCompileError($"Could not find {bspPath}\n", new Error($"Could not find {bspPath}", ErrorSeverity.Error)); } catch (Exception exception) { CompilePalLogger.LogLine("Something broke:"); CompilePalLogger.LogCompileError($"{exception}\n", new Error(exception.ToString(), "CompilePal Internal Error", ErrorSeverity.FatalError)); } }
public override void Run(CompileContext context) { verbose = GetParameterString().Contains("-verbose"); dryrun = GetParameterString().Contains("-dryrun"); renamenav = GetParameterString().Contains("-renamenav"); include = GetParameterString().Contains("-include"); exclude = GetParameterString().Contains("-exclude"); packvpk = GetParameterString().Contains("-vpk"); char[] paramChars = GetParameterString().ToCharArray(); List <string> parameters = ParseParameters(paramChars); List <string> includeFiles = new List <string>(); List <string> excludeFiles = new List <string>(); try { CompilePalLogger.LogLine("\nCompilePal - Automated Packaging"); bspZip = context.Configuration.BSPZip; vpk = context.Configuration.VPK; gameFolder = context.Configuration.GameFolder; bspPath = context.CopyLocation; if (!File.Exists(bspPath)) { throw new FileNotFoundException(); } Keys.vmtTextureKeyWords = File.ReadAllLines(System.IO.Path.Combine(keysFolder, "texturekeys.txt")).ToList(); Keys.vmtMaterialKeyWords = File.ReadAllLines(System.IO.Path.Combine(keysFolder, "materialkeys.txt")).ToList(); Keys.vmfSoundKeys = File.ReadAllLines(System.IO.Path.Combine(keysFolder, "vmfsoundkeys.txt")).ToList(); Keys.vmfMaterialKeys = File.ReadAllLines(System.IO.Path.Combine(keysFolder, "vmfmaterialkeys.txt")).ToList(); Keys.vmfModelKeys = File.ReadAllLines(System.IO.Path.Combine(keysFolder, "vmfmodelkeys.txt")).ToList(); // get manually included files if (include) { //Get included files from parameter list foreach (string parameter in parameters) { if (parameter.Contains("include")) { var @filePath = parameter.Replace("\"", "").Replace("include ", "").TrimEnd(' '); //Test that file exists if (File.Exists(filePath)) { includeFiles.Add(filePath); } else { CompilePalLogger.LogLineColor($"Could not find file: {filePath}", Error.GetSeverityBrush(2)); } } } } if (exclude) { //Get excluded files from parameter list foreach (string parameter in parameters) { if (parameter.Contains("exclude")) { var @filePath = parameter.Replace("\"", "").Replace("exclude ", "").Replace('/', '\\').ToLower().TrimEnd(' '); //Test that file exists if (File.Exists(filePath)) { excludeFiles.Add(filePath); } else { CompilePalLogger.LogLineColor($"Could not find file: {filePath}", Error.GetSeverityBrush(2)); } } } } CompilePalLogger.LogLine("Finding sources of game content..."); sourceDirectories = GetSourceDirectories(gameFolder); CompilePalLogger.LogLine("Reading BSP..."); BSP map = new BSP(new FileInfo(bspPath)); AssetUtils.findBspUtilityFiles(map, sourceDirectories, renamenav, genParticleManifest); //Set map particle manifest if (genParticleManifest) { map.particleManifest = particleManifest; } string unpackDir = System.IO.Path.GetTempPath() + Guid.NewGuid(); UnpackBSP(unpackDir); AssetUtils.findBspPakDependencies(map, unpackDir); CompilePalLogger.LogLine("Initializing pak file..."); PakFile pakfile = new PakFile(map, sourceDirectories, includeFiles, excludeFiles); if (packvpk) { string vpkName = context.BSPFile.Replace(".bsp", ".vpk"); if (File.Exists(vpkName)) { File.Delete(vpkName); } var responseFile = pakfile.GetResponseFile(); if (File.Exists(bspPath)) { // Add bsp to the vpk responseFile.Add(bspPath.Replace(gameFolder + "\\", ""), gameFolder); } if (GetParameterString().Contains("-ainfo")) { foreach (string parameter in parameters) { if (parameter.Contains("ainfo")) { var @filePath = parameter.Replace("\"", "").Replace("ainfo ", "").TrimEnd(' '); //Test that file exists if (File.Exists(filePath)) { File.Copy(filePath, Path.Combine(gameFolder, "addoninfo.txt"), true); responseFile.Add("addoninfo.txt", gameFolder); } } } } CompilePalLogger.LogLine("Running VPK..."); foreach (var path in sourceDirectories) { var testedFiles = ""; foreach (var entry in responseFile) { if (entry.Value.Contains(path) || path.Contains(entry.Value)) { testedFiles += entry.Key + "\n"; } } var combinedPath = Path.Combine(path, "_tempResponseFile.txt"); File.WriteAllText(combinedPath, testedFiles); PackVPK(vpkName, combinedPath, path); File.Delete(combinedPath); } File.Delete("_tempResponseFile.txt"); if (GetParameterString().Contains("-ainfo")) { File.Delete(Path.Combine(gameFolder, "addoninfo.txt")); } } else { CompilePalLogger.LogLine("Writing file list..."); pakfile.OutputToFile(); if (dryrun) { CompilePalLogger.LogLine("File list saved as " + Environment.CurrentDirectory + "\\files.txt"); } else { CompilePalLogger.LogLine("Running bspzip..."); PackBSP(); } CompilePalLogger.LogLine("Copying packed bsp to vmf folder..."); if (File.Exists(context.BSPFile)) { if (File.Exists(context.BSPFile + ".unpacked")) { File.Delete(context.BSPFile + ".unpacked"); } File.Move(context.BSPFile, context.BSPFile + ".unpacked"); } File.Copy(bspPath, context.BSPFile); } CompilePalLogger.LogLine("Finished!"); CompilePalLogger.LogLine("---------------------"); CompilePalLogger.LogLine(pakfile.vmtcount + " materials found"); CompilePalLogger.LogLine(pakfile.mdlcount + " models found"); CompilePalLogger.LogLine(pakfile.pcfcount + " particle files found"); CompilePalLogger.LogLine(pakfile.sndcount + " sounds found"); if (pakfile.vehiclescriptcount != 0) { CompilePalLogger.LogLine(pakfile.vehiclescriptcount + " vehicle scripts found"); } if (pakfile.effectscriptcount != 0) { CompilePalLogger.LogLine(pakfile.effectscriptcount + " effect scripts found"); } if (pakfile.vscriptcount != 0) { CompilePalLogger.LogLine(pakfile.vscriptcount + " vscripts found"); } string additionalFiles = (map.nav.Key != default(string) ? "\n-nav file" : "") + (map.soundscape.Key != default(string) ? "\n-soundscape" : "") + (map.soundscript.Key != default(string) ? "\n-soundscript" : "") + (map.detail.Key != default(string) ? "\n-detail file" : "") + (map.particleManifest.Key != default(string) ? "\n-particle manifest" : "") + (map.radartxt.Key != default(string) ? "\n-radar files" : "") + (map.txt.Key != default(string) ? "\n-loading screen text" : "") + (map.jpg.Key != default(string) ? "\n-loading screen image" : "") + (map.kv.Key != default(string) ? "\n-kv file" : "") + (map.res.Key != default(string) ? "\n-res file" : ""); if (additionalFiles != "") { CompilePalLogger.LogLine("additional files: " + additionalFiles); } CompilePalLogger.LogLine("---------------------"); } catch (FileNotFoundException) { CompilePalLogger.LogLine("FAILED - Could not find " + bspPath); } catch (Exception exception) { CompilePalLogger.LogLine("Something broke:"); CompilePalLogger.LogLine(exception.ToString()); } }
public override void Run(CompileContext context) { verbose = GetParameterString().Contains("-verbose"); dryrun = GetParameterString().Contains("-dryrun"); renamenav = GetParameterString().Contains("-renamenav"); try { CompilePalLogger.LogLine("\nCompilePal - Automated Packaging"); bspZip = context.Configuration.BSPZip; gameFolder = context.Configuration.GameFolder; bspPath = context.CopyLocation; if (!File.Exists(bspPath)) { throw new FileNotFoundException(); } Keys.vmtTextureKeyWords = File.ReadAllLines(System.IO.Path.Combine(keysFolder, "texturekeys.txt")).ToList(); Keys.vmtMaterialKeyWords = File.ReadAllLines(System.IO.Path.Combine(keysFolder, "materialkeys.txt")).ToList(); Keys.vmfSoundKeys = File.ReadAllLines(System.IO.Path.Combine(keysFolder, "vmfsoundkeys.txt")).ToList(); Keys.vmfMaterialKeys = File.ReadAllLines(System.IO.Path.Combine(keysFolder, "vmfmaterialkeys.txt")).ToList(); Keys.vmfModelKeys = File.ReadAllLines(System.IO.Path.Combine(keysFolder, "vmfmodelkeys.txt")).ToList(); CompilePalLogger.LogLine("Finding sources of game content..."); sourceDirectories = GetSourceDirectories(gameFolder); CompilePalLogger.LogLine("Reading BSP..."); BSP map = new BSP(new FileInfo(bspPath)); AssetUtils.findBspUtilityFiles(map, sourceDirectories, renamenav); string unpackDir = System.IO.Path.GetTempPath() + Guid.NewGuid(); UnpackBSP(unpackDir); AssetUtils.findBspPakDependencies(map, unpackDir); CompilePalLogger.LogLine("Initializing pak file..."); PakFile pakfile = new PakFile(map, sourceDirectories); CompilePalLogger.LogLine("Writing file list..."); pakfile.OutputToFile(); if (dryrun) { CompilePalLogger.LogLine("File list saved as " + Environment.CurrentDirectory + "\\files.txt"); } else { CompilePalLogger.LogLine("Running bspzip..."); PackBSP(); } CompilePalLogger.LogLine("Finished!"); CompilePalLogger.LogLine("---------------------"); CompilePalLogger.LogLine(pakfile.vmtcount + " materials found"); CompilePalLogger.LogLine(pakfile.mdlcount + " models found"); CompilePalLogger.LogLine(pakfile.pcfcount + " particle files found"); CompilePalLogger.LogLine(pakfile.sndcount + " sounds found"); string additionalFiles = (map.nav.Key != default(string) ? "\n-nav file" : "") + (map.soundscape.Key != default(string) ? "\n-soundscape" : "") + (map.soundscript.Key != default(string) ? "\n-soundscript" : "") + (map.detail.Key != default(string) ? "\n-detail file" : "") + (map.particleManifest.Key != default(string) ? "\n-particle manifest" : "") + (map.radartxt.Key != default(string) ? "\n-radar files" : "") + (map.txt.Key != default(string) ? "\n-loading screen text" : "") + (map.jpg.Key != default(string) ? "\n-loading screen image" : "") + (map.kv.Key != default(string) ? "\n-kv file" : "") + (map.res.Key != default(string) ? "\n-res file" : ""); CompilePalLogger.LogLine(additionalFiles != default(string) ? "additional files: " + additionalFiles : "none"); CompilePalLogger.LogLine("---------------------"); } catch (FileNotFoundException) { CompilePalLogger.LogLine("FAILED - Could not find " + bspPath); } catch (Exception exception) { CompilePalLogger.LogLine("Something broke:"); CompilePalLogger.LogLine(exception.ToString()); } }
public override void Run(CompileContext context) { verbose = GetParameterString().Contains("-verbose"); dryrun = GetParameterString().Contains("-dryrun"); renamenav = GetParameterString().Contains("-renamenav"); try { CompilePalLogger.LogLine("\nCompilePal - Automated Packaging"); bspZip = context.Configuration.BSPZip; gameFolder = context.Configuration.GameFolder; bspPath = context.CopyLocation; Keys.vmtTextureKeyWords = File.ReadAllLines(System.IO.Path.Combine(keysFolder, "texturekeys.txt")).ToList(); Keys.vmtMaterialKeyWords = File.ReadAllLines(System.IO.Path.Combine(keysFolder, "materialkeys.txt")).ToList(); Keys.vmfSoundKeys = File.ReadAllLines(System.IO.Path.Combine(keysFolder, "vmfsoundkeys.txt")).ToList(); Keys.vmfMaterialKeys = File.ReadAllLines(System.IO.Path.Combine(keysFolder, "vmfmaterialkeys.txt")).ToList(); Keys.vmfModelKeys = File.ReadAllLines(System.IO.Path.Combine(keysFolder, "vmfmodelkeys.txt")).ToList(); CompilePalLogger.LogLine("Finding sources of game content..."); GetSourceDirectories(gameFolder); CompilePalLogger.LogLine("Reading BSP..."); BSP map = new BSP(new FileInfo(bspPath)); AssetUtils.findBspUtilityFiles(map, sourceDirectories, renamenav); string unpackDir = System.IO.Path.GetTempPath() + Guid.NewGuid(); UnpackBSP(unpackDir); AssetUtils.findBspPakDependencies(map, unpackDir); CompilePalLogger.LogLine("Initializing pak file..."); PakFile pakfile = new PakFile(map, sourceDirectories); CompilePalLogger.LogLine("Writing file list..."); pakfile.OutputToFile(); if (dryrun) { CompilePalLogger.LogLine("File list saved as " + Environment.CurrentDirectory + "\\files.txt"); } else { CompilePalLogger.LogLine("Running bspzip..."); PackBSP(); } CompilePalLogger.LogLine("Finished!"); CompilePalLogger.LogLine("---------------------"); CompilePalLogger.LogLine(pakfile.vmtcount + " materials found"); CompilePalLogger.LogLine(pakfile.mdlcount + " models found"); CompilePalLogger.LogLine(pakfile.pcfcount + " particle files found"); CompilePalLogger.LogLine(pakfile.sndcount + " sounds found"); string additionalFiles = (map.nav.Key != default(string) ? "\n-nav file" : "") + (map.soundscape.Key != default(string) ? "\n-soundscape" : "") + (map.soundscript.Key != default(string) ? "\n-soundscript" : "") + (map.detail.Key != default(string) ? "\n-detail file" : "") + (map.particleManifest.Key != default(string) ? "\n-particle manifest" : "") + (map.radartxt.Key != default(string) ? "\n-radar files" : "") + (map.txt.Key != default(string) ? "\n-loading screen text" : "") + (map.jpg.Key != default(string) ? "\n-loading screen image" : "") + (map.kv.Key != default(string) ? "\n-kv file" : ""); CompilePalLogger.LogLine(additionalFiles != default(string) ? "additional files: " + additionalFiles : "none"); CompilePalLogger.LogLine("---------------------"); } catch (Exception exception) { CompilePalLogger.LogLine("Something broke:"); CompilePalLogger.LogLine(exception.ToString()); } }