public override void Update() { if (waitCount > 0) { double newX = waitX + swingWidth * Utility.Sin(Game.Ticks * 8); double newY = waitY + swingHeight * Utility.Sin(Game.Ticks * 8); vx = newX - X; vy = newY - Y; X = newX; Y = newY; waitCount--; } if (waitCount == 0) { if (!attacking) { if (angle == 90) { angle += Game.Random.Next(2) == 0 ? 1 : -1; } else { int deg = Utility.NormalizeDeg(270 - angle); if (Math.Abs(deg) < 8) { angle = 270; attacking = true; } else { if (deg < 0) { angle -= 8; } else if (deg > 0) { angle += 8; } } } vx += 0.5 * Utility.Cos(angle); vy -= 0.5 * Utility.Sin(angle); Move(); } else { if (X < Game.Player.X + playerXTraceOffset) { vx += 0.25; } else if (X > Game.Player.X + playerXTraceOffset) { vx -= 0.25; } vy += 0.25; Move(); { int deg = Utility.NormalizeDeg(Utility.Atan2(Y - Game.Player.Y, Game.Player.X - X) - angle); if (deg == -180) { angle += Game.Random.Next(2) == 0 ? 1 : -1; } else if (Math.Abs(deg) < 4) { angle = Utility.Atan2(Y - Game.Player.Y, Game.Player.X - X); } else { if (deg < 0) { angle -= 4; } else if (deg > 0) { angle += 4; } } } if (fireCount > 0) { fireCount--; } else if (!Game.Player.IsDead) { if (Y < Game.Player.Y) { Bullet bullet = new EnemyBullet(Game, X + 32 * Utility.Cos(angle), Y - 32 * Utility.Sin(angle), 12, angle); Game.AddEnemyBullet(bullet); Game.PlaySound(Sound.EnemyFire); fireCount = Game.Random.Next(30, 60); playerXTraceOffset = Game.Random.Next(-64, 64 + 1); } else { fireCount = Game.Random.Next(15, 30); playerXTraceOffset = Game.Random.Next(-64, 64 + 1); } } } } }
public override void Update() { if (waitCount > 0) { double newX = waitX + swingWidth * Utility.Sin(Game.Ticks * 8); double newY = waitY + swingHeight * Utility.Sin(Game.Ticks * 8); vx = newX - X; vy = newY - Y; X = newX; Y = newY; waitCount--; } if (waitCount == 0) { if (!attacking) { if (angle == 90) { angle += Game.Random.Next(2) == 0 ? 1 : -1; } else { int deg = Utility.NormalizeDeg(270 - angle); if (Math.Abs(deg) < 8) { angle = 270; attacking = true; } else { if (deg < 0) { angle -= 8; } else if (deg > 0) { angle += 8; } } } vx += 0.5 * Utility.Cos(angle); vy -= 0.5 * Utility.Sin(angle); Move(); } else { if (X < Game.Player.X + playerXTraceOffset) { vx += 0.25; } else if (X > Game.Player.X + playerXTraceOffset) { vx -= 0.25; } vy += 0.25; Move(); { int deg = Utility.NormalizeDeg(Utility.Atan2(Y - Game.Player.Y, Game.Player.X - X) - angle); if (deg == -180) { angle += Game.Random.Next(2) == 0 ? 1 : -1; } else if (Math.Abs(deg) < 4) { angle = Utility.Atan2(Y - Game.Player.Y, Game.Player.X - X); } else { if (deg < 0) { angle -= 4; } else if (deg > 0) { angle += 4; } } } if (fireCount > 0) { fireCount--; } else if (!Game.Player.IsDead) { if (Y < Game.Player.Y) { Bullet bullet = new EnemyBullet(Game, X + 32 * Utility.Cos(angle), Y - 32 * Utility.Sin(angle), 12, angle); Game.AddEnemyBullet(bullet); Game.PlaySound(Sound.EnemyFire); fireCount = Game.Random.Next(30, 60); playerXTraceOffset = Game.Random.Next(-64, 64 + 1); } else { fireCount = Game.Random.Next(15, 30); playerXTraceOffset = Game.Random.Next(-64, 64 + 1); } } } } }
public override void Update() { if (waitCount > 0) { double newX = waitX + swingWidth * Utility.Sin(Game.Ticks * 8); double newY = waitY + swingHeight * Utility.Sin(Game.Ticks * 8); vx = newX - X; vy = newY - Y; X = newX; Y = newY; waitCount--; } if (waitCount == 0) { if (!attacking) { if (angle == 90) { angle += Game.Random.Next(2) == 0 ? 1 : -1; } else { int deg = Utility.NormalizeDeg(270 - angle); if (Math.Abs(deg) < 8) { angle = 270; attacking = true; } else { if (deg < 0) { angle -= 8; } else if (deg > 0) { angle += 8; } } } vx += 0.5 * Utility.Cos(angle); vy -= 0.5 * Utility.Sin(angle); Move(); } else { PlayerBullet playerBullet = null; foreach (PlayerBullet targetBullet in Game.PlayerBulletList) { if (Math.Abs(targetBullet.X - X) < 32) { if (Y < targetBullet.Y && targetBullet.Y - 128 < Y) { if (playerBullet == null || targetBullet.Y < playerBullet.Y) { playerBullet = targetBullet; } } } } if (playerBullet == null) { if (X < Game.Player.X + playerXTraceOffset) { vx += 0.5; } else if (X > Game.Player.X + playerXTraceOffset) { vx -= 0.5; } } else { if (X < playerBullet.X) { vx -= 3; } else if (X > playerBullet.X) { vx += 3; } } vy += 0.25; Move(); { int deg = Utility.NormalizeDeg(Utility.Atan2(Y - Game.Player.Y, Game.Player.X - X) - angle); if (deg == -180) { angle += Game.Random.Next(2) == 0 ? 1 : -1; } else if (Math.Abs(deg) < 2) { angle = Utility.Atan2(Y - Game.Player.Y, Game.Player.X - X); } else { if (deg < 0) { angle -= 2; } else if (deg > 0) { angle += 2; } } angle = (angle % 360 + 360) % 360; if (angle < 225) { angle = 225; } else if (angle > 315) { angle = 315; } } if (fireCount > 0) { fireCount--; } else if (!Game.Player.IsDead) { if (Y < Game.Player.Y) { Bullet bullet = new EnemyBullet(Game, X + 32 * Utility.Cos(angle), Y - 32 * Utility.Sin(angle), 12, angle); Game.AddEnemyBullet(bullet); Game.PlaySound(Sound.EnemyFire); fireCount = Game.Random.Next(60, 90); playerXTraceOffset = Game.Random.Next(-32, 32 + 1); } else { fireCount = Game.Random.Next(15, 30); playerXTraceOffset = Game.Random.Next(-32, 32 + 1); } } } } damaged = false; }
public override void Update() { if (waitCount > 0) { double newX = waitX + swingWidth * Utility.Sin(Game.Ticks * 8); double newY = waitY + swingHeight * Utility.Sin(Game.Ticks * 8); vx = newX - X; vy = newY - Y; X = newX; Y = newY; waitCount--; } if (waitCount == 0) { if (!attacking) { if (angle == 90) { angle += Game.Random.Next(2) == 0 ? 1 : -1; } else { int deg = Utility.NormalizeDeg(270 - angle); if (Math.Abs(deg) < 8) { angle = 270; attacking = true; } else { if (deg < 0) { angle -= 8; } else if (deg > 0) { angle += 8; } } } vx += 0.5 * Utility.Cos(angle); vy -= 0.5 * Utility.Sin(angle); Move(); } else { PlayerBullet playerBullet = null; foreach (PlayerBullet targetBullet in Game.PlayerBulletList) { if (Math.Abs(targetBullet.X - X) < 32) { if (Y < targetBullet.Y && targetBullet.Y - 128 < Y) { if (playerBullet == null || targetBullet.Y < playerBullet.Y) { playerBullet = targetBullet; } } } } if (playerBullet == null) { if (X < Game.Player.X + playerXTraceOffset) { vx += 0.5; } else if (X > Game.Player.X + playerXTraceOffset) { vx -= 0.5; } } else { if (X < playerBullet.X) { vx -= 3; } else if (X > playerBullet.X) { vx += 3; } } vy += 0.25; Move(); { int deg = Utility.NormalizeDeg(Utility.Atan2(Y - Game.Player.Y, Game.Player.X - X) - angle); if (deg == -180) { angle += Game.Random.Next(2) == 0 ? 1 : -1; } else if (Math.Abs(deg) < 2) { angle = Utility.Atan2(Y - Game.Player.Y, Game.Player.X - X); } else { if (deg < 0) { angle -= 2; } else if (deg > 0) { angle += 2; } } angle = (angle % 360 + 360) % 360; if (angle < 225) { angle = 225; } else if (angle > 315) { angle = 315; } } if (fireCount > 0) { fireCount--; } else if (!Game.Player.IsDead) { if (Y < Game.Player.Y) { Bullet bullet = new EnemyBullet(Game, X + 32 * Utility.Cos(angle), Y - 32 * Utility.Sin(angle), 12, angle); Game.AddEnemyBullet(bullet); Game.PlaySound(Sound.EnemyFire); fireCount = Game.Random.Next(60, 90); playerXTraceOffset = Game.Random.Next(-32, 32 + 1); } else { fireCount = Game.Random.Next(15, 30); playerXTraceOffset = Game.Random.Next(-32, 32 + 1); } } } } damaged = false; }
public override void Update() { if (waitCount > 0) { double newX = waitX + swingWidth * Utility.Sin(Game.Ticks * 8); double newY = waitY + swingHeight * Utility.Sin(Game.Ticks * 8); vx = newX - X; vy = newY - Y; X = newX; Y = newY; waitCount--; } if (waitCount == 0) { if (!attacking) { if (angle == 90) { angle += Game.Random.Next(2) == 0 ? 1 : -1; } else { int deg = Utility.NormalizeDeg(270 - angle); if (Math.Abs(deg) < 8) { angle = 270; attacking = true; } else { if (deg < 0) { angle -= 8; } else if (deg > 0) { angle += 8; } } } vx += 0.5 * Utility.Cos(angle); vy -= 0.5 * Utility.Sin(angle); Move(); } else { if (X < Game.Player.X + playerXTraceOffset) { vx += 0.25; } else if (X > Game.Player.X + playerXTraceOffset) { vx -= 0.25; } vy += 0.25; Move(); { int deg = Utility.NormalizeDeg(Utility.Atan2(Y - Game.Player.Y, Game.Player.X - X) - angle); if (deg == -180) { angle += Game.Random.Next(2) == 0 ? 1 : -1; } else if (Math.Abs(deg) < 2) { angle = Utility.Atan2(Y - Game.Player.Y, Game.Player.X - X); } else { if (deg < 0) { angle -= 2; } else if (deg > 0) { angle += 2; } } angle = (angle % 360 + 360) % 360; if (angle < 225) { angle = 225; } else if (angle > 315) { angle = 315; } } if (fireCount > 0) { fireCount--; } else if (!Game.Player.IsDead) { if (Y < Game.Player.Y) { Bullet bullet1 = new EnemyBullet(Game, X + 32 * Utility.Cos(angle), Y - 32 * Utility.Sin(angle), 8, angle - 15); Bullet bullet2 = new EnemyBullet(Game, X + 32 * Utility.Cos(angle), Y - 32 * Utility.Sin(angle), 8, angle); Bullet bullet3 = new EnemyBullet(Game, X + 32 * Utility.Cos(angle), Y - 32 * Utility.Sin(angle), 8, angle + 15); Game.AddEnemyBullet(bullet1); Game.AddEnemyBullet(bullet2); Game.AddEnemyBullet(bullet3); Game.PlaySound(Sound.EnemyFire); fireCount = Game.Random.Next(60, 120); playerXTraceOffset = Game.Random.Next(-96, 96 + 1); } else { fireCount = Game.Random.Next(60, 120); playerXTraceOffset = Game.Random.Next(-96, 96 + 1); } } } } damaged = false; }
public override void Update() { if (waitCount > 0) { double newX = waitX + swingWidth * Utility.Sin(Game.Ticks * 8); double newY = waitY + swingHeight * Utility.Sin(Game.Ticks * 8); vx = newX - X; vy = newY - Y; X = newX; Y = newY; waitCount--; } if (waitCount == 0) { if (!attacking) { if (angle == 90) { angle += Game.Random.Next(2) == 0 ? 1 : -1; } else { int deg = Utility.NormalizeDeg(270 - angle); if (Math.Abs(deg) < 8) { angle = 270; attacking = true; } else { if (deg < 0) { angle -= 8; } else if (deg > 0) { angle += 8; } } } vx += 0.5 * Utility.Cos(angle); vy -= 0.5 * Utility.Sin(angle); Move(); } else { if (X < Game.Player.X + playerXTraceOffset) { vx += 0.25; } else if (X > Game.Player.X + playerXTraceOffset) { vx -= 0.25; } vy += 0.25; Move(); { int deg = Utility.NormalizeDeg(Utility.Atan2(Y - Game.Player.Y, Game.Player.X - X) - angle); if (deg == -180) { angle += Game.Random.Next(2) == 0 ? 1 : -1; } else if (Math.Abs(deg) < 2) { angle = Utility.Atan2(Y - Game.Player.Y, Game.Player.X - X); } else { if (deg < 0) { angle -= 2; } else if (deg > 0) { angle += 2; } } angle = (angle % 360 + 360) % 360; if (angle < 225) { angle = 225; } else if (angle > 315) { angle = 315; } } if (fireCount > 0) { fireCount--; } else if (!Game.Player.IsDead) { if (Y < Game.Player.Y) { Bullet bullet1 = new EnemyBullet(Game, X + 32 * Utility.Cos(angle), Y - 32 * Utility.Sin(angle), 8, angle - 15); Bullet bullet2 = new EnemyBullet(Game, X + 32 * Utility.Cos(angle), Y - 32 * Utility.Sin(angle), 8, angle); Bullet bullet3 = new EnemyBullet(Game, X + 32 * Utility.Cos(angle), Y - 32 * Utility.Sin(angle), 8, angle + 15); Game.AddEnemyBullet(bullet1); Game.AddEnemyBullet(bullet2); Game.AddEnemyBullet(bullet3); Game.PlaySound(Sound.EnemyFire); fireCount = Game.Random.Next(60, 120); playerXTraceOffset = Game.Random.Next(-96, 96 + 1); } else { fireCount = Game.Random.Next(60, 120); playerXTraceOffset = Game.Random.Next(-96, 96 + 1); } } } } damaged = false; }