diff options
Diffstat (limited to 'core/src/cpp/map.cpp')
| -rw-r--r-- | core/src/cpp/map.cpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/core/src/cpp/map.cpp b/core/src/cpp/map.cpp new file mode 100644 index 0000000..06548e3 --- /dev/null +++ b/core/src/cpp/map.cpp @@ -0,0 +1,43 @@ +#include "map.h" + +#include <iostream> + +Map::Map(SDL_Renderer* renderer) + : renderer{renderer} + , textures{renderer, "ground.bmp", 128} +{ + // +1 for the null terminated string + assert(sizeof(level) == size.w * size.h + 1); + + size2d<int> window_size{0, 0}; + + if (!SDL_GetRendererOutputSize(renderer, &window_size.w, &window_size.h)) + { + tile_size = window_size / size; + } + else + { + std::cerr << "Failed to get renderer size: " << SDL_GetError() + << std::endl; + } +} + +void Map::draw() +{ + for (int j = 0; j < size.h; j++) + { + for (int i = 0; i < size.w; i++) + { + if (is_empty(i, j)) + { + continue; + } + + SDL_Rect dst = + {tile_size.w * i, tile_size.h * j, tile_size.w, tile_size.h}; + SDL_Rect src = textures.rect(get(i, j)); + + SDL_RenderCopy(renderer, textures.texture, &src, &dst); + } + } +} |
