public static ScriptCondition GetCondition(string code) { conditionType type = conditionType.None; object[] args = GetArgs(code, out type); var cond = new ScriptCondition(code, args); cond.Condition = type; if (type != conditionType.None) { var condCode = StringUtils.GetInside(code, "?", "end when"); var lines = condCode.Split(CODE_INFO.LineSeparator); foreach (var line in lines) { ScriptAction action = ScriptAction.GetAction(line); if (!string.IsNullOrEmpty(action.Code)) { cond.Actions.Add(action); } } } else { ScriptAction action = ScriptAction.GetAction(code); if (action != null) { cond.Actions.Add(action); } } return(cond); }
public static ScriptEvent GetEvent(string code) { ScriptEvent e = new ScriptEvent(code); string[] lines = new string[0]; if (code.Contains("loop")) { var loop = ScriptLoopEventHandler.GetLoopHandler(code); string loopCode = StringUtils.GetInside(code, ")", "stop loop"); lines = loopCode.Split(CODE_INFO.LineSeparator); e.Handler = loop; } else { e.Handler = new ScriptNoneEventHandler(); lines = new string[] { code }; } foreach (var line in lines) { ScriptCondition cond = ScriptCondition.GetCondition(line); if (cond != null && cond.Actions.Count > 0) { e.Conditions.Add(cond); } } return(e); }