int step = 8; //How many pixels you want the invaders to move #endregion Fields #region Constructors public Enemies(World world) { m_enemies = new Enemy[ROWS, COLS]; m_world = world; for (int r = 0; r < ROWS; r += 1) for (int c = 0; c < COLS; c += 1) { Enemy enemy = null; Vector2 position = new Vector2(20, 125) + new Vector2(30 * (c + 1), 25 * (r + 1)); switch(r) { case 0: { enemy = new Enemy(world, position, new Vector2(28, 20), world.m_texInvadersSheet, m_Enemy3Playing, m_EnemyDying); enemy.points = 30; } break; case 1: { enemy = new Enemy(world, position, new Vector2(28, 20), world.m_texInvadersSheet, m_Enemy2Playing, m_EnemyDying); enemy.points = 20; } break; case 2: { enemy = new Enemy(world, position, new Vector2(28, 20), world.m_texInvadersSheet, m_Enemy2Playing, m_EnemyDying); enemy.points = 20; } break; case 3: { enemy = new Enemy(world, position, new Vector2(28, 20), world.m_texInvadersSheet, m_Enemy1Playing, m_EnemyDying); enemy.points = 10; } break; case 4: { enemy = new Enemy(world, position, new Vector2(28, 20), world.m_texInvadersSheet, m_Enemy1Playing, m_EnemyDying); enemy.points = 10; } break; } world.m_entities.Add(enemy); m_enemies[r, c] = enemy; } }
private bool CanShoot(Enemy enemy) { throw new NotImplementedException(); }
private void SpawnNewEnemies() { if (Utilities.GetTimeDifference(timeOfLastSpawn, true) >= 100) { timeOfLastSpawn = DateTime.Now; for (int i = 0; i < 6; i++) { int result = rnd.Next(0, 101); if (result > 70) { Vector2f position = new Vector2f(i * laneWidth + laneWidth * 0.5f, -32); Vector2f targetPosition = player.Position; Enemy enemyShip = new Enemy(position, AssetsManager.Textures["enemy"]); enemyShip.Scale *= 0.5f; float distx = player.Position.X - enemyShip.Position.X; float disty = player.Position.Y - enemyShip.Position.Y; double dist = Math.Sqrt(Math.Pow(distx, 2) + Math.Pow(disty, 2)); double unitX = distx / dist; double unitY = disty / dist; enemyShip.DirectionVector = new Vector2f((float)unitX, (float)unitY); enemyShip.Rotation = (float)(Math.Atan2(-distx, disty) * (180 / Math.PI)); enemies.Add(enemyShip); } } } }
private void InitlizeEnemies() { this.enemies = new List<Enemy>(); int currEnemyXPosition = InitialData.Hud.ScreenWidth / InitialData.UnitData.EnemiesCount; int currEnemyYPosition = InitialData.UnitData.EnemyHeight; Enemy currEnemy = null; // It is used for initialization of the enemies with different sprites int numberOfEnemiesOnRow = InitialData.UnitData.EnemiesCount / InitialData.UnitData.EnemyPacks; for (int currEnemyIndex = 1; currEnemyIndex <= InitialData.UnitData.EnemiesCount; currEnemyIndex++) { currEnemy = new Enemy(GetEnemySpritePath((currEnemyIndex - 1) / numberOfEnemiesOnRow), MathHelper.ToRadians(180)); currEnemy.PositionX = currEnemyXPosition; currEnemy.PositionY = currEnemyYPosition / 5; currEnemyXPosition = currEnemyXPosition + InitialData.UnitData.EnemyWidth; if (currEnemyIndex % (InitialData.UnitData.EnemiesCount / InitialData.UnitData.EnemyPacks) == 0) { currEnemyYPosition = currEnemyYPosition + InitialData.UnitData.EnemyHeight * 5; currEnemyXPosition = InitialData.Hud.ScreenWidth / InitialData.UnitData.EnemiesCount; } currEnemy.Texture = Content.Load<Texture2D>(currEnemy.SpritePath); this.enemies.Add(currEnemy); } }
private void CheckIfEnemyHit(Enemy enemy) { for (int i = projectileList.Count - 1; i >= 0; i--) { if (Math.Abs(projectileList[i].Position.Y - enemy.Position.Y) < projectileList[i].Origin.Y + enemy.Origin.Y) { if (Math.Abs(projectileList[i].Position.X - enemy.Position.X) < projectileList[i].Origin.X + enemy.Origin.X) // Hit. { explosionSound.Play(); player.Points += 10; AnimatedSprite anim = new AnimatedSprite(new Vector2i(77, 79), AssetsManager.Textures["explosion"], 8, SpriteSheetType.OneRowPerAnimation); anim.Position = enemy.Position; explosionList.Add(anim); projectileList.Remove(projectileList[i]); enemies.Remove(enemy); } } } }