コード例 #1
0
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            _spriteBatch = new SpriteBatch(GraphicsDevice);

            _camera = new Camera2D(GraphicsDevice);

            // TODO: use this.Content to load your game content here
            _player = new Player(Content, new Vector2(400, 430));
            _player.Load("Animations.xml");

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

            Debug.Assert(GraphicsDevice != null, "GraphicsDevice != null");
// ReSharper disable once PossibleLossOfFraction
            _camera.MinPosition = new Vector2(x: GraphicsDevice.Viewport.Width / 2, y: 0);
            //Camera.MaxPosition = new Vector2(map.Dimensions.X - GraphicsDevice.Viewport.Width / 2, map.Dimensions.Y / 2 - 35);
            _camera.MaxPosition = new Vector2(5000, 200);

            _camera.TrackingBody = _player;

            _levelProvider = new LevelProvider(Content, _player, _camera);
            _levelProvider.LoadMaps(GraphicsDevice, "hills.tmx");

            _hud = new HUD(Content, _player);
            _hud.Initialize();
            _hud.SetMapWidth(1000);
        }
コード例 #2
0
        public void Draw(SpriteBatch batch, Camera2D camera)
        {
            if (RecentlyDamaged && IsAlive)
                if (_flashTimer.ElapsedMilliseconds > 100)
                {
                    batch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, null, null, null, _flashWhite, camera.View);
                    _flashTimer.Restart();
                }
                else
                    batch.Begin(SpriteSortMode.Deferred, null, null, null, null, null, camera.View);
            else
                batch.Begin(SpriteSortMode.Deferred, null, null, null, null, null, camera.View);

            Draw(batch);

            batch.End();
        }
コード例 #3
0
        public void DrawTiles(SpriteBatch batch, Camera2D camera)
        {
            Device.SetRenderTarget(BackBuffer);
            Device.Clear(new Color(208, 244, 247));
            SpriteBatch.Begin();

            Vector2 LastTilePositon = Vector2.Zero;

            var tiles = GetViewableTiles(camera);

            for (int i = 1; i < 6; i++)
            {
                var layer = from t in tiles
                            where t.LayerNumber == i
                            select t;

                foreach (Tile t in layer)
                {
                    var position = camera.ConvertWorldToScreen(t.Position);
                    t.Draw(SpriteBatch, position);
                }
            }
        
            SpriteBatch.End();
            Device.SetRenderTarget(null);

            batch.Draw(BackBuffer, Vector2.Zero, null, Color.White, 0f, Vector2.Zero, 1f, SpriteEffects.None, 1f);
        }
コード例 #4
0
        private List<Tile> GetViewableTiles(Camera2D camera)
        {
            Rectangle viewableArea = new Rectangle((int)camera.Position.X - (int)(ViewportDimensions.X / 2),
                                                (int)camera.Position.Y - (int)(ViewportDimensions.Y / 2),
                                                (int)ViewportDimensions.X, (int)ViewportDimensions.Y);
            viewableArea.Inflate(200, 100);

            var viewableTiles = from tile in Tiles
                                where tile.AABB.Intersects(viewableArea)
                                select tile;

            return viewableTiles.ToList();
        }
コード例 #5
0
 public LevelProvider(ContentManager manager, Player p, Camera2D cam)
 {
     _contentManager = manager;
     _player = p;
     _camera = cam;
 }