/// <summary> /// Load <see cref="Symbols"/> from a JSON <see cref="string"/>. /// </summary> /// <param name="json">JSON string</param> /// <returns>Symbols</returns> public static Symbols FromJSON(string json) { var symbols = new Symbols(); // This is a horrible hack for this specific JSON input var lines = json.Split('\n'); foreach (var line in lines) { var trimmed = line.Trim(); // Ignore empty line, brackets if (trimmed == "" || trimmed == "{" || trimmed == "}") { continue; } // Get name & value fields var fields = trimmed.Split(':'); var name = fields[0].Trim(); var value = fields[1].Trim(); // If ends with "," remove it if (value.EndsWith(",")) { value = value.Substring(0, value.Length - 1).Trim(); } // Remove surrounding quotes name = name.Replace("\"", ""); value = value.Replace("\"", ""); // Add result to dictionary symbols._symbols.Add(name, Convert.ToUInt32(value, 16)); } return(symbols); }
/// <summary> /// Apply patches using <see cref="Symbols"/> loaded from the internal resource. /// </summary> /// <param name="options">Options</param> public void Apply(PatcherOptions options) { Apply(Symbols.Load(), options); }