#pragma once #include #include #include #include #include #include "point.hpp" #include "matrix.hpp" #include "config.hpp" typedef std::vector TileRow; typedef std::vector TileDisplay; class TileMap { public: Config $config; size_t $width; size_t $height; matrix::Matrix $tile_ids; TileDisplay $display; TileMap(size_t width, size_t height); // disable copying TileMap(TileMap &map) = delete; size_t width() { return $width; } size_t height() { return $height; } void load(matrix::Matrix &walls); const std::string &at(size_t x, size_t y); void dump(int show_x=-1, int show_y=-1); bool INVARIANT(); };