protected override async void OnAppearing() { base.OnAppearing(); if (FreeApples.Count() == 0) { StartGameAsync().FireAndForget(); } else { var rustleSoundTask = Sounds.RustleSound.PlayAsync(); using (CancellationTokenSource wobbleCancel = new CancellationTokenSource()) { IEnumerable <Task> wobbleAppleTasks; wobbleAppleTasks = (from apple in FreeApples select AnimateAppleWobbleAsync(apple, wobbleCancel.Token)).ToList(); await rustleSoundTask; wobbleCancel.Cancel(); await Task.WhenAll(wobbleAppleTasks); } } AddBoxViewToLayout(); }
private async Task ImageTapped(DraggableImage apple) { if (!FreeApples.Contains(apple)) { return; } highestZIndex += 1; SetZIndex(apple, highestZIndex); var endpt = await DragAsync(apple, Point.Zero, BasketCatchmentArea.Bounds); if (!BasketCatchmentArea.Bounds.Contains(endpt)) { return; } var soundTask = Sounds.WhooshSound.PlayAsync(); var animateTask = AnimateAppleWhooshAsync(apple); await Task.WhenAll(soundTask, animateTask); if (FreeApples.Count() == 0) { EndGameAsync().FireAndForget(); } }