Beispiel #1
0
        /// <summary>
        /// Draw the level tiles
        /// </summary>
        /// <param name="level"></param>
        public void DrawLevel(Level level, Player player)
        {
            // Calculate a new camera scale to fit the level to as much as possible of the screen
            // using the viewport height and level height as reference
            float newCameraScaleX = ((float)m_graphicsDevice.Viewport.Width) / ((float)(((float)level.Width + 1) * m_tileWidth * m_camera.Scale.X));
            float newCameraScaleY = ((float)m_graphicsDevice.Viewport.Height) / ((float)(((float)level.Height + 1) * m_tileHeight * m_camera.Scale.Y));
            float smallestScale = newCameraScaleX < newCameraScaleY ? newCameraScaleX : newCameraScaleY;
            smallestScale = smallestScale > 1 ? 1 : smallestScale;
            m_camera.SetScale(smallestScale, smallestScale);
            // Translate camera to center on the level
            float cameraX = (m_graphicsDevice.Viewport.Width / 2) - ((level.Width * m_tileWidth * m_camera.Scale.X) / 2);
            float cameraY = (m_graphicsDevice.Viewport.Height / 2) - ((level.Height * m_tileHeight * m_camera.Scale.Y) / 2);
            m_camera.Translate(cameraX, cameraY);

            // Bind sprite batcher
            m_spriteBatch.Begin( );

            // Draw statical tiles
            List<Tile> staticTiles = level.StaticTiles;

            foreach (Tile tile in staticTiles)
            {
                DrawTile(level, tile);
            }

            // Draw moveable tiles
            List<Tile> moveableTiles = level.MoveableTiles;
            foreach (Tile tile in moveableTiles)
            {
                DrawTile(level, tile);
            }

            // Draw player tile
            DrawPlayer(level, player);

            // Unbind the sprite batcher
            m_spriteBatch.End( );

            // Reset camera scale
            m_camera.SetScale(1, 1);
        }
Beispiel #2
0
 public GameModel(Level level, IEventListener listener)
 {
     // Load our dummy level we use for debugging.
     m_level = level;
     // Create player object from player tile
     m_player = new Player(m_level.PlayerTile);
     // Set current time as start time
     m_startTime = DateTime.Now;
     // Save event listener
     m_listener = listener;
 }