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); } }
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); }
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); } }