private Command ParseToCommand(string line, out CommandError error) { if (line == "" || line.StartsWith("//")) { error = null; return(null); } string commandID; string commandParam; StringDefine.SplitFirstWord(line, out commandID, out commandParam); Command command = CreateCommandFromID(commandID); if (command == null) { error = new CommandInvalidIDError(commandID); return(null); } CommandError parseError = null; command.Parse(commandParam, out parseError); if (parseError != null) { error = parseError; return(null); } CommandError onParsedError = null; command.OnParsed(out onParsedError); if (onParsedError != null) { error = parseError; return(null); } error = null; return(command); }