diff --git a/include/AMI.h b/include/AMI.h index 08e0ecf..0694df2 100644 --- a/include/AMI.h +++ b/include/AMI.h @@ -5,6 +5,9 @@ #include +#include +#include + constexpr const char* FT_LOGO_PATH = "resources/Fasttube_Logo-white.bmp"; constexpr const char* AVENIR_FONT_PATH = "resources/Avenir-Book.ttf"; @@ -17,6 +20,5 @@ public: private: TTF_Font* avenir; - ImageWidget ft_logo; - TextWidget choose; + std::vector> widgets; }; \ No newline at end of file diff --git a/include/widgets.h b/include/widgets.h index 0bc8384..2ce6d01 100644 --- a/include/widgets.h +++ b/include/widgets.h @@ -9,6 +9,7 @@ class Widget { public: Widget(SDL_Renderer* renderer, SDL_Rect dest_rect); + virtual ~Widget(); virtual void update_rect(SDL_Rect new_rect); diff --git a/src/AMI.cpp b/src/AMI.cpp index 07e7ea1..9d3d822 100644 --- a/src/AMI.cpp +++ b/src/AMI.cpp @@ -3,16 +3,19 @@ #include "util.h" AMI::AMI(SDL_Renderer* renderer) - : View{renderer}, avenir{util::load_font(AVENIR_FONT_PATH, 28)}, - ft_logo{renderer, {.x = 182, .y = 0, .w = 116, .h = 40}, FT_LOGO_PATH}, - choose{renderer, - {.x = 0, .y = 45, .w = 480, .h = 40}, - avenir, - "Choose a Mission:"} {} + : View{renderer}, avenir{util::load_font(AVENIR_FONT_PATH, 28)} { + SDL_Rect logo_rect = {.x = 182, .y = 0, .w = 116, .h = 40}; + widgets.emplace_back( + std::make_unique(renderer, logo_rect, FT_LOGO_PATH)); + SDL_Rect choose_rect = {.x = 0, .y = 45, .w = 480, .h = 40}; + widgets.emplace_back(std::make_unique( + renderer, choose_rect, avenir, "Choose a Mission:")); +} void AMI::draw() { SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0xFF); SDL_RenderClear(renderer); - ft_logo.draw(); - choose.draw(); + for (const auto& widget : widgets) { + widget->draw(); + } } \ No newline at end of file diff --git a/src/widgets.cpp b/src/widgets.cpp index e87c62a..e47b4a2 100644 --- a/src/widgets.cpp +++ b/src/widgets.cpp @@ -10,6 +10,8 @@ Widget::Widget(SDL_Renderer* renderer, SDL_Rect rect) : renderer{renderer}, dest_rect{rect} {} +Widget::~Widget() {} + void Widget::update_rect(SDL_Rect new_rect) { dest_rect = new_rect; } TextureWidget::TextureWidget(SDL_Renderer* renderer, SDL_Rect dest_rect,