Beispiel #1
0
        public async void OnGameCompleted(object obj, EventArgs args)
        {
            _wasGameBeaten = true;
            Serilizer.ClearSaveGameCache();

            string       message          = null;
            string       levelUpMessage   = null;
            int          numberOfLevelups = 0;
            EventHandler onLevelUp        = (object o, EventArgs e) =>
            {
                numberOfLevelups++;
            };

            // Sub our level up event just in case we did end level up.
            _expMgr.OnLevelUp += onLevelUp;
            _expMgr.PuzzleCompleted(_difficulty, (int)_secondsTicking);

            if (numberOfLevelups != 0)
            {
                levelUpMessage = Environment.NewLine + "You leveled up " + numberOfLevelups.ToString();
                if (numberOfLevelups > 1)
                {
                    levelUpMessage += " times";
                }
                else
                {
                    levelUpMessage += " time";
                }
            }

            if (_gameInfo.AddIfHighScore(_difficulty, (int)_secondsTicking))
            {
                message = "New Highscore";
            }
            string finalMessage = "You win!";

            if (message != null)
            {
                finalMessage = finalMessage + Environment.NewLine + message;
            }
            SaveApplicationData();

            // Add to the total number of times the game was beaten.
            TimesPlayedData.OnGameBeaten(_difficulty);

            MessageDialog dlg = new MessageDialog(finalMessage, "Congragulations!");
            await dlg.ShowAsync();

            Frame.Navigate(typeof(MainPage));
        }
Beispiel #2
0
        private async void ForfeitButton_Click(object sender, RoutedEventArgs e)
        {
            // Show the puzzles answer and don't fire the OnPuzzleCompleted event.
            MessageDialog           dlg            = new MessageDialog("Are you certain?", "Continue");
            bool                    solveThePuzzle = false;
            UICommandInvokedHandler okProc         = (IUICommand command) =>
            {
                solveThePuzzle = true;
            };

            dlg.Commands.Add(new UICommand("Ok", okProc));
            dlg.Commands.Add(new UICommand("No"));
            await dlg.ShowAsync();

            if (solveThePuzzle)
            {
                _wasGameBeaten = true;
                Serilizer.ClearSaveGameCache();
                _puzzle.SolvePuzzle(false);
                int tickCount = 0;
                // Wait five seconds and then navigate back.
                DispatcherTimer       timer     = new DispatcherTimer();
                EventHandler <object> timerTick = (object senderTimer, object args) =>
                {
                    tickCount++;
                    if (tickCount > 5)
                    {
                        Frame.Navigate(typeof(MainPage));
                    }
                };
                timer.Interval = new TimeSpan(0, 0, 5);
                timer.Tick    += timerTick;
                // Stop the main timer as we want to stop our game from updating.
                _dispatchTimer.Stop();
            }
        }