Exemplo n.º 1
0
        private static void CalculateScore(string resource, Slide s1)
        {
            try
            {
                lock (scoreLock)
                {
                    List <Slide> slides = slideShow.GetRelevantSlides(s1);

                    foreach (var s2 in slides)
                    {
                        if (s2.id != s1.id)
                        {
                            if (scores == null)
                            {
                                return;
                            }

                            string key   = string.Format("{0} {1}", Math.Min(s2.id, s1.id), Math.Max(s2.id, s1.id));
                            int    score = Slide.Score(s1, s2);

                            if (score < MIN_CACHED_SCORE)
                            {
                                continue;
                            }

                            scores[key] = score;

                            Console.Write("slides {0} - calc. scores {1} \t\r", slideShow.index, scores.Count);

                            if (scores.Count >= MAX_CALC_SCORES)
                            {
                                PersistCalculatesHiScores(string.Format("{0}.hiscores.{1}", resource, scoreSetIndex++));
                                scores.Clear();
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.Error.WriteLine(ex);
            }
        }