Ejemplo n.º 1
0
        public override void Draw(GameTime gameTime)
        {
            //call back all the services
            SpriteBatch     spriteBatch = Game.Services.GetService <SpriteBatch>();
            TRender         trender     = Game.Services.GetService <TRender>();
            Camera          Cam         = Game.Services.GetService <Camera>();
            PlayerComponent player      = Game.Services.GetService <PlayerComponent>();
            SpriteFont      font        = Game.Services.GetService <SpriteFont>();

            //draw onto the camera
            spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, null, null, null, null, Cam.CurrentCamTranslation);
            foreach (PortalComponent portal in trender.Portal)
            {
                if (portal.Visible)
                {
                    if (player.Collectables == 5)
                    {
                        spriteBatch.Draw(Texture, boundingRect, new Rectangle(trender.OpenPortal.TLocX, trender.OpenPortal.TLocY, 128, 128), Color.White);
                        PortalOpen = true;
                    }
                    else
                    {
                        spriteBatch.Draw(Texture, boundingRect, imageRect, Color.White);
                        PortalOpen = false;
                    }
                }
            }
            //inform player of how many gems are left
            spriteBatch.DrawString(font, "You need " + GemsLeft.ToString() + " more Portal Gems to open this door!", new Vector2(Position.X, Position.Y - 40), Color.Black);
            spriteBatch.DrawString(font, "Portal Gems : 0" + player.Collectables.ToString(), new Vector2(Position.X, Position.Y - 60), Color.Black);
            spriteBatch.End();

            base.Draw(gameTime);
        }
        public void Collision()
        {
            // Check for collisions with player
            PlayerComponent player  = Game.Services.GetService <PlayerComponent>();
            TRender         trender = Game.Services.GetService <TRender>();

            foreach (CollectableComponent collectable in trender.Collectables)
            {
                if (boundingRect.Intersects(player.Bounds))
                {
                    //Play Sound Effect when colliding with Gem
                    GemSound.Play(0.1f, -0.5f, 0.0f);
                    //Make invisible
                    Enabled  = false;
                    Visible  = false;
                    collided = true;
                }
            }
            if (collided == true)
            {
                //update the players collectables to keep count
                player.Collectables += 1;
                collided             = false;
            }
        }
 public PlayerComponent(Game game) : base(game)
 {
     GamePad.GetState(index);
     game.Components.Add(this);
     tiles = Game.Services.GetService <TRender>();
     //make sure the player draws over the background and tile map
     DrawOrder = 1;
 }
        public void Collision()
        {
            // Check for collisions with player
            PlayerComponent player  = Game.Services.GetService <PlayerComponent>();
            TRender         trender = Game.Services.GetService <TRender>();

            foreach (EnemyComponent enemies in trender.enemies)
            {
                if (player.Bounds.Intersects(boundingRect))
                {
                    EnemyOof.Play();
                    player.ResetPlayer();
                    Visible = false;
                    Enabled = false;
                }
            }
        }
        public override void Draw(GameTime gameTime)
        {
            SpriteBatch spriteBatch = Game.Services.GetService <SpriteBatch>();
            TRender     trender     = Game.Services.GetService <TRender>();
            Camera      Cam         = Game.Services.GetService <Camera>();

            foreach (CollectableComponent collectable in trender.Collectables)
            {
                spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, null, null, null, null, Cam.CurrentCamTranslation);
                if (Visible)
                {
                    spriteBatch.Draw(Texture, boundingRect, imageRect, Color.White);
                }
                spriteBatch.End();
            }

            base.Draw(gameTime);
        }
        public ServiceManager(Game game) : base(game)
        {
            spriteBatch = new SpriteBatch(game.GraphicsDevice);
            tiles       = new TRender(game);
            game.Services.AddService <TRender>(tiles);
            font = game.Content.Load <SpriteFont>("Font");

            //Switch for Level States
            switch (tiles._current)
            {
            case TRender.LevelStates.LevelOne:
                camera = new Camera(Vector2.Zero,
                                    new Vector2(tiles.tileMap.GetLength(1) * tiles.tsWidth,
                                                tiles.tileMap.GetLength(0) * tiles.tsHeight),
                                    tiles.GraphicsDevice.Viewport);
                break;

            case TRender.LevelStates.LevelTwo:
                camera = new Camera(Vector2.Zero,
                                    new Vector2(tiles.tileMap.GetLength(1) * tiles.tsWidth,
                                                tiles.tileMap.GetLength(0) * tiles.tsHeight),
                                    tiles.GraphicsDevice.Viewport);
                break;

            case TRender.LevelStates.LevelThree:
                camera = new Camera(Vector2.Zero,
                                    new Vector2(tiles.tileMap.GetLength(1) * tiles.tsWidth,
                                                tiles.tileMap.GetLength(0) * tiles.tsHeight),
                                    tiles.GraphicsDevice.Viewport);
                break;

            case TRender.LevelStates.LevelFour:
                camera = new Camera(Vector2.Zero,
                                    new Vector2(tiles.tileMap.GetLength(1) * tiles.tsWidth,
                                                tiles.tileMap.GetLength(0) * tiles.tsHeight),
                                    tiles.GraphicsDevice.Viewport);
                break;
            }

            player = new PlayerComponent(game);
            AddToServices();
        }
        public void ResetPlayer()
        {
            TRender tile = Game.Services.GetService <TRender>();

            switch (tiles._current)
            {
            case TRender.LevelStates.LevelOne:
                Sprite.position = new Vector2(100, 860);
                break;

            case TRender.LevelStates.LevelTwo:
                Sprite.position = new Vector2(120, 300);
                break;

            case TRender.LevelStates.LevelThree:
                Sprite.position = new Vector2(2200, 50);
                break;

            case TRender.LevelStates.LevelFour:
                Sprite.position = new Vector2(50, 1000);
                break;
            }
        }
