Map

Map.cpp

Committer:
JackCripps
Date:
2017-05-04
Revision:
4:96dca7f7f651
Parent:
2:2729d17161f4

File content as of revision 4:96dca7f7f651:

#include "Map.h"

Map::Map()
:
// Instantiate the bitmap tile 
_tileImageBitmap(tileImage, 4, 4),
// Instantiate the bitmap level
_levelBackground(levelBackground, 48, 84),
_cols(21),
_rows(12)
    
{}

Map::~Map()
{
     
}

void Map::draw(N5110& lcd)
{
    // Draw the background first so the tilemap renders on top
    _levelBackground.render(lcd, 0, 0);
    
    // Calculate the screen pixel coordinate to draw the correct tile at
    for (int c = 0; c < _cols; c++)
    {
        for (int r = 0; r < _rows; r++)
        {
            if (this->getTile(c, r) != 0)
            {
                //printf("c %d\tr %d\n", c, r);
                // If the tile value is not 0, render a tile at the location
                _tileImageBitmap.render(lcd, c * tileSize, r * tileSize);
            }
        }
    }
}

int Map::getTile(int col, int row)
{
    // Return value of cell at the specifed col and row using row-major indexing
    // as from Alex Valavanis Bitmap library
    return tileMap[row * _cols + col];
}

/*
AABB Map::getAabbAtIndex(int col, int row)
{
    // Create an AABB struct
    AABB localAABB;
    
    // Store values of the AABB calculated from passed in col and row and the 
    // tiles size
    localAABB.min.x = col * tileSize;
    localAABB.max.x = (col * tileSize) + tileSize;
    localAABB.min.y = row * tileSize;
    localAABB.max.y = (row * tileSize) + tileSize;
    
    return localAABB;
}
*/

int Map::getMaxCol()
{
    return _cols;
}

int Map::getMaxRow()
{
    return _rows;
}

int Map::getTileSize()
{
    return tileSize;   
}