コード例 #1
0
 public void RemoveEnemy(EnemySpaceShip i_Enemy)
 {
     if (m_Enemys != null)
     {
         m_Enemys.Remove(i_Enemy);
     }
 }
コード例 #2
0
        public void RegisterEnemy(EnemySpaceShip i_Enemy)
        {
            if (m_Enemys == null)
            {
                m_Enemys = new List <Sprite>();
            }

            m_Enemys.Add(i_Enemy);
            i_Enemy.GotHit += removeHitEnemySpaceShip;
        }
コード例 #3
0
        private void VerifyStage()
        {
            if (stage == -2)
            {
                Vector2D       pos   = new Vector2D(150, this.Position.Y - 200);
                EnemySpaceShip enemy = new EnemySpaceShip(pos);
                enemy.Velocity = pos - this.User.Position;
                enemy.Velocity = enemy.Velocity.GetNormal() * 50;
                this.Enemies.Add(enemy);
                stage++;
            }
            else if (stage == -1)
            {
                Vector2D       pos   = new Vector2D(150, this.Position.Y - 200);
                EnemySpaceShip enemy = new EnemySpaceShip(pos);
                enemy.Velocity = pos - this.User.Position;
                enemy.Velocity = enemy.Velocity.GetNormal() * 200;
                this.Enemies.Add(enemy);
                stage++;
            }
            else if (stage == 0)
            {
                if (this.Position.Y <= 2000)
                {
                    Random rd = new Random();
                    for (int i = 1; i < 11; i++)
                    {
                        EnemySpaceShip enemy = new EnemySpaceShip(new LFVMath.Basic.Vector2D(i * 50, 1800));
                        if (rd.Next(5) < 2)
                        {
                            enemy.Item = new ItemBullet(BulletType.Laser, 5, new Vector2D(0, -200), new Vector2D(10, 0), true, 5, 0.50);
                        }
                        this.Enemies.Add(enemy);
                    }
                    stage++;
                }
            }
            else if (stage == 1)
            {
                if (this.Position.Y <= 1300)
                {
                    Random rd = new Random();
                    for (int i = 1; i < 14; i++)
                    {
                        EnemySpaceShip enemy = new EnemySpaceShip(new LFVMath.Basic.Vector2D(i * 50, 1200));
                        if (rd.Next(5) < 2)
                        {
                            enemy.Item = new ItemHolySkul(100);
                        }
                        this.Enemies.Add(enemy);
                    }
                    stage++;
                }
            }
            else if (stage == 2)
            {
                if (this.Position.Y <= 800)
                {
                    for (int i = 4; i < 14; i++)
                    {
                        EnemySpaceShip enemy = new EnemySpaceShip(new LFVMath.Basic.Vector2D(i * 50, 700));
                        enemy.BulletSettings.IsParalel   = true;
                        enemy.BulletSettings.Quantity    = 3;
                        enemy.BulletSettings.Increment.X = 4;
                        enemy.BulletSettings.Increment.Y = 3;
                        this.Enemies.Add(enemy);
                    }
                    stage++;
                }
            }
            else if (stage == 3)
            {
                if (this.Position.Y <= 100)
                {
                    for (int i = 4; i < 14; i++)
                    {
                        Vector2D       pos   = new LFVMath.Basic.Vector2D(i * 50, 0);
                        EnemySpaceShip enemy = new EnemySpaceShip(pos);
                        enemy.Velocity = this.User.Position - pos;
                        enemy.Velocity = enemy.Velocity.GetNormal() * 200;
                        this.Enemies.Add(enemy);
                    }
                    stage++;
                }
            }
            else if (stage == 4)
            {
                if (this.Position.Y <= 100 && Enemies.Count <= 2)
                {
                    EnemySpaceShip enemy = new EnemySpaceShip(new LFVMath.Basic.Vector2D(350, 0));
                    enemy.BulletSettings.Force           = 5;
                    enemy.SpriteImage                    = StaticImages.Sprites[GameSprites.AirPlane_Green.GetSpriteIndex(SpritePositionEnum.DOWN, ObjectStatus.Normal)];
                    enemy.BulletSettings.Quantity        = 5;
                    enemy.BulletSettings.Increment.X     = 20;
                    enemy.BulletSettings.Interval        = 0.75;
                    enemy.TimeAcummulator.MaxTime        = 0.75;
                    enemy.BulletSettings.NominalVelocity = 350;
                    enemy.Energy     = 300;
                    enemy.Velocity.Y = 120;
                    enemy.Velocity.X = 100;
                    this.Enemies.Add(enemy);

                    stage++;
                }
            }
        }
