Beispiel #1
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);
        }
Beispiel #2
0
 public void ExecuteInfinityLoops()
 {
     if (Type == eventType.Loop)
     {
         ScriptLoopEventHandler loop = (ScriptLoopEventHandler)Handler;
         if (loop.LoopType == loopType.Infinity)
         {
             if (loop.CanExecute)
             {
                 Conditions.ForEach((obj) => obj.ExecuteActions());
             }
         }
     }
 }
Beispiel #3
0
 public void ExecuteConditions()
 {
     if (Type == eventType.None && Handler.CanExecute)
     {
         foreach (var condition in Conditions)
         {
             condition.ExecuteActions();
         }
     }
     if (Type == eventType.Loop)
     {
         ScriptLoopEventHandler loop = (ScriptLoopEventHandler)Handler;
         if (loop.LoopType != loopType.Infinity)
         {
             while (loop.CanExecute)
             {
                 Conditions.ForEach((obj) => obj.ExecuteActions());
             }
         }
     }
 }