diff options
Diffstat (limited to 'src/renderer.cpp')
-rw-r--r-- | src/renderer.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/renderer.cpp b/src/renderer.cpp index 314dd4f..81e6b9c 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp | |||
@@ -500,6 +500,32 @@ void Renderer::render(Game& game) { | |||
500 | SDL_SetRenderDrawBlendMode(ren_.get(), SDL_BLENDMODE_NONE); | 500 | SDL_SetRenderDrawBlendMode(ren_.get(), SDL_BLENDMODE_NONE); |
501 | SDL_SetRenderDrawColor(ren_.get(), 0, 0, 0, 255); | 501 | SDL_SetRenderDrawColor(ren_.get(), 0, 0, 0, 255); |
502 | SDL_RenderFillRect(ren_.get(), nullptr); | 502 | SDL_RenderFillRect(ren_.get(), nullptr); |
503 | |||
504 | const int lineHeight = 16; | ||
505 | int totalHeight = menus.getMenu().size() * lineHeight; | ||
506 | |||
507 | int index = 0; | ||
508 | for (const MenuItem& menuItem : menus.getMenu()) { | ||
509 | switch (menuItem.type) { | ||
510 | case MenuType::Command: { | ||
511 | MessageCache output; | ||
512 | renderMessageLine(output, menuItem.text, game); | ||
513 | |||
514 | SDL_Rect dest { | ||
515 | (CANVAS_WIDTH - output.charIndexToWidth.back()) / 2, | ||
516 | (CANVAS_HEIGHT - totalHeight) / 2 + lineHeight * index, | ||
517 | MESSAGE_TEXT_WIDTH, | ||
518 | game.getFont().getCharacterHeight() | ||
519 | }; | ||
520 | |||
521 | SDL_SetRenderTarget(ren_.get(), cameraTex.get()); | ||
522 | SDL_RenderCopy(ren_.get(), output.renderedTex.get(), nullptr, &dest); | ||
523 | |||
524 | break; | ||
525 | } | ||
526 | } | ||
527 | index++; | ||
528 | } | ||
503 | } else if (menus.getPauseAnimationProgress() > 0.0) { | 529 | } else if (menus.getPauseAnimationProgress() > 0.0) { |
504 | SDL_SetRenderTarget(ren_.get(), cameraTex.get()); | 530 | SDL_SetRenderTarget(ren_.get(), cameraTex.get()); |
505 | SDL_SetRenderDrawBlendMode(ren_.get(), SDL_BLENDMODE_NONE); | 531 | SDL_SetRenderDrawBlendMode(ren_.get(), SDL_BLENDMODE_NONE); |