public static void GetCommandInfo(string path) { using (StreamReader stream = new StreamReader(path)) { List<string> raw = stream.ReadToEnd().Split('\n').Select(x => x.Trim('\r')).ToList(); raw.RemoveAll(x => String.IsNullOrEmpty(x) || String.IsNullOrWhiteSpace(x) || x.Contains("//")); for (int i = 0; i < raw.Count; i += 6) { CommandInfo h = new CommandInfo { Identifier = uint.Parse(raw[i], System.Globalization.NumberStyles.HexNumber), Name = raw[i + 1] }; string[] paramList = raw[i + 2].Split(',').Where(x => x != "NONE").ToArray(); string[] paramSyntax = raw[i + 3].Split(',').Where(x => x != "NONE").ToArray(); foreach (string kw in paramSyntax) h.ParamSyntax.Add(kw); foreach (string s in paramList) h.ParamSpecifiers.Add(int.Parse(s)); if (raw[i + 4] != "NONE") h.EventDescription = raw[i + 4]; if (h.Identifier == 0x5766F889 || h.Identifier == 0x89F86657) _endingCommand = h; if (h.ParamSyntax.Count == 0 && h.ParamSpecifiers.Count != 0) while (h.ParamSyntax.Count < h.ParamSpecifiers.Count) h.ParamSyntax.Add("unknown"); h.IndentLevel = int.Parse(raw[i + 5]); commandDictionary.Add(h); } } }
public Command(CommandInfo info) { _commandInfo = info; }