diff options
Diffstat (limited to 'src/level.cpp')
-rw-r--r-- | src/level.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/level.cpp b/src/level.cpp new file mode 100644 index 0000000..b97eb70 --- /dev/null +++ b/src/level.cpp | |||
@@ -0,0 +1,40 @@ | |||
1 | #include "level.h" | ||
2 | |||
3 | texture_ptr Level::render(SDL_Renderer* ren, Layer layer) const | ||
4 | { | ||
5 | texture_ptr canvas( | ||
6 | SDL_CreateTexture( | ||
7 | ren, | ||
8 | SDL_PIXELFORMAT_RGBA8888, | ||
9 | SDL_TEXTUREACCESS_TARGET, | ||
10 | WINDOW_SIZE.w(), | ||
11 | WINDOW_SIZE.h())); | ||
12 | |||
13 | SDL_SetRenderTarget(ren, canvas.get()); | ||
14 | |||
15 | for (size_t y = 0; y < size_.h(); y++) | ||
16 | { | ||
17 | for (size_t x = 0; x < size_.w(); x++) | ||
18 | { | ||
19 | if (layer == Layer::map) | ||
20 | { | ||
21 | int val = 255 - at(x, y) * 10; | ||
22 | |||
23 | SDL_SetRenderDrawColor(ren, val, val, val, 255); | ||
24 | |||
25 | SDL_Rect rect { | ||
26 | static_cast<int>(x * TILE_SIZE.w()), | ||
27 | static_cast<int>(y * TILE_SIZE.h()), | ||
28 | TILE_SIZE.w(), | ||
29 | TILE_SIZE.h() | ||
30 | }; | ||
31 | |||
32 | SDL_RenderFillRect(ren, &rect); | ||
33 | } | ||
34 | } | ||
35 | } | ||
36 | |||
37 | SDL_SetRenderTarget(ren, nullptr); | ||
38 | |||
39 | return canvas; | ||
40 | } | ||