[Fix] Now only visible region of the map is drawn.

This commit is contained in:
Tamir Atias 2012-04-12 21:54:28 +03:00
parent ac0b5785a3
commit 8393d50851
2 changed files with 8 additions and 9 deletions

View File

@ -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));

View File

@ -81,7 +81,6 @@ void Game::Render(void) {
void Game::Shutdown(void) {
Debug::logger->message("\n ----- Cleaning Engine -----");
delete _player;
delete _NPC;
delete _level;
}