示例#1
0
        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);
        }
示例#2
0
        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);
        }