Ejemplo n.º 8
0
        public void Collision()
        {
            // Check for collisions with player
            PlayerComponent player  = Game.Services.GetService <PlayerComponent>();
            TRender         trender = Game.Services.GetService <TRender>();

            switch (trender._current)
            {
            case TRender.LevelStates.LevelOne:
                //check if the player has all gems to pass through the portal
                if (player.Collectables == 5)
                {
                    //check if the player intersects with the open portal
                    if (boundingRect.Intersects(player.Bounds) && PortalOpen)
                    {
                        PortalWhoosh.Play();
                        Visible             = false;
                        Enabled             = false;
                        player.Collectables = 0;

                        //change the level state
                        trender._current = TRender.LevelStates.LevelTwo;
                        trender.tileManager.ActiveLayer = trender.tileManager.GetLayer("LevelTwo");
                        trender.hasLevelChanged         = true;

                        //clear all the variable lists
                        trender.Collectables.Clear();
                        trender.Portal.Clear();
                        player.ResetPlayer();
                        trender.enemies.Clear();

                        // Creates a set of impassable tiles
                        trender.collisons.Clear();     // Important for removing colliders from screen
                        trender.tileManager.ActiveLayer.makeImpassable(trender.impassableTiles);
                        trender.SetupCollison();
                        trender.SetupComponents();
                    }
                }

                break;

            case TRender.LevelStates.LevelTwo:

                if (player.Collectables == 5)
                {
                    if (boundingRect.Intersects(player.Bounds) && PortalOpen)
                    {
                        Visible             = false;
                        Enabled             = false;
                        player.Collectables = 0;

                        trender._current = TRender.LevelStates.LevelThree;
                        trender.tileManager.ActiveLayer = trender.tileManager.GetLayer("LevelThree");
                        trender.hasLevelChanged         = true;

                        trender.collisons.Clear();
                        trender.Collectables.Clear();
                        trender.Portal.Clear();
                        trender.enemies.Clear();
                        player.ResetPlayer();

                        trender.tileManager.ActiveLayer.makeImpassable(trender.impassableTiles);
                        trender.SetupCollison();
                        trender.SetupComponents();
                    }
                }

                break;

            case TRender.LevelStates.LevelThree:

                if (player.Collectables == 5)
                {
                    if (boundingRect.Intersects(player.Bounds) && PortalOpen)
                    {
                        Visible             = false;
                        Enabled             = false;
                        player.Collectables = 0;

                        trender._current = TRender.LevelStates.LevelFour;
                        trender.tileManager.ActiveLayer = trender.tileManager.GetLayer("LevelFour");
                        trender.hasLevelChanged         = true;

                        trender.collisons.Clear();
                        trender.Collectables.Clear();

                        player.ResetPlayer();

                        trender.Portal.Clear();
                        trender.tileManager.ActiveLayer.makeImpassable(trender.impassableTiles);
                        trender.SetupCollison();
                        trender.SetupComponents();
                    }
                }

                break;

            case TRender.LevelStates.LevelFour:

                if (player.Collectables == 5)
                {
                    if (boundingRect.Intersects(player.Bounds) && PortalOpen)
                    {
                        Visible             = false;
                        Enabled             = false;
                        player.Collectables = 0;

                        trender._current = TRender.LevelStates.LevelOne;
                        trender.tileManager.ActiveLayer = trender.tileManager.GetLayer("LevelOne");
                        trender.hasLevelChanged         = true;

                        trender.collisons.Clear();
                        trender.Collectables.Clear();
                        player.ResetPlayer();

                        trender.Portal.Clear();
                        trender.tileManager.ActiveLayer.makeImpassable(trender.impassableTiles);
                        trender.SetupCollison();
                        trender.SetupComponents();
                    }
                }

                break;
            }
        }
Ejemplo n.º 9
0
 public PlayerComponent(Game game) : base(game)
 {
     GamePad.GetState(index);
     game.Components.Add(this);
     tiles = new TRender(game);
 }