예제 #1
0
        protected float EvaluateBool(int gameId, int actorId, EvaluationCriteria completionCriteria)
        {
            var evaluationDataController = new EvaluationDataController(EvaluationDataLogger, ContextFactory, completionCriteria.EvaluationDataCategory);

            switch (completionCriteria.CriteriaQueryType)
            {
            case CriteriaQueryType.Any:
                var any = evaluationDataController.List(gameId, actorId, completionCriteria.EvaluationDataKey, EvaluationDataType.Boolean);
                return(!any.Any() ? 0 : any.Max(value => CompareValues(bool.Parse(value.Value), bool.Parse(completionCriteria.Value), completionCriteria.ComparisonType, completionCriteria.EvaluationDataType)));

            case CriteriaQueryType.Latest:
                if (!evaluationDataController.TryGetLatest(gameId, actorId, completionCriteria.EvaluationDataKey, out var latest, EvaluationDataType.Boolean))
                {
                    return(0);
                }
                return(CompareValues(bool.Parse(latest.Value), bool.Parse(completionCriteria.Value), completionCriteria.ComparisonType, completionCriteria.EvaluationDataType));

            case CriteriaQueryType.Count:
                var count = evaluationDataController.List(gameId, actorId, completionCriteria.EvaluationDataKey, EvaluationDataType.Boolean).Count;
                return(CompareValues(count, long.Parse(completionCriteria.Value), completionCriteria.ComparisonType, EvaluationDataType.Long));

            default:
                return(0);
            }
        }
예제 #2
0
        public static void CompleteGenericAchievement(Evaluation evaluation, int actorId)
        {
            var gameDatas = ComposeAchievementGameDatas(actorId, evaluation, "100");

            var evaluationDataController = new EvaluationDataController(new NullLogger <EvaluationDataController>(), DbControllerLocator.ContextFactory, evaluation.EvaluationCriterias[0].EvaluationDataCategory);

            evaluationDataController.Add(gameDatas);
        }
예제 #3
0
        protected float EvaluateManyBool(int gameId, List <int> actors, EvaluationCriteria completionCriteria)
        {
            var evaluationDataController = new EvaluationDataController(EvaluationDataLogger, ContextFactory, completionCriteria.EvaluationDataCategory);

            switch (completionCriteria.CriteriaQueryType)
            {
            case CriteriaQueryType.Count:
                var count = actors
                            .Sum(actorId => evaluationDataController
                                 .List(gameId, actorId, completionCriteria.EvaluationDataKey, EvaluationDataType.Boolean)
                                 .Count);
                return(CompareValues(count, long.Parse(completionCriteria.Value), completionCriteria.ComparisonType, EvaluationDataType.Long));

            default:
                return(0);
            }
        }