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)); }
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(); } }