summary refs log tree commit diff stats
path: root/src/renderer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/renderer.cpp')
-rw-r--r--src/renderer.cpp103
1 files changed, 0 insertions, 103 deletions
diff --git a/src/renderer.cpp b/src/renderer.cpp deleted file mode 100644 index 286a530..0000000 --- a/src/renderer.cpp +++ /dev/null
@@ -1,103 +0,0 @@
1#include "renderer.h"
2#include "simulation.h"
3#include "consts.h"
4#include "level.h"
5#include "views.h"
6
7Renderer::Renderer()
8{
9 win_ = window_ptr(
10 SDL_CreateWindow(
11 "dispatcher",
12 100,
13 100,
14 WINDOW_SIZE.w(),
15 WINDOW_SIZE.h(),
16 SDL_WINDOW_SHOWN));
17
18 if (!win_)
19 {
20 throw sdl_error();
21 }
22
23 ren_ = renderer_ptr(
24 SDL_CreateRenderer(
25 win_.get(),
26 -1,
27 SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC));
28
29 if (!ren_)
30 {
31 throw sdl_error();
32 }
33
34 SDL_SetRenderDrawBlendMode(ren_.get(), SDL_BLENDMODE_MOD);
35 SDL_SetRenderDrawColor(ren_.get(), 255, 150, 255, 255);
36 SDL_RenderFillRect(ren_.get(), nullptr);
37}
38
39void Renderer::render(const Simulation& sim)
40{
41 texture_ptr canvas(
42 SDL_CreateTexture(
43 ren_.get(),
44 SDL_PIXELFORMAT_RGBA8888,
45 SDL_TEXTUREACCESS_TARGET,
46 WINDOW_SIZE.w(),
47 WINDOW_SIZE.h()));
48
49 if (!canvas)
50 {
51 throw sdl_error();
52 }
53
54 SDL_SetRenderTarget(ren_.get(), nullptr);
55 SDL_SetRenderDrawBlendMode(ren_.get(), SDL_BLENDMODE_NONE);
56 SDL_SetRenderDrawColor(ren_.get(), 255, 150, rand() % 255, 255);
57 SDL_RenderClear(ren_.get());
58
59 const Level& level = sim.getLevel();
60
61 for (size_t y = 0; y < level.getSize().h(); y++)
62 {
63 for (size_t x = 0; x < level.getSize().w(); x++)
64 {
65 int val = 255 - level.at(x, y) * 10;
66
67 SDL_SetRenderDrawColor(ren_.get(), val, val, val, 255);
68
69 SDL_Rect rect {
70 static_cast<int>(x * TILE_SIZE.w()),
71 static_cast<int>(y * TILE_SIZE.h()),
72 TILE_SIZE.w(),
73 TILE_SIZE.h()
74 };
75
76 SDL_RenderFillRect(ren_.get(), &rect);
77 }
78 }
79
80 constexpr Layer renderOrder[] = { Layer::track, Layer::object };
81
82 ranges::for_each(
83 ranges::view::for_each(
84 renderOrder,
85 [&] (Layer layer) {
86 return sim.entityRange() | views::isOnLayer(layer);
87 }),
88 [&] (const Entity& entity) {
89 SDL_SetRenderDrawColor(ren_.get(), entity.colorVal, entity.colorVal, 65, 255);
90
91 SDL_Rect rect {
92 static_cast<int>(entity.pos.x()),
93 static_cast<int>(entity.pos.y()),
94 static_cast<int>(entity.size.w()),
95 static_cast<int>(entity.size.h())
96 };
97
98 SDL_RenderFillRect(ren_.get(), &rect);
99 });
100
101 //SDL_RenderCopy(ren_.get(), canvas.get(), nullptr, nullptr);
102 SDL_RenderPresent(ren_.get());
103}