private void ShootBullet() { Vector2 deltaVector = new Vector2(this.SpriteRectangle.Width / 2 + 10, this.SpriteRectangle.Height / 2- 15); bool aCreateNew = true; foreach (Bullet aBullet in bulletSprites) { if (aBullet.Visible == false) { aCreateNew = false; aBullet.Fire(this.SpritePosition+deltaVector,BULLET_SPEED, new Vector2(0, -1)); break; } } if (aCreateNew == true) { Bullet aBullet = new Bullet(); aBullet.Load(mContentManager,BULLET_TYPE); aBullet.Fire(this.SpritePosition+deltaVector,BULLET_SPEED, new Vector2(0, -1)); bulletSprites.Add(aBullet); } }
public override void Update(GameTime gameTime) { int x = RandomGenerator.getNextRandomNumber(0, 2000); int condition = x % 16;//condition variable to fire immune green bullets if (this.alienType!=0) { //code to fire immune green bullets if player opts to play without //horizontal movement float change; if (curPlayerTime == 0) { prevPlayerX = SpaceGame.playerX; } curPlayerTime += gameTime.ElapsedRealTime.Milliseconds; if (curPlayerTime > 1000) { change = prevPlayerX - SpaceGame.playerX; if (change < 0) change *= -1; if (change < 50) fireBullet = true; else fireBullet = false; curPlayerTime = 0; } if (fireBullet == true) condition = x % 2; } else { condition = 1; } //if condition == 0 green bullet is fired if (condition == 0 && bulletSprite.Visible == false && alienType>=1) { bulletSprite = new Bullet(); bulletSprite.Load(mContentManager, IMMUNE_BULLET); } else if (bulletSprite.Visible == false) { bulletSprite = new Bullet(); bulletSprite.Load(mContentManager, NORMAL_BULLET); } UpdateBullet(gameTime); if (state == AlienState.EXPLODED) { if (currentTime == 0) SoundPlayer.soundBank.PlayCue("explosion1"); currentTime += gameTime.ElapsedGameTime.Milliseconds; explosionSprite.Update(gameTime); if (currentTime > 1000) { state = AlienState.DIE; currentTime = 0; } } base.Update(gameTime); }