private void FireEnemyMissle() { int activeEnemyCount = 0; foreach (Enemy enemy in enemies) { if (enemy.CurrentState == Enemy.State.ALIVE) { activeEnemyCount++; } } int drawnEnemy = random.Next(activeEnemyCount); foreach (Enemy enemy in enemies) { if (enemy.CurrentState == Enemy.State.ALIVE) { drawnEnemy--; if (drawnEnemy <= 0) { if (unusedMissles.Count > 0 && enemyMissles.Count < activeEnemyCount) { Missle enemyMissle = unusedMissles[0]; unusedMissles.RemoveAt(0); enemyMissles.Add(enemyMissle); enemyMissle.SetPos(enemy.GetPos()); SoundPlayer.Instance.PlaySound("laser"); } return; } } } }
public BattleScreen(GraphicsDevice device) : base(device) { player = new Player(); player.RegisterListener(this); random = new Random(); //enemy = new Enemy(); playerMissle = new Missle(-10f, -10f, true); playerMissle.Speed *= 1.5f; // FIXME: jesli jest za szybki, to przelatuje przez wroga, bo nie jest wykrywana kolizja backgroundColor = Constans.BATTLESCREEN_BACKGROUND_COLORS[0]; enemies = new Enemy[Constans.ENEMY_COLS, Constans.ENEMY_ROWS]; motherShip = new MotherShip(1.1f, 0.1f); motherShip.CurrentState = MotherShip.State.DEAD; motherShipPos = 0.0f; enemyMissles = new List <Missle>(); unusedMissles = new List <Missle>(); for (int i = 0; i < 5; i++) { unusedMissles.Add(new Missle(-10f, -10f, false)); } ; SetupEnemies(); transitionState = TransitionState.NOT_VISIBLE; // startBattleButton = new core2d.Button("start_battle_button"); World.Instance.RegisterListener(this); GameScreenManager.Instance.LoadContentEventListeners += this.OnLoadContentEvent; GameScreenManager.Instance.OnActivatedEventListeners += this.OnActivatedEvent; }