Пример #1
0
        /// <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);
        }
Пример #2
0
 /// <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);
 }