diff options
| author | Star Rauchenberger <fefferburbia@gmail.com> | 2021-03-13 12:24:05 -0500 |
|---|---|---|
| committer | Star Rauchenberger <fefferburbia@gmail.com> | 2021-03-13 15:34:50 -0500 |
| commit | fce37403bbc29521b2b5bd983291b3730f8ad7b4 (patch) | |
| tree | c7bdf0fa62f6d67f85b97a7cda746da31470def2 /src/renderer.cpp | |
| parent | c6b5e936ff9869d8a3de9ea41db784a4cb46a818 (diff) | |
| download | tanetane-fce37403bbc29521b2b5bd983291b3730f8ad7b4.tar.gz tanetane-fce37403bbc29521b2b5bd983291b3730f8ad7b4.tar.bz2 tanetane-fce37403bbc29521b2b5bd983291b3730f8ad7b4.zip | |
Added submenus
#7
Diffstat (limited to 'src/renderer.cpp')
| -rw-r--r-- | src/renderer.cpp | 26 |
1 files changed, 19 insertions, 7 deletions
| diff --git a/src/renderer.cpp b/src/renderer.cpp index fc16e20..f7644ca 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp | |||
| @@ -3,6 +3,7 @@ | |||
| 3 | #include "consts.h" | 3 | #include "consts.h" |
| 4 | #include "game.h" | 4 | #include "game.h" |
| 5 | #include "map.h" | 5 | #include "map.h" |
| 6 | #include "menu.h" | ||
| 6 | #include "transform_system.h" | 7 | #include "transform_system.h" |
| 7 | #include "camera_system.h" | 8 | #include "camera_system.h" |
| 8 | #include "message_system.h" | 9 | #include "message_system.h" |
| @@ -142,11 +143,22 @@ void Renderer::render(Game& game) { | |||
| 142 | } | 143 | } |
| 143 | 144 | ||
| 144 | if (menus.getPauseAnimationProgress() > 0.0) { | 145 | if (menus.getPauseAnimationProgress() > 0.0) { |
| 145 | renderMenu(game); | 146 | renderMenu(game, menus.getMenu()); |
| 146 | 147 | ||
| 147 | SDL_SetRenderTarget(ren_.get(), canvas.get()); | 148 | SDL_SetRenderTarget(ren_.get(), canvas.get()); |
| 148 | if (menus.getPauseAnimationProgress() == 1.0) { | 149 | if (menus.getPauseAnimationProgress() == 1.0) { |
| 149 | SDL_RenderCopy(ren_.get(), menuTex_.get(), nullptr, nullptr); | 150 | if (menus.isMenuChanging()) { |
| 151 | SDL_Rect dest { static_cast<int>(CANVAS_WIDTH * (1.0 - menus.getMenuChangeAnimationProgress())), 0, CANVAS_WIDTH, CANVAS_HEIGHT }; | ||
| 152 | SDL_RenderCopy(ren_.get(), menuTex_.get(), nullptr, &dest); | ||
| 153 | |||
| 154 | renderMenu(game, menus.getParentMenu()); | ||
| 155 | |||
| 156 | dest.x -= CANVAS_WIDTH; | ||
| 157 | SDL_SetRenderTarget(ren_.get(), canvas.get()); | ||
| 158 | SDL_RenderCopy(ren_.get(), menuTex_.get(), nullptr, &dest); | ||
| 159 | } else { | ||
| 160 | SDL_RenderCopy(ren_.get(), menuTex_.get(), nullptr, nullptr); | ||
| 161 | } | ||
| 150 | } else { | 162 | } else { |
| 151 | int barHeight = CANVAS_HEIGHT / 2 * menus.getPauseAnimationProgress(); | 163 | int barHeight = CANVAS_HEIGHT / 2 * menus.getPauseAnimationProgress(); |
| 152 | SDL_Rect topHalf { 0, 0, CANVAS_WIDTH, barHeight }; | 164 | SDL_Rect topHalf { 0, 0, CANVAS_WIDTH, barHeight }; |
| @@ -536,7 +548,7 @@ void Renderer::renderGame(Game& game) { | |||
| 536 | } | 548 | } |
| 537 | } | 549 | } |
| 538 | 550 | ||
| 539 | void Renderer::renderMenu(Game& game) { | 551 | void Renderer::renderMenu(Game& game, const Menu& menu) { |
| 540 | auto& menus = game.getSystem<MenuSystem>(); | 552 | auto& menus = game.getSystem<MenuSystem>(); |
| 541 | 553 | ||
| 542 | if (!menuTex_) { | 554 | if (!menuTex_) { |
| @@ -558,11 +570,11 @@ void Renderer::renderMenu(Game& game) { | |||
| 558 | SDL_RenderFillRect(ren_.get(), nullptr); | 570 | SDL_RenderFillRect(ren_.get(), nullptr); |
| 559 | 571 | ||
| 560 | const int lineHeight = 16; | 572 | const int lineHeight = 16; |
| 561 | int totalHeight = menus.getMenu().size() * lineHeight; | 573 | int totalHeight = menu.getItems().size() * lineHeight; |
| 562 | std::vector<vec2i> positions; | 574 | std::vector<vec2i> positions; |
| 563 | 575 | ||
| 564 | int index = 0; | 576 | int index = 0; |
| 565 | for (const MenuItem& menuItem : menus.getMenu()) { | 577 | for (const MenuItem& menuItem : menu.getItems()) { |
| 566 | switch (menuItem.type) { | 578 | switch (menuItem.type) { |
| 567 | case MenuType::Command: { | 579 | case MenuType::Command: { |
| 568 | MessageCache output; | 580 | MessageCache output; |
| @@ -589,8 +601,8 @@ void Renderer::renderMenu(Game& game) { | |||
| 589 | 601 | ||
| 590 | int cursorTexId = loadImageFromFile("../res/feather_pen.png"); | 602 | int cursorTexId = loadImageFromFile("../res/feather_pen.png"); |
| 591 | const SDL_Rect cursorDest { | 603 | const SDL_Rect cursorDest { |
| 592 | positions[menus.getCursorPosition()].x() - 2 - 16 - menus.getCursorBob(), | 604 | positions[menu.getCursorPosition()].x() - 2 - 16 - menus.getCursorBob(), |
| 593 | positions[menus.getCursorPosition()].y() - 8 - menus.getCursorBob(), | 605 | positions[menu.getCursorPosition()].y() - 8 - menus.getCursorBob(), |
| 594 | 16, | 606 | 16, |
| 595 | 16 }; | 607 | 16 }; |
| 596 | SDL_RenderCopy(ren_.get(), textures_.at(cursorTexId).get(), nullptr, &cursorDest); | 608 | SDL_RenderCopy(ren_.get(), textures_.at(cursorTexId).get(), nullptr, &cursorDest); |
