public void RemoveEnemy(EnemySpaceShip i_Enemy) { if (m_Enemys != null) { m_Enemys.Remove(i_Enemy); } }
public void RegisterEnemy(EnemySpaceShip i_Enemy) { if (m_Enemys == null) { m_Enemys = new List <Sprite>(); } m_Enemys.Add(i_Enemy); i_Enemy.GotHit += removeHitEnemySpaceShip; }
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++; } } }
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 }
private void Start() { _spaceship = GetComponent <EnemySpaceShip>(); _spaceship.ShipDestroyed += SpawnBonus; }