public override void EnterLevel(int fromLevelNum) { base.EnterLevel(fromLevelNum); Console.WriteLine("BEGINNING "); if (gameStateManager.getLevel(fromLevelNum) is GameLevel1) { GameLevel1 lastGameLevel = gameStateManager.getLevel(fromLevelNum) as GameLevel1; level = lastGameLevel.level + 1; Console.WriteLine("LEVEL: " + level.ToString()); score = lastGameLevel.score; enemyToSpawn = lastGameLevel.enemyToSpawn + 3; } else { level = 1; score = 0; enemyToSpawn = 10; } enemyCounter = 0; //initialize level texts textLevel = new TextRenderable("LEVEL: " + level.ToString(), new Vector2(20, 20), spriteFont, Color.Red); textScore.text = "Score : " + score.ToString(); //initialize player for new level player = new Player(true, playerTex, 50, Game1.SCREEN_HEIGHT / 2 - 50); player.setWidthHeight(100, 100); player.setFlip(SpriteEffects.FlipHorizontally); //initalize level state levelState = LEVELSTATE.LEVELSTART; //initialize lists particleList = new SpriteList(); enemyList = new SpriteList(); playerBulletList = new SpriteList(); Console.WriteLine("enemyCounter" + enemyCounter); Console.WriteLine("enemyToSpawn" + enemyToSpawn); scrollBack = new ScrollBackGround(texBackground, texBackground.Bounds, new Rectangle(0, 0, Game1.SCREEN_WIDTH, Game1.SCREEN_HEIGHT), -1 + player.playerBackgroundSpeed, 2); scrollFore = new ScrollBackGround(texForeground, texForeground.Bounds, new Rectangle(0, 0, Game1.SCREEN_WIDTH, Game1.SCREEN_HEIGHT), -2 + player.playerBackgroundSpeed, 2); //initialize eneemy player targetting. EnemyEasy.player = player; }
public override void Update(GameTime gameTime) { //deltaTime is in seconds, so calculations = pixels per second. deltaTime = (float)gameTime.ElapsedGameTime.TotalSeconds; //Press enter to start game/level switch (levelState) { case LEVELSTATE.LEVELSTART: if (InputManager.Instance.KeyPressed(Keys.Enter)) { levelState = LEVELSTATE.LEVELPLAY; } return; case LEVELSTATE.LEVELPLAY: timer += deltaTime; //update player player.Update(gameTime); //PAUSE if (InputManager.Instance.KeyPressed(Keys.P)) { gameStateManager.pushLevel(3); } //PLAYER SHOOT if (InputManager.Instance.KeyPressed(Keys.Space)) { AddBullet((int)player.getPosX(), (int)player.getPosY()); soundBulletLimit.playSoundIfOk(); } break; case LEVELSTATE.LEVELFINISH: player.Update(gameTime); if (InputManager.Instance.KeyPressed(Keys.Enter)) { gameStateManager.pushLevel(1); } break; case LEVELSTATE.LEVELGAMEOVER: timer += deltaTime; if (InputManager.Instance.KeyPressed(Keys.Q)) { gameStateManager.setLevel(4); } break; default: throw new Exception("hahaha"); } //Every 2 seconds, spawn an enemy randomly. if (timer > spawnInterval && enemyCounter < enemyToSpawn) { AddEnemy(enemyList); timer = 0; enemyCounter++; } //update backgrounds scrollBack.Update(gameTime); scrollFore.Update(gameTime); scrollBack.setScrollSpeed(player.playerBackgroundSpeed - 2); scrollFore.setScrollSpeed(player.playerBackgroundSpeed); //Update/remove enemies enemyList.Update(gameTime); enemyList.removeIfOutside(new Rectangle(-100, -100, Game1.SCREEN_WIDTH + 200, Game1.SCREEN_HEIGHT + 200)); if (enemyList.countActive() == 0 && enemyCounter >= enemyToSpawn) { levelState = LEVELSTATE.LEVELFINISH; } //update/remove bullets playerBulletList.moveDeltaX(5); playerBulletList.removeIfOutside(new Rectangle(-100, -100, Game1.SCREEN_WIDTH + 200, Game1.SCREEN_HEIGHT + 200)); //If player collides with enemy int collisionIndex = enemyList.collisionAA(player); if (collisionIndex != -1) { Sprite3 temp = enemyList.getSprite(collisionIndex); //player collides with boss if (temp.getName() == "boss") { } else { //enemy dies? temp.active = false; temp.visible = false; AddExplosion((int)temp.getPosX(), (int)temp.getPosY()); score -= 5; textScore.text = "Score : " + score.ToString(); player.TakeDamage(); if (player.hitPoints <= 0) { levelState = LEVELSTATE.LEVELGAMEOVER; AddExplosion((int)player.getPosX(), (int)player.getPosY()); player.setPos(0, -300); // offscreen player.setActive(false); } //TODO: GET HITSOUND soundEnemyHitLimit.playSoundIfOk(); } } //if a bullet collides with enemy for (int i = 0; i < playerBulletList.count(); i++) { Sprite3 currentBullet = playerBulletList.getSprite(i); if (currentBullet == null) { continue; } if (currentBullet.active != true) { continue; } if (currentBullet.visible != true) { continue; } //if collision success int collision = enemyList.collisionAA(currentBullet); if (collision != -1) { Sprite3 currentEnemy = enemyList.getSprite(collision); currentEnemy.hitPoints -= 1; //DEAD ENEMY if (currentEnemy.hitPoints <= 0) { currentEnemy.active = false; currentEnemy.visible = false; //add particle AddExplosion((int)currentEnemy.getPosX(), (int)currentEnemy.getPosY()); //add score score += 10; textScore.text = "Score : " + score.ToString(); } //DAMAGED ENEMY else { currentEnemy.varInt0 = 100; soundEnemyHitLimit.playSoundIfOk(); } //REMOVE BULLET currentBullet.active = false; currentBullet.visible = false; } } //update particles particleList.animationTick(gameTime); base.Update(gameTime); }