Пример #1
0
        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;
                }
        }
Пример #2
0
 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);
                    }
                }
            }
        }
Пример #4
0
        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);
             }
         }
     }
 }