/// <summary> /// Creates a particles_manifest.txt with the particles included in the base game plus the ones found in the particles folder. /// </summary> /// <param name="launcher">An instance of the Source SDK lib</param> public static void CreateManifest(Launcher launcher) { if (launcher == null) { return; } VPKManager vpkManager = new VPKManager(launcher); vpkManager.extractFile("particles/particles_manifest.txt"); string modPath = launcher.GetCurrentMod().installPath; KeyValue manifest = KeyValue.readChunkfile(launcher.GetCurrentMod().installPath + "\\particles\\particles_manifest.txt"); foreach (string file in Directory.GetFiles(launcher.GetCurrentMod().installPath + "\\particles", "*.pcf", SearchOption.AllDirectories)) { Uri path1 = new Uri(modPath + "\\"); Uri path2 = new Uri(file); Uri diff = path1.MakeRelativeUri(path2); manifest.addChild(new KeyValue("file", diff.OriginalString)); } KeyValue.writeChunkFile(launcher.GetCurrentMod().installPath + "\\particles\\particles_manifest.txt", manifest); }
private void FileAction(int action) { string modPath = launcher.GetCurrentMod().installPath; switch (action) { case Action.OPEN: { if (okButton.Enabled) { DialogResult = DialogResult.OK; Close(); } break; } case Action.EDIT: { foreach (string filePath in GetSelectedPaths()) { string extractedPath = vpkManager.getExtractedPath(filePath); if (extractedPath == string.Empty) { vpkManager.extractFile(filePath); extractedPath = modPath + "\\" + filePath; } else if (extractedPath != modPath + "\\" + filePath) { File.Copy(extractedPath, modPath + "\\" + filePath, true); } Process.Start("notepad", extractedPath); } ListFiles(true); TraverseDirectory(CurrentDirectory); } break; case Action.OPEN_FILE_LOCATION: { List <string> paths = GetSelectedPaths(); for (int i = 0; i < paths.Count; i++) { paths[i] = vpkManager.getExtractedPath(paths[i]).Replace("/", "\\"); if (paths[i].Contains("\\")) { paths[i] = paths[i].Substring(0, paths[i].LastIndexOf("\\") + 1); } } paths = paths.Distinct().ToList(); foreach (string path in paths) { Process.Start(path); } } break; case Action.DELETE: { List <string> selectedPaths = GetSelectedPaths(); foreach (string filePath in selectedPaths) { string fullPath = vpkManager.getExtractedPath(filePath); if (fullPath != String.Empty) { File.Delete(fullPath); } } ListFiles(true); TraverseDirectory(CurrentDirectory); } break; case Action.EXTRACT: { //var nodes = list.Selection; //List<string> values = new List<string>(); //foreach (TreeListNode node in nodes) //{ // values.Add(node.Tag.ToString()); //} List <string> selectedPaths = GetSelectedPaths(); foreach (string filePath in selectedPaths) { vpkManager.extractFile(filePath); } Process.Start(modPath); ListFiles(true); TraverseDirectory(CurrentDirectory); } break; } }