예제 #1
0
파일: Game1.cs 프로젝트: Adhesion/ld22
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);

            // load sprites and such
            playerSprite       = Content.Load <Texture2D>("playership");
            playerBulletSprite = Content.Load <Texture2D>("playerbullet");

            starTex    = new Texture2D[3];
            starTex[0] = Content.Load <Texture2D>("star1");
            starTex[1] = Content.Load <Texture2D>("star2");
            starTex[2] = Content.Load <Texture2D>("star3");

            backTex    = new Texture2D[4];
            backTex[0] = Content.Load <Texture2D>("background1");
            backTex[1] = Content.Load <Texture2D>("background2");
            backTex[2] = Content.Load <Texture2D>("background3");
            backTex[3] = Content.Load <Texture2D>("background4");

            earthTex = Content.Load <Texture2D>("earth");

            enemySprites    = new Texture2D[4];
            enemySprites[0] = Content.Load <Texture2D>("enemy1");
            enemySprites[1] = Content.Load <Texture2D>("enemy2");
            enemySprites[2] = Content.Load <Texture2D>("enemy3");
            enemySprites[3] = Content.Load <Texture2D>("boss");

            eggSprite       = Content.Load <Texture2D>("egg");
            hollowEggSprite = Content.Load <Texture2D>("hollowegg");
            portalSprite    = Content.Load <Texture2D>("portal");

            HPBoxSprite = Content.Load <Texture2D>("hpbox");

            arrowSprite     = Content.Load <Texture2D>("arrow");
            sparkSprite     = Content.Load <Texture2D>("spark");
            explosionSprite = Content.Load <Texture2D>("explosion");

            levelManager = new LevelManager(starTex, backTex, earthTex);

            player = new Player(playerSprite, new Vector2(0.0f, 0.0f),
                                new Vector2(0.0f, 0.0f), 200, levelManager);
            characterManager = new CharacterManager(player);
            inputHandler     = new InputHandler(player);

            player.setCharacterManager(characterManager);
            levelManager.setCharacterManager(characterManager);

            characterManager.setBulletSprite(playerBulletSprite);
            characterManager.setEnemySprites(enemySprites);
            characterManager.setEggSprite(eggSprite);
            characterManager.setPortalSprite(portalSprite);
            characterManager.setArrowSprite(arrowSprite);
            characterManager.setExplosionSprite(explosionSprite);
            characterManager.setSparkSprite(sparkSprite);
            characterManager.setLevelManager(levelManager);

            cam = new Camera(GraphicsDevice, new Vector2(0.0f, 0.0f), player, levelManager);
            characterManager.setCam(cam);

            soundManager = new SoundManager(Content);
            levelManager.setSoundManager(soundManager);
            characterManager.setSoundManager(soundManager);

            font = Content.Load <SpriteFont>("font");

            intro    = new string[6];
            intro[0] = "This is ground control... your circuit's dead, there's something wrong...\n\n\n";
            intro[1] = "On a routine mission, you stumble into a strange portal and find yourself";
            intro[2] = "-alone-";
            intro[3] = "in a parallel dimension.";
            intro[4] = "Search for the space eggs to survive and find your way home.";
            intro[5] = "Good luck !";

            end    = new string[4];
            end[0] = "In your absence, the earth was destroyed.";
            end[1] = "You are now";
            end[2] = "-alone-";
            end[3] = "\n\nTHE END";

            gameOver = false;

            levelManager.initLevel(0);
            Game1.points = 0;
        }
예제 #2
0
파일: Game1.cs 프로젝트: Adhesion/ld22
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);

            // load sprites and such
            playerSprite = Content.Load<Texture2D>("playership");
            playerBulletSprite = Content.Load<Texture2D>("playerbullet");

            starTex = new Texture2D[3];
            starTex[0] = Content.Load<Texture2D>("star1");
            starTex[1] = Content.Load<Texture2D>("star2");
            starTex[2] = Content.Load<Texture2D>("star3");

            backTex = new Texture2D[4];
            backTex[0] = Content.Load<Texture2D>("background1");
            backTex[1] = Content.Load<Texture2D>("background2");
            backTex[2] = Content.Load<Texture2D>("background3");
            backTex[3] = Content.Load<Texture2D>("background4");

            earthTex = Content.Load<Texture2D>("earth");

            enemySprites = new Texture2D[4];
            enemySprites[0] = Content.Load<Texture2D>("enemy1");
            enemySprites[1] = Content.Load<Texture2D>("enemy2");
            enemySprites[2] = Content.Load<Texture2D>("enemy3");
            enemySprites[3] = Content.Load<Texture2D>("boss");

            eggSprite = Content.Load<Texture2D>("egg");
            hollowEggSprite = Content.Load<Texture2D>("hollowegg");
            portalSprite = Content.Load<Texture2D>("portal");

            HPBoxSprite = Content.Load<Texture2D>("hpbox");

            arrowSprite = Content.Load<Texture2D>("arrow");
            sparkSprite = Content.Load<Texture2D>("spark");
            explosionSprite = Content.Load<Texture2D>("explosion");

            levelManager = new LevelManager(starTex, backTex, earthTex);

            player = new Player(playerSprite, new Vector2(0.0f, 0.0f),
                new Vector2(0.0f, 0.0f), 200, levelManager);
            characterManager = new CharacterManager(player);
            inputHandler = new InputHandler(player);

            player.setCharacterManager(characterManager);
            levelManager.setCharacterManager(characterManager);

            characterManager.setBulletSprite(playerBulletSprite);
            characterManager.setEnemySprites(enemySprites);
            characterManager.setEggSprite(eggSprite);
            characterManager.setPortalSprite(portalSprite);
            characterManager.setArrowSprite(arrowSprite);
            characterManager.setExplosionSprite(explosionSprite);
            characterManager.setSparkSprite(sparkSprite);
            characterManager.setLevelManager(levelManager);

            cam = new Camera(GraphicsDevice, new Vector2(0.0f, 0.0f), player, levelManager);
            characterManager.setCam(cam);

            soundManager = new SoundManager(Content);
            levelManager.setSoundManager(soundManager);
            characterManager.setSoundManager(soundManager);

            font = Content.Load<SpriteFont>("font");

            intro = new string[6];
            intro[0] = "This is ground control... your circuit's dead, there's something wrong...\n\n\n";
            intro[1] = "On a routine mission, you stumble into a strange portal and find yourself";
            intro[2] = "-alone-";
            intro[3] = "in a parallel dimension.";
            intro[4] = "Search for the space eggs to survive and find your way home.";
            intro[5] = "Good luck !";

            end = new string[4];
            end[0] = "In your absence, the earth was destroyed.";
            end[1] = "You are now";
            end[2] = "-alone-";
            end[3] = "\n\nTHE END";

            gameOver = false;

            levelManager.initLevel(0);
            Game1.points = 0;
        }
