Esempio n. 1
0
        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;
        }
Esempio n. 2
0
        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);
        }