#pragma once

#include <vector>
#include <common.h>
#include "entity.h"
#include "cell.h"
#include <render/sprite.h>

namespace game{

class level
{
public:

    level(const vec2u& size);
    ~level();

    void draw();

    void selectCell(const vec2u&, bool);

    bool selectCells(const vec2u&, const vec2u&);

    bool isCellsFree(const vec2u&,const vec2u&);
    bool allocateCells(std::vector<cell*>&,const vec2u&,const vec2u&,entity*);

private:
    render::utils::buffer<render::sprite::vert> _floor;
    void _touchNeighbours(const vec2i&, entity*);

    cell **_map;
    vec2u _size;
    vec2u _hoveredCell;
    vec2u _placeArea;
    bool _freeSpace;
};

}
