Keep list of widgets to render

This commit is contained in:
Jasper Blanckenburg 2022-05-19 21:30:02 +02:00
parent 1bfcfd3bf1
commit 9a6ae2c6d9
4 changed files with 18 additions and 10 deletions

View File

@ -5,6 +5,9 @@
#include <SDL2/SDL.h> #include <SDL2/SDL.h>
#include <memory>
#include <vector>
constexpr const char* FT_LOGO_PATH = "resources/Fasttube_Logo-white.bmp"; constexpr const char* FT_LOGO_PATH = "resources/Fasttube_Logo-white.bmp";
constexpr const char* AVENIR_FONT_PATH = "resources/Avenir-Book.ttf"; constexpr const char* AVENIR_FONT_PATH = "resources/Avenir-Book.ttf";
@ -17,6 +20,5 @@ public:
private: private:
TTF_Font* avenir; TTF_Font* avenir;
ImageWidget ft_logo; std::vector<std::unique_ptr<Widget>> widgets;
TextWidget choose;
}; };

View File

@ -9,6 +9,7 @@
class Widget { class Widget {
public: public:
Widget(SDL_Renderer* renderer, SDL_Rect dest_rect); Widget(SDL_Renderer* renderer, SDL_Rect dest_rect);
virtual ~Widget();
virtual void update_rect(SDL_Rect new_rect); virtual void update_rect(SDL_Rect new_rect);

View File

@ -3,16 +3,19 @@
#include "util.h" #include "util.h"
AMI::AMI(SDL_Renderer* renderer) AMI::AMI(SDL_Renderer* renderer)
: View{renderer}, avenir{util::load_font(AVENIR_FONT_PATH, 28)}, : View{renderer}, avenir{util::load_font(AVENIR_FONT_PATH, 28)} {
ft_logo{renderer, {.x = 182, .y = 0, .w = 116, .h = 40}, FT_LOGO_PATH}, SDL_Rect logo_rect = {.x = 182, .y = 0, .w = 116, .h = 40};
choose{renderer, widgets.emplace_back(
{.x = 0, .y = 45, .w = 480, .h = 40}, std::make_unique<ImageWidget>(renderer, logo_rect, FT_LOGO_PATH));
avenir, SDL_Rect choose_rect = {.x = 0, .y = 45, .w = 480, .h = 40};
"Choose a Mission:"} {} widgets.emplace_back(std::make_unique<TextWidget>(
renderer, choose_rect, avenir, "Choose a Mission:"));
}
void AMI::draw() { void AMI::draw() {
SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0xFF); SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0xFF);
SDL_RenderClear(renderer); SDL_RenderClear(renderer);
ft_logo.draw(); for (const auto& widget : widgets) {
choose.draw(); widget->draw();
}
} }

View File

@ -10,6 +10,8 @@
Widget::Widget(SDL_Renderer* renderer, SDL_Rect rect) Widget::Widget(SDL_Renderer* renderer, SDL_Rect rect)
: renderer{renderer}, dest_rect{rect} {} : renderer{renderer}, dest_rect{rect} {}
Widget::~Widget() {}
void Widget::update_rect(SDL_Rect new_rect) { dest_rect = new_rect; } void Widget::update_rect(SDL_Rect new_rect) { dest_rect = new_rect; }
TextureWidget::TextureWidget(SDL_Renderer* renderer, SDL_Rect dest_rect, TextureWidget::TextureWidget(SDL_Renderer* renderer, SDL_Rect dest_rect,