public void Spawn(ref Ship ship, Vector2 position, Vector2 velocity) { Ship = ship; Position = new Vector3(position, 0.0f); Velocity = new Vector3(velocity, 0.0f); Alive = true; }
public void CreateShips() { for (int i = 0; i < Ships.Capacity; i++) { Ship s = new Ship(); Ships.Add(s); AddChild(s); } }
public void SpawnBullet(ref Ship ship, Vector2 position, Vector2 velocity) { for (int i = 0; i < Bullets.Capacity; i++) { if (!Bullets[i].Alive) { Bullets[i].Spawn(ref ship, position, velocity); return; } } }
public void ActivateShip(bool playerShip) { for (int i = 0; i < Ships.Capacity; i++) { if (!Ships[i].Active) { Ships[i].Activate(); if (playerShip) PlayerShip = Ships[i]; Ships[i].Spawn(); return; } } }
public void Fire(ref Ship ship, Vector2 velocity) { if (Alive) { if (FireDelay <= 0) { velocity.Normalize(); float angle = (float)Math.Atan2(velocity.Y, velocity.X); ((GameplayScene)Scene).BulletManager.SpawnBullet(ref ship, new Vector2(Position.X, Position.Y) + velocity * Radius * 2, velocity * Bullet.Speed); ((GameplayScene)Scene).BulletManager.SpawnBullet(ref ship, new Vector2(Position.X, Position.Y) + velocity * Radius * 2, new Vector2((float)Math.Cos(angle + MathHelper.ToRadians(5.0f)), (float)Math.Sin(angle + MathHelper.ToRadians(5.0f))) * Bullet.Speed); ((GameplayScene)Scene).BulletManager.SpawnBullet(ref ship, new Vector2(Position.X, Position.Y) + velocity * Radius * 2, new Vector2((float)Math.Cos(angle - MathHelper.ToRadians(5.0f)), (float)Math.Sin(angle - MathHelper.ToRadians(5.0f))) * Bullet.Speed); FireDelay = Ship.FireSpeed; ((GameplayScene)Scene).AudioManager.PlaySound("ClosedHihat", Position, Velocity); } } }