Beispiel #1
0
        public static Dictionary <int, int> LevelStars(this CardGameMetrics cardGameMetrics)
        {
            if (cardGameMetrics == null)
            {
                throw new ArgumentNullException(nameof(cardGameMetrics));
            }

            Dictionary <int, int> levelScore = new Dictionary <int, int>(cardGameMetrics.Metrics.Count);

            foreach (var metric in cardGameMetrics.Metrics)
            {
                var score = CalculateScore(metric.WordIdOpenCount) * 2;
                if (levelScore.ContainsKey(metric.GameLevelId))
                {
                    if (score > levelScore[metric.GameLevelId])
                    {
                        levelScore[metric.GameLevelId] = score;
                    }
                }
                else
                {
                    levelScore.Add(metric.GameLevelId, score);
                }
            }
            return(levelScore);
        }
Beispiel #2
0
        private Task <LevelPoints> CalculateMetrics(int userId,
                                                    RepeatedField <CardGameInfos.Types.CardGameInfo> info,
                                                    int[] levels,
                                                    CancellationToken cancellationToken)
        {
            CardGameMetrics cardGameMetrics = new CardGameMetrics();

            for (int i = 0; i < levels.Length; i++)
            {
                var cardGameMetric = new CardGameMetric()
                {
                    GameLevelId = levels[i]
                };
                cardGameMetric.WordIdOpenCount.Add(info[i].WordIdOpenCount);
                cardGameMetrics.Metrics.Add(cardGameMetric);
            }

            var estimateRequest = new AuthReq <CardGameMetrics, LevelPoints>(cardGameMetrics)
            {
                UserId = userId
            };

            return(estimateClassicCardGame.Handle(estimateRequest, cancellationToken));
        }