示例#1
0
        private void AmiiboSelected(DetectedAmiibo amiibo)
        {
            foreach (var a in DetectedAmiibo)
            {
                if (!a.Equals(amiibo))
                {
                    MoveToRestingPosition(a, false);
                }
            }

            if (!amiibo.Equals(SelectedAmiibo))
            {
                SelectedAmiibo = amiibo;
                MoveToFocusPosition(amiibo, false);

                NameLabel.Center = new CoreGraphics.CGPoint(View.Center.X, SelectedAmiibo.ImageView.Center.Y + size * 3);
                NameLabel.Text   = amiibo.Metadata.Name;
                UIView.Animate(.15, () => NameLabel.Alpha = 1);
            }
            else
            {
                SelectedAmiibo = null;
                MoveToRestingPosition(amiibo, false);

                UIView.Animate(.15, () => NameLabel.Alpha = 0);
            }
        }
示例#2
0
        public void MoveToRestingPosition(DetectedAmiibo amiibo, bool withDelay)
        {
            var idx       = DetectedAmiibo.IndexOf(amiibo);
            var targetPos = new CoreGraphics.CGRect(View.Frame.Width - size - 10, 60 + ((size + 10) * idx), size, size);

            UIView.Animate(.3, withDelay ? idx * .05 : 0, UIViewAnimationOptions.CurveEaseOut, () =>
            {
                amiibo.ImageView.RemoveConstraints(amiibo.ImageView.Constraints);
                amiibo.ImageView.Frame = targetPos;
            },
                           null);
        }
示例#3
0
        public void MoveToFocusPosition(DetectedAmiibo amiibo, bool withDelay)
        {
            var idx       = DetectedAmiibo.IndexOf(amiibo);
            var targetPos = new CoreGraphics.CGRect(View.Frame.Width - size - 10, 60 + ((size + 10) * idx), size * 4, size * 4);

            UIView.Animate(.3, withDelay ? idx * .07 : 0, UIViewAnimationOptions.CurveEaseOut, () =>
            {
                amiibo.ImageView.Frame  = targetPos;
                amiibo.ImageView.Center = new CoreGraphics.CGPoint(View.Center.X, View.Center.Y - 200);
            },
                           null);
        }
示例#4
0
        public void ShareAmiibo(DetectedAmiibo amiibo)
        {
            var(characterId, name, uid, data)
                = (amiibo.CharacterId, amiibo.Metadata.Name, amiibo.UID, amiibo.TagData);

            var fn   = $"({characterId}-{name}-{uid}.bin".ToLower();
            var path = Path.Combine(Xamarin.Essentials.FileSystem.CacheDirectory, fn);

            // don't :b:elete this before the share dialog goes away
            File.WriteAllBytes(path, data);

            InvokeOnMainThread(async
                                   () => await Xamarin.Essentials.Share.RequestAsync(
                                   new Xamarin.Essentials.ShareFileRequest
            {
                Title = fn,
                File  = new Xamarin.Essentials.ShareFile(path)
            }));
        }
示例#5
0
        public async Task OnAmiibo(DetectedAmiibo amiibo, bool withDelay)
        {
            var initialPos = new CoreGraphics.CGRect(0, 0, size * 5, size * 5);

            var imageView = new UIImageView
            {
                ContentMode            = UIViewContentMode.ScaleAspectFit,
                Image                  = UIImage.LoadFromData(NSData.FromArray(amiibo.ImageData)),
                Frame                  = initialPos,
                Center                 = View.Center,
                UserInteractionEnabled = true,
            };

            imageView.Layer.ShadowRadius  = 1f;
            imageView.Layer.ShadowOpacity = .5f;

            imageView.AddGestureRecognizer(new UITapGestureRecognizer(gr => AmiiboSelected(amiibo)));
            imageView.AddGestureRecognizer(new UILongPressGestureRecognizer(gr => ShareAmiibo(amiibo)));

            amiibo.ImageView = imageView;
            View.AddSubview(imageView);

            if (!DetectedAmiibo.Contains(amiibo))
            {
                DetectedAmiibo.Add(amiibo);
            }

            if (!withDelay)
            {
                imageView.Alpha = 0;
                UIView.Animate(.5, () =>
                {
                    imageView.Alpha  = 1;
                    imageView.Center = new CoreGraphics.CGPoint(View.Center.X, View.Center.Y - 150);
                });

                await Task.Delay(TimeSpan.FromSeconds(3.5));
            }

            MoveToRestingPosition(amiibo, withDelay);
        }