Example #1
0
 public void CheckShellStrike(double deltaT, Canvas GameField)
 {
     for (int i = 0; i < Person.PlayerGun.Shells.Count; ++i)
     {
         Shell S = Person.PlayerGun.Shells[i];
         for (int j = 0; j < Asteroids.Count; ++j)
         {
             Asteroid A                = Asteroids[j];
             double   DistSquared      = Math.Pow(S.X - A.X, 2) + Math.Pow(S.Y - A.Y, 2);
             double   AsterDiamSquared = Math.Pow(A.Width / 2, 2) + Math.Pow(A.Height / 2, 2);
             if (Math.Sqrt(DistSquared) < Math.Sqrt(AsterDiamSquared))
             {
                 Strike Str = new Strike(A.X, A.Y, S.Angle);
                 Strikes.Add(Str);
                 StrikeGenerated = true;
                 A.Health       -= S.Damage;
                 GameField.Children.Remove(S.Rect);
                 Person.PlayerGun.Shells.RemoveAt(i);
                 break;
             }
             if (A.Health <= 0)
             {
                 AsteroidExplode AE = new AsteroidExplode(A.X, A.Y, A.Width + 20);
                 AsteroidExplodes.Add(AE);
                 GameField.Children.Add(AE.Rect);
                 GameField.Children.Remove(A.Rect);
                 Asteroids.RemoveAt(j);
                 Score += A.Score;
                 break;
             }
         }
     }
 }
Example #2
0
 private void DrawStrikes()
 {
     if (G.StrikeGenerated)
     {
         G.StrikeGenerated = false;
         InitStrike();
         DrawStrikes();
     }
     else
     {
         for (int i = 0; i < G.Strikes.Count; ++i)
         {
             Strike S = G.Strikes[i];
             for (int j = 0; j < S.Dusts.Count; ++j)
             {
                 Dust D = S.Dusts[j];
                 if (GameArea.Children.Contains(D.Rect))
                 {
                     Canvas.SetLeft(D.Rect, D.X);
                     Canvas.SetTop(D.Rect, D.Y);
                 }
             }
         }
     }
 }
Example #3
0
        private void InitStrike()
        {
            int n = G.Strikes.Count;

            if (n == 0)
            {
                return;
            }
            Strike S = G.Strikes[n - 1];

            for (int i = 0; i < S.Dusts.Count; ++i)
            {
                Dust D = S.Dusts[i];
                GameArea.Children.Add(D.Rect);
            }
        }
Example #4
0
 public void UpdateStrikes(double deltaT, Canvas GameField)
 {
     for (int i = 0; i < Strikes.Count; ++i)
     {
         Strike Str = Strikes[i];
         for (int j = 0; j < Str.Dusts.Count; ++j)
         {
             Dust D = Str.Dusts[j];
             D.Update(deltaT);
             if (!D.Allive)
             {
                 Str.Dusts.Remove(D);
                 GameField.Children.Remove(D.Rect);
             }
         }
         if (Str.Dusts.Count == 0)
         {
             Strikes.Remove(Str);
         }
     }
 }