diff options
Diffstat (limited to 'src/renderer.cpp')
-rw-r--r-- | src/renderer.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/renderer.cpp b/src/renderer.cpp index ea8a2ac..314dd4f 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp | |||
@@ -8,6 +8,7 @@ | |||
8 | #include "message_system.h" | 8 | #include "message_system.h" |
9 | #include "effect_system.h" | 9 | #include "effect_system.h" |
10 | #include "input_system.h" | 10 | #include "input_system.h" |
11 | #include "menu_system.h" | ||
11 | 12 | ||
12 | Renderer::Renderer() { | 13 | Renderer::Renderer() { |
13 | win_ = window_ptr( | 14 | win_ = window_ptr( |
@@ -124,6 +125,7 @@ void Renderer::renderSprite(const Sprite& sprite) { | |||
124 | 125 | ||
125 | void Renderer::render(Game& game) { | 126 | void Renderer::render(Game& game) { |
126 | auto& effects = game.getSystem<EffectSystem>(); | 127 | auto& effects = game.getSystem<EffectSystem>(); |
128 | auto& menus = game.getSystem<MenuSystem>(); | ||
127 | 129 | ||
128 | if (cachedMapName_ != game.getMap().getName()) { | 130 | if (cachedMapName_ != game.getMap().getName()) { |
129 | cachedMapName_ = game.getMap().getName(); | 131 | cachedMapName_ = game.getMap().getName(); |
@@ -493,6 +495,24 @@ void Renderer::render(Game& game) { | |||
493 | } | 495 | } |
494 | } | 496 | } |
495 | 497 | ||
498 | if (menus.isMenuOpen()) { | ||
499 | SDL_SetRenderTarget(ren_.get(), cameraTex.get()); | ||
500 | SDL_SetRenderDrawBlendMode(ren_.get(), SDL_BLENDMODE_NONE); | ||
501 | SDL_SetRenderDrawColor(ren_.get(), 0, 0, 0, 255); | ||
502 | SDL_RenderFillRect(ren_.get(), nullptr); | ||
503 | } else if (menus.getPauseAnimationProgress() > 0.0) { | ||
504 | SDL_SetRenderTarget(ren_.get(), cameraTex.get()); | ||
505 | SDL_SetRenderDrawBlendMode(ren_.get(), SDL_BLENDMODE_NONE); | ||
506 | SDL_SetRenderDrawColor(ren_.get(), 0, 0, 0, 255); | ||
507 | |||
508 | int barHeight = CANVAS_HEIGHT / 2 * menus.getPauseAnimationProgress(); | ||
509 | SDL_Rect topHalf { 0, 0, CANVAS_WIDTH, barHeight }; | ||
510 | SDL_Rect bottomHalf { 0, CANVAS_HEIGHT - barHeight, CANVAS_WIDTH, barHeight }; | ||
511 | |||
512 | SDL_RenderFillRect(ren_.get(), &topHalf); | ||
513 | SDL_RenderFillRect(ren_.get(), &bottomHalf); | ||
514 | } | ||
515 | |||
496 | SDL_SetRenderTarget(ren_.get(), nullptr); | 516 | SDL_SetRenderTarget(ren_.get(), nullptr); |
497 | SDL_RenderCopy(ren_.get(), cameraTex.get(), nullptr, nullptr); | 517 | SDL_RenderCopy(ren_.get(), cameraTex.get(), nullptr, nullptr); |
498 | SDL_RenderPresent(ren_.get()); | 518 | SDL_RenderPresent(ren_.get()); |