예제 #1
0
        private async void OnSwiping(object sender, SwipedCardEventArgs e)
        {
            if (finished)
            {
                if (!nopeVisible)
                {
                    if (((Number)e.Item).Id == LastNumber.Id)
                    {
                        bool answer = await DisplayAlert("Next game?", "Play another game?", "Yes", "No");

                        if (answer)
                        {
                            await  finish_fun(0);
                        }
                        else
                        {
                            await finish_fun(1);
                        }
                    }
                }
                return;
            }
            uint timeout = 50;

            if ((e.Direction == SwipeCardDirection.Left && !((Number)e.Item).Prime)
                ||
                (e.Direction == SwipeCardDirection.Right && ((Number)e.Item).Prime))
            {
                ((Number)e.Item).Correct = true;


                ViewModel.ViewExtensions.CancelAnimation(MyStack);
                MyStack.ColorTo(Color.Green, Color.White, c => MyStack.BackgroundColor = c, 500);
                var v = new AnimationView();
                v.Animation     = "4964-check-mark-success-animation.json";
                v.IsPlaying     = true;
                v.WidthRequest  = 25;
                v.HeightRequest = 25;


                FlexL.Children.Add(v);

                timer = Math.Min(sec15, timer - stopwatch.Elapsed.TotalMilliseconds + 1000);
                var segment = (float)Math.Min(1, 1 - (timer) / sec15);
                MyAnimationView.PlayProgressSegment((float)segment, 1);
                stopwatch.Restart();
            }
            else if ((e.Direction == SwipeCardDirection.Left && ((Number)e.Item).Prime)
                     ||
                     (e.Direction == SwipeCardDirection.Right && !((Number)e.Item).Prime))
            {
                ((Number)e.Item).Correct = false;
                ViewModel.ViewExtensions.CancelAnimation(MyStack);
                MyStack.ColorTo(Color.Red, Color.White, c => MyStack.BackgroundColor = c, 500);
                await MyStack.TranslateTo(-15, 0, timeout);

                await MyStack.TranslateTo(15, 0, timeout);

                await MyStack.TranslateTo(-9, 0, timeout);

                await MyStack.TranslateTo(9, 0, timeout);

                await MyStack.TranslateTo(-5, 0, timeout);

                await MyStack.TranslateTo(5, 0, timeout);

                await MyStack.TranslateTo(-2, 0, timeout);

                await MyStack.TranslateTo(2, 0, timeout);

                MyStack.TranslationX = 0;

                var v = new AnimationView();
                v.Animation     = "4970-unapproved-cross.json";
                v.IsPlaying     = true;
                v.WidthRequest  = 25;
                v.HeightRequest = 25;

                timer = Math.Max(0, timer - stopwatch.Elapsed.TotalMilliseconds - 2000);
                var segment = (float)Math.Min(1, 1 - (timer) / sec15);
                MyAnimationView.PlayProgressSegment((float)segment, 1);
                stopwatch.Restart();


                FlexL.Children.Add(v);
            }
            else if (e.Direction == SwipeCardDirection.Up)
            {
                ViewModel.ViewExtensions.CancelAnimation(MyStack);
                MyStack.ColorTo(Color.Yellow, Color.White, c => MyStack.BackgroundColor = c, 500);

                var v = new AnimationView();
                v.Animation     = "4975-question-mark.json";
                v.IsPlaying     = true;
                v.WidthRequest  = 25;
                v.HeightRequest = 25;


                FlexL.Children.Add(v);
            }
        }