static void ModMountCfg(string gmod, string cstrike) { VProperty prop = VdfConvert.Deserialize(File.ReadAllText(string.Join(Path.DirectorySeparatorChar, new List <string> { gmod, "garrysmod", "cfg", "mount.cfg" }))); prop.Value["cstrike"] = new VValue(cstrike); File.WriteAllText(string.Join(Path.DirectorySeparatorChar, new List <string> { gmod, "garrysmod", "cfg", "mount.cfg" }), VdfConvert.Serialize(prop)); }
public static string toVdf(BindingList <Mount> Mounts) { var mountcfg = new Dictionary <string, string>(); foreach (var mount in Mounts) { mountcfg.Add(mount.Name, mount.Path.FullName); } return(VdfConvert.Serialize(new VProperty("mountcfg", JToken.FromObject(mountcfg).ToVdf()), new VdfSerializerSettings { UsesEscapeSequences = false })); }
public void Save(string savename) { // serialize back to a string string newLevel = VdfConvert.Serialize(level); // remove opening and closing curly braces as vmf does not use these string newVmf = newLevel.Substring(1, newLevel.Length - 4); // untab every line once to make thing look nicer newVmf = newVmf.Replace("\n\t", "\n"); // write the new vmf output // TODO: we could do a compile here if we felt like it File.WriteAllText(savename, newVmf); }
private void WriteGameInfo(VToken info) { var updated = EnableFormatting ? VdfConvert.Serialize(info, VdfSerializerSettings.Common) : VdfConvert.Serialize(info, VdfSerializerSettings.Default); File.WriteAllText(_path, updated, Windows1252); }
private static int XmlToVdf(string xmlFile, string vdfFile) { try { Dictionary <string, Achievement> achievements = new Dictionary <string, Achievement>(); string language = null; string achId = ""; // Read the XML and get the achievements XmlReader xml = XmlReader.Create(xmlFile); while (xml.Read()) { if (xml.NodeType != XmlNodeType.Element) { continue; } if (language == null) { xml.MoveToAttribute("language"); language = xml.Value; } else { if (xml.HasAttributes) { xml.MoveToAttribute("key"); achId = xml.Value; achievements.Add(achId, new Achievement()); } else { string name = xml.Name; string value = xml.ReadString(); if (name == "name") { achievements[achId].Name = value; } else { achievements[achId].Description = value; } } } } // Now write everything in the VDF VProperty root = new VProperty(); root.Key = "lang"; VObject obj = new VObject(); obj.Add("Language", new VValue(language)); VObject tokens = new VObject(); foreach (var ach in achievements) { tokens.Add(ach.Key + "_NAME", new VValue(ach.Value.Name)); tokens.Add(ach.Key + "_DESC", new VValue(ach.Value.Description)); } obj.Add("Tokens", tokens); VProperty propTokens = new VProperty() { Key = "Tokens", Value = new VValue(tokens) }; root.Value = obj; string result = VdfConvert.Serialize(root); File.WriteAllText(vdfFile, result); return(0); } catch (Exception e) { Console.WriteLine(e); return(1); } }
static private void MaterialModifyAndExport(Dictionary <string, string> materialVpkData, MainWindow exportWindow, DirectoryInfo exportPath) { List <MaterialParameter> EnabledParameters = exportWindow.GetEnabledMaterialParameters(); foreach (var a in materialVpkData) { try { VdfSerializerSettings settings = new VdfSerializerSettings { UsesEscapeSequences = false }; dynamic conversion = VdfConvert.Deserialize(materialVpkData[a.Key], settings); Random randomNumGenerator = new Random(); foreach (MaterialParameter enabledParameter in EnabledParameters) { if (!TestForFilteredShaders(enabledParameter.ShaderFilterMode, conversion, enabledParameter.ShaderFilterArray)) { continue; } if (!TestForFilteredProxies(enabledParameter.ProxyFilterMode, conversion, enabledParameter.ProxyFilterArray)) { continue; } if (enabledParameter.RandomizerChance != 100 && randomNumGenerator.Next(1, 101) >= enabledParameter.RandomizerChance + 1) //Confirm this is accurate..? { continue; } float valueOffset = enabledParameter.RandomizerOffset; if (enabledParameter.RandomizerOffset != 0.0f) { valueOffset *= (float)(randomNumGenerator.NextDouble() * 2.0 - 1.0); } switch (enabledParameter.ParamType.ToString()) { //TODO: Interpret float values //case "vector3-float": // VMTInteraction.InsertVector3IntoMaterial(conversion, // enabledParameter.Parameter, // VMTInteraction.ConvertStringToVector3Float(enabledParameter.ParamValue)); // break; case "vector3": if (enabledParameter.Parameter == "$color" || enabledParameter.Parameter == "$color2") { conversion = VMTInteraction.InsertVector3IntoMaterial(conversion, VMTInteraction.PerformColorChecks(conversion.Key), VMTInteraction.ConvertStringToVector3Int(enabledParameter.ParamValue)); } else { conversion = VMTInteraction.InsertVector3IntoMaterial(conversion, enabledParameter.Parameter, VMTInteraction.ConvertStringToVector3Int(enabledParameter.ParamValue)); } break; case "boolean": conversion = VMTInteraction.InsertValueIntoMaterial(conversion, enabledParameter.Parameter, Int32.Parse(enabledParameter.ParamValue)); break; case "integer": conversion = VMTInteraction.InsertValueIntoMaterial(conversion, enabledParameter.Parameter, Int32.Parse(enabledParameter.ParamValue) + (int)Math.Ceiling(valueOffset)); break; case "string": conversion = VMTInteraction.InsertValueIntoMaterial(conversion, enabledParameter.Parameter, enabledParameter.ParamValue); break; case "float": conversion = VMTInteraction.InsertValueIntoMaterial(conversion, enabledParameter.Parameter, float.Parse(enabledParameter.ParamValue + valueOffset)); break; case "proxy": conversion = VMTInteraction.InsertProxyIntoMaterial(conversion, enabledParameter.Parameter, enabledParameter.ParamValue); break; case "choices": conversion = VMTInteraction.InsertRandomChoiceIntoMaterial(conversion, enabledParameter.Parameter, enabledParameter.ParamValue); break; default: break; //Unimplemented type. } } DirectoryInfo di = new DirectoryInfo(Path.GetDirectoryName(Path.Combine(exportPath.FullName, a.Key))); di.Create(); try { File.AppendAllText(Path.Combine(exportPath.FullName, a.Key), VdfConvert.Serialize(conversion, settings)); } catch (FileNotFoundException) { exportWindow.WriteMessage("The file " + a.Key + " could not be modified since the file path is too long."); } } catch (VdfException) { exportWindow.WriteMessage("The file " + a.Key + " could not be modified due to an faulty data structure."); } } }