Keep list of widgets to render
This commit is contained in:
parent
1bfcfd3bf1
commit
9a6ae2c6d9
@ -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;
|
|
||||||
};
|
};
|
@ -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);
|
||||||
|
|
||||||
|
19
src/AMI.cpp
19
src/AMI.cpp
@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
@ -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,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user