コード例 #4
0
ファイル: GenericStage.cs プロジェクト: lvendrame/p-atack
        public override void Update(double elapsedTime)
        {
            if (this.IsPaused)
            {
                return;
            }

            if (this.Position.Y <= 0)
            {
                this.State = StageState.Stop;
            }

            if (!this.IsStopedMove)
            {
                this.UpdateY(elapsedTime);
            }

            if (this.v2dNextUserPosition.Y >= this.Position.Y && this.v2dNextUserPosition.Y <= (this.Position.Y + 500))
            {
                ssUser.Position.Y = this.v2dNextUserPosition.Y;
            }
            else
            {
                ssUser.Position.Y += this.Velocity.Y * elapsedTime;
            }

            if (this.v2dNextUserPosition.X >= this.Position.X && this.v2dNextUserPosition.X <= (this.Position.X + 800))
            {
                ssUser.Position.X = this.v2dNextUserPosition.X;
            }


            #region createBullet
            ssUser.TimeAcummulator.Update(elapsedTime);
            if (createBullet)
            {
                if (ssUser.TimeAcummulator.IsOverflow)
                {
                    Vector2D posB;
                    posB.X = ssUser.Position.X + ssUser.AddPosBullet;
                    posB.Y = ssUser.Position.Y;
                    ssUser.BulletSettings.AddBullets(lstUserBullets, posB, this, true);
                    createBullet = false;
                }
            }
            #endregion

            #region enemy.Update
            for (int ie = 0; ie < lstEnemies.Count; ie++)
            {
                EnemySpaceShip enemy = lstEnemies[ie];
                switch (enemy.Update(ssUser, this, elapsedTime))
                {
                case CombatStatus.MeDie:
                case CombatStatus.BothDie:
                    lstEnemies.RemoveAt(ie);
                    ie--;
                    if (enemy.HasItem)
                    {
                        this.Items.Add(enemy.Item);
                    }
                    enemy.Dispose();
                    break;
                }
            }
            #endregion

            #region lstUserBullets
            for (int i = 0; i < lstUserBullets.Count; ++i)
            {
                Bullet bullet = lstUserBullets[i];
                bullet.Update(elapsedTime);
                if (bullet.Position.Y <= this.Position.Y)
                {
                    lstUserBullets.RemoveAt(i);
                    bullet.Dispose();
                    --i;
                    continue;
                }
                for (int j = 0; j < lstEnemies.Count; ++j)
                {
                    EnemySpaceShip enemy    = lstEnemies[j];
                    CombatStatus   cs       = bullet.VerifyCombat(enemy);
                    bool           breakFor = false;
                    switch (cs)
                    {
                    case CombatStatus.BothDie:
                        #region CombatStatus.BothDie
                        this.lstExplosions.Add(new Explosion(bullet.Position, ExplosionType.One));
                        lstUserBullets.RemoveAt(i);
                        bullet.Dispose();
                        --i;
                        lstEnemies.RemoveAt(j);
                        --j;
                        if (enemy.HasItem)
                        {
                            lstItem.Add(enemy.Item);
                        }
                        enemy.Dispose();
                        breakFor = true;
                        break;

                        #endregion
                    case CombatStatus.MeDie:
                        #region CombatStatus.MeDie
                        this.lstExplosions.Add(new Explosion(bullet.Position, ExplosionType.One));
                        lstUserBullets.RemoveAt(i);
                        bullet.Dispose();
                        --i;
                        breakFor = true;
                        break;

                        #endregion
                    case CombatStatus.CombatantDie:
                        #region CombatStatus.CombatantDie
                        this.lstExplosions.Add(new Explosion(bullet.Position, ExplosionType.One));
                        lstEnemies.RemoveAt(j);
                        --j;
                        if (enemy.HasItem)
                        {
                            lstItem.Add(enemy.Item);
                        }
                        enemy.Dispose();
                        break;
                        #endregion
                    }
                    if (breakFor)
                    {
                        break;
                    }
                }
            }
            #endregion

            #region lstEnemiesBullets
            for (int i = 0; i < lstEnemiesBullets.Count; ++i)
            {
                Bullet enBullet = lstEnemiesBullets[i];
                enBullet.Update(elapsedTime);
                if (enBullet.Position.Y >= (this.Position.Y + 816))
                {
                    lstEnemiesBullets.RemoveAt(i);
                    enBullet.Dispose();
                    --i;
                    continue;
                }
                if (enBullet.VerifyCombat(ssUser) != CombatStatus.None)
                {
                    this.lstExplosions.Add(new Explosion(enBullet.Position, ExplosionType.Two));
                    lstEnemiesBullets.RemoveAt(i);
                    enBullet.Dispose();
                    --i;
                    break;
                }
            }

            #endregion

            #region lstExplosions
            for (int i = 0; i < lstExplosions.Count; ++i)
            {
                Explosion exp = lstExplosions[i];
                exp.Update(elapsedTime);
                if (exp.Destroy())
                {
                    lstExplosions.RemoveAt(i);
                    exp.Dispose();
                    --i;
                }
            }
            #endregion

            #region lstItem
            for (int i = 0; i < lstItem.Count; ++i)
            {
                Item ib = lstItem[i];
                if (ib.Update(elapsedTime, ssUser))
                {
                    lstItem.RemoveAt(i);
                    ib.Dispose();
                    --i;
                }
            }
            #endregion
        }
コード例 #5
0
 private void Start()
 {
     _spaceship = GetComponent <EnemySpaceShip>();
     _spaceship.ShipDestroyed += SpawnBonus;
 }