예제 #3
0
        public void update(GameTime gameTime)
        {
            player.update(gameTime);
            foreach (Character enemy in enemies)
            {
                enemy.update(gameTime);
                if (!enemy.isAlive())
                {
                    removedEnemies.Add(enemy);
                    if (enemy.getType() == 3)
                    {
                        addExplosion(enemy.getPos(), enemy.getVel() / 5.0f, 4.0f, Color.OrangeRed);
                        soundManager.bossDeath();
                        Game1.points += 1000;
                    }
                    else
                    {
                        addExplosion(enemy.getPos(), enemy.getVel() / 5.0f, 0.7f, Color.White);
                        soundManager.enemyDeath();
                        Game1.points += 250 + (enemy.getType() * 50);
                    }
                }
            }
            foreach (Bullet bullet in enemyBullets)
            {
                bullet.update(gameTime);
                if (!bullet.isAlive())
                {
                    removedEnemyBullets.Add(bullet);
                }
            }
            foreach (Bullet bullet in playerBullets)
            {
                bullet.update(gameTime);
                if (!bullet.isAlive())
                {
                    removedPlayerBullets.Add(bullet);
                }
            }
            foreach (Character egg in eggs)
            {
                egg.update(gameTime);
                egg.rotate(-0.001f);
                if (!egg.isAlive())
                {
                    removedEggs.Add(egg);
                }
            }
            foreach (Bullet eff in effects)
            {
                eff.update(gameTime);
                if (!eff.isAlive())
                {
                    removedEffects.Add(eff);
                }
            }

            // check player shots
            foreach (Bullet bullet in playerBullets)
            {
                foreach (Character enemy in enemies)
                {
                    if (bullet.isAlive() &&
                        bullet.getLifetime() > bullet.getLifetimeThreshold() / 2 &&
                        bullet.getBoundingBox().Intersects(enemy.getBoundingBox()))
                    {
                        // check stay, so we only check bombs every bombCounter frames
                        if (!bullet.isStay() || bombCounter == 0)
                        {
                            enemy.hit(bullet.getDamage());
                            addSparks(enemy.getPos(), enemy.getVel());
                            if (!bullet.isStay())
                            {
                                bullet.kill();
                            }
                            soundManager.enemyHit();
                        }
                    }
                }
            }

            // check enemy shots
            if (player.isAlive())
            {
                foreach (Bullet bullet in enemyBullets)
                {
                    if (bullet.isAlive() &&
                        bullet.getLifetime() > bullet.getLifetimeThreshold() / 2 &&
                        bullet.getBoundingBox().Intersects(player.getBoundingBox()))
                    {
                        player.hit(bullet.getDamage());
                        addSparks(player.getPos(), player.getVel());
                        bullet.kill();
                        soundManager.playerHit();
                    }
                }
            }

            // check eggs
            foreach (Character egg in eggs)
            {
                if (egg.isAlive() && egg.getBoundingBox().Intersects(player.getBoundingBox()))
                {
                    egg.kill();
                    player.incHP(40);
                    player.incEggs();
                    soundManager.egg();
                    Game1.points += 250;
                }
            }

            foreach (Bullet b in removedPlayerBullets)
            {
                playerBullets.Remove(b);
            }
            foreach (Bullet b in removedEnemyBullets)
            {
                enemyBullets.Remove(b);
            }
            foreach (Character b in removedEnemies)
            {
                enemies.Remove(b);
            }
            foreach (Character e in removedEggs)
            {
                eggs.Remove(e);
            }
            foreach (Bullet e in removedEffects)
            {
                effects.Remove(e);
            }

            // death handling
            if (!player.isAlive())
            {
                // after the wait
                if (deathTimer == 0)
                {
                    player.revive();
                    deathTimer = deathTimerMax;
                    player.setPos(new Vector2(0.0f, 0.0f));
                    cam.setPos(new Vector2(0.0f, 0.0f));
                    if (player.getLives() < 0)
                    {
                        levelManager.initLevel(0);
                        player.setLives(3);
                    }
                }
                // meaning, just died
                else
                {
                    if (deathTimer == deathTimerMax)
                    {
                        addExplosion(player.getPos(), player.getVel() / 5.0f, 0.5f, Color.Yellow);
                        soundManager.playerDeath();
                        player.decLives();
                        if (player.getLives() < 0)
                        {
                            Game1.instance.setGameOver(true);
                        }
                    }
                    deathTimer--;
                }
            }
        }