From 8393d50851acd18eecc117ae1bdcf9bdfef12422 Mon Sep 17 00:00:00 2001 From: Tamir Atias Date: Thu, 12 Apr 2012 21:54:28 +0300 Subject: [PATCH] [Fix] Now only visible region of the map is drawn. --- src/Level/Layer.cpp | 16 ++++++++-------- src/Main/Game.cpp | 1 - 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/Level/Layer.cpp b/src/Level/Layer.cpp index d424b3a..43ec8ed 100644 --- a/src/Level/Layer.cpp +++ b/src/Level/Layer.cpp @@ -22,16 +22,16 @@ void Layer::Update(float dt) { } void Layer::Draw(int xOffset, int yOffset) { - int xOffsetTiles = xOffset / _width; - int yOffsetTiles = yOffset / _height; + int xOffsetTiles = xOffset / _tileWidth; + int yOffsetTiles = yOffset / _tileHeight; - int minX = std::max(0, xOffsetTiles - 1); - int maxX = std::min(_width, xOffsetTiles + (WINDOW_WIDTH / (int)_tileWidth) + 1); - int minY = std::max(0, yOffsetTiles - 1); - int maxY = std::min(_height, yOffsetTiles + (WINDOW_HEIGHT / (int)_tileHeight) + 1); + int minX = std::max(xOffsetTiles, 0); + int maxX = std::min(_width, xOffsetTiles + WINDOW_WIDTH / (int)_tileWidth + 2); + int minY = std::max(yOffsetTiles, 0); + int maxY = std::min(_height, yOffsetTiles + WINDOW_HEIGHT / (int)_tileHeight + 2); - for(int x = 0; x < _width; x++) { - for(int y = 0; y < _height; y++) { + for(int x = minX; x < maxX; x++) { + for(int y = minY; y < maxY; y++) { MapTile& tile = GetTile(x, y); if(tile.tileset != NULL) { tile.tileset->DrawTile(tile.id, Vec2((float)x * _tileWidth, (float)y * _tileHeight)); diff --git a/src/Main/Game.cpp b/src/Main/Game.cpp index ac62002..55d429c 100644 --- a/src/Main/Game.cpp +++ b/src/Main/Game.cpp @@ -81,7 +81,6 @@ void Game::Render(void) { void Game::Shutdown(void) { Debug::logger->message("\n ----- Cleaning Engine -----"); delete _player; - delete _NPC; delete _level; }