/// <summary>
 /// Bring scoreboard up to date so that previous values equal current ones.
 /// </summary>
 public static void FreshenScores()
 {
     ScoreMap.ValueCollection.Enumerator it = scores.Values.GetEnumerator();
     while (it.MoveNext())
     {
         if (it.Current.Prev != it.Current.Curr)
         {
             it.Current.Prev = it.Current.Curr;
         }
     }
 }
        /// <summary>
        /// Resets some or all properties on all scores.
        /// </summary>
        /// <param name="flags"></param>
        public static void Reset(ScoreResetFlags flags)
        {
            ScoreMap.ValueCollection.Enumerator it = scores.Values.GetEnumerator();

            while (it.MoveNext())
            {
                it.Current.Reset(flags);
            }

            ReleaseScoreEffects();
        }
        internal static void ReindexScores()
        {
            ScoreMap.ValueCollection.Enumerator it = scores.Values.GetEnumerator();

            int index = 0;

            while (it.MoveNext())
            {
                Score score = it.Current;

                if (score.Active && score.Visibility != ScoreVisibility.Off)
                {
                    score.order = index++;
                }
                else
                {
                    score.order = 0;
                }
            }
        }