using Sandbox.ModAPI.Ingame; using System; using System.Collections.Generic; namespace IngameScript { public class ConfigParser { private Dictionary _config; private IMyTerminalBlock _input; public ConfigParser(IMyTerminalBlock input) { _input = input; _config = new Dictionary(); Parse(); } // Get a config value, or a default value. // that also does type inference, but the type of `defaultValue` must contain a `Parse()` method. public T GetValue(string key, T defaultValue) { if (!_config.ContainsKey(key)) { return defaultValue; } return (T)Convert.ChangeType(_config[key], typeof(T)); } // Only call this method manually if you are monitoring CustomData for changes. public void Parse() { _config.Clear(); string[] lines = _input.CustomData.Split('\n'); foreach (string line in lines) { string[] tokens = line.Split('='); if (tokens.Length != 2) continue; _config[tokens[0]] = tokens[1]; } } } }