Ejemplo n.º 1
0
        private SPModelParameterizedQuery(ParameterizedExpression expression, ISPModelManagerInternal manager)
        {
            SPModelQueryBuilder builder = SPModelQueryExpressionVisitor.Translate(expression, manager);

            this.Descriptor = builder.ModelType != null?SPModelDescriptor.Resolve(builder.ModelType) : manager.Descriptor;

            this.Expression     = builder.Expression;
            this.TaxonomyFields = new ReadOnlyCollection <string>(builder.TaxonomyFields.ToArray());

            this.expression  = expression;
            this.executeMode = builder.ExecuteMode;
            this.emptyArray  = Array.CreateInstance(this.Descriptor.ModelType, 0);
            if (builder.SelectExpression != null)
            {
                this.projector = ((Expression <ResultEvaluator>)builder.SelectExpression).Compile();
            }
            else
            {
                this.projector = (ResultEvaluator)Delegate.CreateDelegate(typeof(ResultEvaluator), mOfType.MakeGenericMethod(this.Descriptor.ModelType));
            }
            this.evaluators = new ReadOnlyDictionary <string, ParameterEvaluator>(builder.ParameterEvaluators);
            for (int i = 0; i < PIndexMax; i++)
            {
                parameterNames[i] = (string)builder.Parameters[i];
            }

            if (builder.ModelType != null)
            {
                this.ContentTypeFilterExpression = builder.ContentTypeIds.Aggregate(Caml.False, (v, a) => v | Caml.OfContentType(a));
            }
            if (!builder.SelectAllProperties)
            {
                List <string> properties = new List <string>(builder.SelectProperties);
                if (!properties.Contains(SPBuiltInFieldName.ContentTypeId))
                {
                    properties.Add(SPBuiltInFieldName.ContentTypeId);
                }
                this.SelectProperties = new ReadOnlyCollection <string>(properties);
            }
        }
Ejemplo n.º 2
0
        public void EvaluateCount(int index, bool isMissPress)
        {
            grm.CurrentLife += isMissPress ? evapoint[4] * (5 - index) / 8 : evapoint[4 - index];
            grm.GainScore((MarkEvaluateType)(4 - index), isMissPress);
            grm.Evacount[4 - index]++;
            float sum = 0;

            foreach (int count in grm.Evacount)
            {
                sum += count;
            }
            float ratio = ((float)(grm.Evacount[0] + grm.Evacount[1]) / sum - 0.7f) / 0.3f;

            if (ratio <= 0)
            {
                ratio = 0;
            }
            if (ratio >= 1)
            {
                ratio = 1;
            }
            cgi.ChangeEvaluate((MarkEvaluateType)(4 - index), isMissPress, grm.CurrentLifeAsFloat, ratio, ResultEvaluator.Evaluate(grm.Evacount));
            cgi.ChangeScore(grm.CurrentScore);
        }