public override Node Execute(IList <StageVariable> variables, Delegate NotifyUIMethod)
        {
            try
            {
                Debug.Debug.instance().execute(this, NotifyUIMethod, variables);

                //logger.Info("Inicio Nodo Sentencia");
                var cultureInfo = new CultureInfo("en-US");
                int indexEqual  = this.Code.IndexOf("=");

                string sentence = this.Code.Substring(indexEqual + 1).Trim();
                sentence = this.GetSentenceToEvaluate(variables, cultureInfo, sentence);

                string        variableStr = this.Code.Substring(0, indexEqual).Trim();
                StageVariable variable    = this.GetVariable(variables, cultureInfo, variableStr);

                ExpressionResolver.Resolve(variable, sentence, new Random().NextDouble());

                return(base.Execute(variables, NotifyUIMethod));
            }
            catch (Exception exception)
            {
                //logger.Error("Error Nodo Sentencia: " + exception.Message);
                logger.Error(exception.Source + " - " + exception.Message + ": " + exception.StackTrace);
                throw new Exception("Nodo sentencia", exception);
            }
        }
        public static string GetSentenceToEvaluate(IList <StageVariable> variables, CultureInfo cultureInfo, string sentence)
        {
            sentence = ExpressionResolver.ReplaceCommonVariablesInSentence(variables, cultureInfo, sentence);
            sentence = ExpressionResolver.ReplaceArraysVariablesInSentence(variables, cultureInfo, sentence);

            if (sentence.Contains("R"))
            {
                sentence = sentence.Replace("R", new Random().NextDouble().ToString("F6", cultureInfo));
            }

            return(sentence);
        }
Exemple #3
0
        public override Node Execute(IList <StageVariable> variables, Delegate NotifyUIMethod)
        {
            try
            {
                Debug.Debug.instance().execute(this, NotifyUIMethod, variables);

                //logger.Info("Inicio Nodo Condicion");

                var cultureInfo = new CultureInfo("en-US");

                string sentence = ExpressionResolver.GetSentenceToEvaluate(variables, cultureInfo, this.Code);

                var result = ExpressionResolver.ResolveBoolen(sentence);

                return(result ? this.ChildNodeFalse.Execute(variables, NotifyUIMethod) : this.ChilNodeTrue.Execute(variables, NotifyUIMethod));

                //logger.Info("Fin Nodo Condicion");
            }
            catch (Exception exception)
            {
                //logger.Error("Error Nodo Condicon:" + exception.Message);
                throw new Exception("Nodo Condicion", exception);
            }
        }