async Task <bool> IShowInstructionsAndHistoryController.Load(string s)
        {
            Dictionary <string, string> history = StaticHelpers.DeserializeDictionary(s);

            if (history == null)
            {
                return(false);
            }
            string value = "";
            Deck   deck  = MainPage.Current.Deck;

            for (int i = 0; i < history.Count; i++)
            {
                string key = String.Format("Score {0}", i);
                if (history.TryGetValue(key, out value))
                {
                    var tokens = value.Split(new char[] { '*' }, StringSplitOptions.RemoveEmptyEntries);
                    if (tokens[0] == "ScoreInstance")
                    {
                        ScoreHistoryView shv = new ScoreHistoryView();
                        await shv.PopulateGrid(tokens[1]);

                        ShowInstructionsUi.HistoryList.Add(shv);
                    }
                }
            }

            return(true);
        }
        async Task IShowInstructionsAndHistoryController.AddToHistory(List <CardView> fullHand, ScoreCollection scores, PlayerType player, Deck Deck, string gameScore)
        {
            bool   isOnRight = ShowInstructionsUi.IsRightSide;
            double y         = 800;
            double x         = 100;


            Point to = new Point(x, y);

            double angle = 45;

            if (!isOnRight)
            {
                angle = -90;
                y     = 200;
            }

            double scoreDiameter = 75.0;


            Point p = GetCenterPointForScoreAnimation(to, isOnRight);

            if (_scoreQueue.Count == 0)
            {
                _timerForFlyingScore.Interval = TimeSpan.FromTicks(1);
            }
            List <ScoreHistoryView> list = new List <ScoreHistoryView>();

            foreach (ScoreInstance score in scores.Scores)
            {
                ScoreHistoryView view = new ScoreHistoryView();
                await view.PopulateGrid(fullHand, score, player, scores.ScoreType, ShowInstructionsUi.HistoryList.Count + 1, scores.Total, scores.ActualScore, gameScore);

                view.Width  = ShowInstructionsUi.HistoryViewWidth;
                view.Height = view.Width * HEIGHT_WIDTH_RATIO;
                view.HorizontalAlignment = HorizontalAlignment.Left;
                view.VerticalAlignment   = VerticalAlignment.Top;
                list.Add(view);
            }

            FlyingScore flyingScore = new FlyingScore();

            LayoutRoot.Children.Add(flyingScore);
            Grid.SetColumnSpan(flyingScore, 0xFF);
            Grid.SetRowSpan(flyingScore, 0xFF);
            Canvas.SetZIndex(flyingScore, Int16.MaxValue);
            flyingScore.Message             = scores.Total.ToString();
            flyingScore.Center              = p;
            flyingScore.Width               = scoreDiameter;
            flyingScore.Height              = scoreDiameter;
            flyingScore.Angle               = angle;
            flyingScore.HorizontalAlignment = HorizontalAlignment.Center;
            flyingScore.VerticalAlignment   = VerticalAlignment.Center;

            FlyoutScoreAnimationHelper helper = new FlyoutScoreAnimationHelper(list, flyingScore, ShowInstructionsUi);

            _scoreQueue.Enqueue(helper);
            _timerForFlyingScore.Start();
        }