Esempio n. 1
0
        protected override void OnEvaluating(ExpressionInfo expression, ITaskEngine taskEngine, Action <object> callback)
        {
            ExpressionInfo left  = expression.Children[0];
            ExpressionInfo right = expression.Children[1];

            taskEngine.GetExpression(left.Code).Evaluate(left, taskEngine, lvalue =>
            {
                taskEngine.GetExpression(right.Code).Evaluate(right, taskEngine, rvalue =>
                {
                    OnEvaluating(lvalue, rvalue, callback);
                });
            });
        }
Esempio n. 2
0
        public void Evaluate(ExpressionInfo expression, ITaskEngine taskEngine, Action <object> callback)
        {
            TaskInfo       taskInfo   = (TaskInfo)expression.Value;
            ExpressionInfo valueInfo  = expression.Children[0];
            ExpressionInfo outputInfo = expression.Children.Length > 1 ? expression.Children[1] : null;

            if (outputInfo == null)
            {
                outputInfo = new ExpressionInfo
                {
                    Code  = ExpressionCode.Value,
                    Value = PrimitiveContract.Create(0)
                };
            }

            IExpression valueExpression = taskEngine.GetExpression(valueInfo.Code);

            expression.IsEvaluating = true;
            valueExpression.Evaluate(valueInfo, taskEngine, value =>
            {
                expression.IsEvaluating = false;
                int outputIndex         = ((PrimitiveContract <int>)outputInfo.Value).Value;
                taskEngine.Memory.WriteOutput(taskInfo.Parent.TaskId, taskInfo.TaskId, outputIndex, value);
                callback(null);
            });
        }
Esempio n. 3
0
        protected override void OnEvaluating(ExpressionInfo expression, IMatchPlayerView player, IMatchUnitAssetView unit, ITaskEngine taskEngine, Action <object> callback)
        {
            ExpressionInfo target = expression.Children[2];

            taskEngine.GetExpression(target.Code).Evaluate(target, taskEngine, targetType =>
            {
                CmdResultCode can = unit.DataController.CanConvertImmediate((int)targetType);
                callback(can);
            });
        }
Esempio n. 4
0
        protected override void OnEvaluating(ExpressionInfo expression, ITaskEngine taskEngine, Action <object> callback)
        {
            ExpressionInfo left  = expression.Children[0];
            ExpressionInfo right = expression.Children[1];

            taskEngine.GetExpression(left.Code).Evaluate(left, taskEngine, first =>
            {
                taskEngine.GetExpression(right.Code).Evaluate(right, taskEngine, second =>
                {
                    long unitId  = (long)first;
                    int playerId = (int)second;

                    IMatchPlayerView player  = taskEngine.MatchEngine.GetPlayerView(playerId);
                    IMatchUnitAssetView unit = player.GetUnitOrAsset(unitId);

                    OnEvaluating(expression, player, unit, taskEngine, callback);
                });
            });
        }
Esempio n. 5
0
        public void Evaluate(ExpressionInfo expression, ITaskEngine taskEngine, Action <object> callback)
        {
            ExpressionInfo child = expression.Children[0];

            expression.IsEvaluating = true;
            taskEngine.GetExpression(child.Code).Evaluate(child, taskEngine, value =>
            {
                expression.IsEvaluating = false;
                callback(!((bool)value));
            });
        }