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; } } } }
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); } } } } }
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); } }
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); } } }