コード例 #1
0
        private void UpdaterForBazooka(object sender, EventArgs e)
        {
            var mousePosX   = Mouse.GetPosition(MyCanvas).X;
            var mousePosY   = Mouse.GetPosition(MyCanvas).Y - 80;
            var bazookaPosX = turns.Peek().CanvasXPos + 15;
            var bazookaPosY = turns.Peek().CanvasYPos - 30;
            // Angulo de ataque
            var controller = ImageBehavior.GetAnimationController(turns.Peek().icon);

            var angle = Math.Atan((mousePosY - bazookaPosY) / (mousePosX - bazookaPosX)) + (Math.PI / 2); // va de 0 a Pi
            var frame = 0.0;

            if (mousePosX < bazookaPosX)
            {
                frame = (angle * 31) / (Math.PI);
                ScaleTransform scale = new ScaleTransform();

                scale.ScaleX  = 1;
                scale.CenterX = 45;
                TransformGroup myTransformGroup = new TransformGroup();
                myTransformGroup.Children.Add(scale);
                turns.Peek().icon.RenderTransform = myTransformGroup;
                controller.GotoFrame((int)frame);
            }
            else
            {
                ScaleTransform scale = new ScaleTransform();
                scale.ScaleX  = -1;
                scale.CenterX = 45;
                TransformGroup myTransformGroup = new TransformGroup();
                myTransformGroup.Children.Add(scale);
                turns.Peek().icon.RenderTransform = myTransformGroup;
                frame = -1 * (((angle * 31) / (Math.PI)) - 14) + 17;
                controller.GotoFrame((int)frame);
            }
            //Barra de potencia

            var speedx        = mousePosX - bazookaPosX;
            var speedy        = mousePosY - bazookaPosY;
            var speed         = Math.Sqrt(Math.Pow(speedx, 2) + Math.Pow(speedy, 2));
            var barraPotencia = (160.0 / speed) * 950;

            //lb.Content = barraPotencia;
            if (barraPotencia >= 33)
            {
                potencia.Margin = new Thickness(33, 600, barraPotencia, 10);
            }



            //lb.Content = "frame = " + frame;
            if (Mouse.LeftButton == MouseButtonState.Pressed && wraper.Count == 0)
            {
                potencia.Visibility  = System.Windows.Visibility.Hidden;
                potencia2.Visibility = System.Windows.Visibility.Hidden;

                Wrap  p     = new Wrap(speedx, speedy, turns.Peek().CanvasXPos, turns.Peek().CanvasYPos, 90, 40);
                Image img   = new Image();
                var   image = new BitmapImage();
                image.BeginInit();
                image.UriSource = new Uri(@"D:\repos\Die_And_KILL\Die_And_Kill\Resources\bazooka.gif");
                image.EndInit();
                ImageBehavior.SetAnimatedSource(img, image);
                Canvas.SetTop(img, p.CanvasPosY);
                Canvas.SetLeft(img, p.CanvasPosX);
                MyCanvas.Children.Add(img);

                wraper.Add(new Tuple <Image, Wrap>(img, p));
                BazookaControl.Stop();
            }
        }