Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions include/framework/Button.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ namespace Framework {
};

struct ButtonImages {
// The objects pointed to are managed by smart pointers in GraphicsObjects
Image* unselected = nullptr;
Image* hovered = nullptr;
Image* selected = nullptr;
Expand Down
12 changes: 6 additions & 6 deletions include/framework/GraphicsObjects.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@

namespace Framework {
struct GraphicsObjects {
Graphics* graphics_ptr = nullptr;
Window* window_ptr = nullptr;
Graphics graphics;
Window window;

std::vector<Image*> image_ptrs;
std::vector<Spritesheet*> spritesheet_ptrs;
std::vector<Font*> font_ptrs;
std::vector<BaseTransition*> transition_ptrs;
std::vector<std::unique_ptr<Image>> image_ptrs;
std::vector<Spritesheet> spritesheets;
std::vector<Font> fonts;
std::vector<std::unique_ptr<BaseTransition>> transition_ptrs;

std::vector<Button::ButtonImages> button_image_groups;
};
Expand Down
7 changes: 4 additions & 3 deletions include/framework/Image.hpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#pragma once

#include <string>
#include <memory>

#include "SDL.h"
#include "SDL_image.h"
Expand Down Expand Up @@ -67,9 +68,9 @@ namespace Framework {
uint32_t _h = 0;
};

Image* create_image(Graphics* graphics, std::string path, uint8_t flags = Image::Flags::ALL);
Image* create_image(Graphics* graphics, const vec2& size);
Image* create_image(Graphics* graphics, const vec2& size, const Colour& colour, bool use_alpha = false);
std::unique_ptr<Image> create_image(Graphics* graphics, std::string path, uint8_t flags = Image::Flags::ALL);
std::unique_ptr<Image> create_image(Graphics* graphics, const vec2& size);
std::unique_ptr<Image> create_image(Graphics* graphics, const vec2& size, const Colour& colour, bool use_alpha = false);

namespace SDLUtils {
void SDL_SetRenderTarget(SDL_Renderer* renderer, Image* image);
Expand Down
3 changes: 3 additions & 0 deletions include/game/Constants.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@ namespace GRAPHICS_OBJECTS {
enum IMAGES {
MAIN_SPRITESHEET,
FONT_SPRITESHEET,
STANDARD_BUTTON_UNSELECTED,
STANDARD_BUTTON_HOVERED,
STANDARD_BUTTON_SELECTED,

TOTAL_IMAGES
};
Expand Down
62 changes: 10 additions & 52 deletions src/framework/BaseGame.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ namespace Framework {
// Clear the screen
/*SDLUtils::SDL_SetRenderDrawColor(renderer, COLOURS::BLACK);
SDL_RenderClear(renderer);*/
graphics_objects.graphics_ptr->fill(COLOURS::BLACK);
graphics_objects.graphics.fill(COLOURS::BLACK);

// Render game
render();
Expand Down Expand Up @@ -134,18 +134,18 @@ namespace Framework {
return false;
}

// Add Graphics and Window pointers
graphics_objects.graphics_ptr = new Graphics();
graphics_objects.graphics_ptr->set_renderer(renderer);
// Create Graphics and Window instances
graphics_objects.graphics = Graphics();
graphics_objects.graphics.set_renderer(renderer);

graphics_objects.window_ptr = new Window();
graphics_objects.window_ptr->set_window(window);
graphics_objects.window = Window();
graphics_objects.window.set_window(window);

// Set up graphics_objects vectors:
graphics_objects.image_ptrs = std::vector<Framework::Image*>(GRAPHICS_OBJECTS::IMAGES::TOTAL_IMAGES);
graphics_objects.spritesheet_ptrs = std::vector<Framework::Spritesheet*>(GRAPHICS_OBJECTS::SPRITESHEETS::TOTAL_SPRITESHEETS);
graphics_objects.font_ptrs = std::vector<Framework::Font*>(GRAPHICS_OBJECTS::FONTS::TOTAL_FONTS);
graphics_objects.transition_ptrs = std::vector<Framework::BaseTransition*>(GRAPHICS_OBJECTS::TRANSITIONS::TOTAL_TRANSITIONS);
graphics_objects.image_ptrs = std::vector<std::unique_ptr<Framework::Image>>(GRAPHICS_OBJECTS::IMAGES::TOTAL_IMAGES);
graphics_objects.spritesheets = std::vector<Framework::Spritesheet>(GRAPHICS_OBJECTS::SPRITESHEETS::TOTAL_SPRITESHEETS);
graphics_objects.fonts = std::vector<Framework::Font>(GRAPHICS_OBJECTS::FONTS::TOTAL_FONTS);
graphics_objects.transition_ptrs = std::vector<std::unique_ptr<Framework::BaseTransition>>(GRAPHICS_OBJECTS::TRANSITIONS::TOTAL_TRANSITIONS);
graphics_objects.button_image_groups = std::vector<Framework::Button::ButtonImages>(GRAPHICS_OBJECTS::BUTTON_IMAGE_GROUPS::TOTAL_BUTTON_IMAGE_GROUPS);

// Load game data
Expand All @@ -158,48 +158,6 @@ namespace Framework {
// Clear game data
clear_data();

// Clear graphics objects stuff

// Clear spritesheets
for (Framework::Spritesheet* spritesheet_ptr : graphics_objects.spritesheet_ptrs) {
if (!spritesheet_ptr) continue;
delete spritesheet_ptr;
}
graphics_objects.spritesheet_ptrs.clear();

// Clear images
for (Framework::Image* image_ptr : graphics_objects.image_ptrs) {
if (!image_ptr) continue;
delete image_ptr;
}
graphics_objects.image_ptrs.clear();

// Clear fonts
for (Framework::Font* font_ptr : graphics_objects.font_ptrs) {
if (!font_ptr) continue;
delete font_ptr;
}
graphics_objects.font_ptrs.clear();

// Clear transitions
for (Framework::BaseTransition* transition_ptr : graphics_objects.transition_ptrs) {
if (!transition_ptr) continue;
delete transition_ptr;
}
graphics_objects.transition_ptrs.clear();

// Clear button images
for (const Framework::Button::ButtonImages& button_images : graphics_objects.button_image_groups) {
delete button_images.unselected;
delete button_images.hovered;
delete button_images.selected;
}

// Clear graphics and window objects
delete graphics_objects.graphics_ptr;
delete graphics_objects.window_ptr;


// Destroy renderer and window
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
Expand Down
6 changes: 2 additions & 4 deletions src/framework/BaseStage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,7 @@ namespace Framework {
}

void BaseStage::clear_transition() {
if (transition != nullptr) {
delete transition;
transition = nullptr;
}
// Do not actually delete transition because this raw pointer is non-owning
transition = nullptr;
}
}
24 changes: 12 additions & 12 deletions src/framework/Image.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -299,29 +299,29 @@ namespace Framework {
}


Image* create_image(Graphics* graphics, std::string path, uint8_t flags) {
Image* image_ptr = new Image(graphics);
std::unique_ptr<Image> create_image(Graphics* graphics, std::string path, uint8_t flags) {
std::unique_ptr<Image> image_ptr = std::make_unique<Image>(graphics);
image_ptr->load(path, flags);
return image_ptr;
return std::move(image_ptr);
}
Image* create_image(Graphics* graphics, const vec2& size) {
Image* image_ptr = new Image(graphics);
std::unique_ptr<Image> create_image(Graphics* graphics, const vec2& size) {
std::unique_ptr<Image> image_ptr = std::make_unique<Image>(graphics);
image_ptr->load(size);
return image_ptr;
return std::move(image_ptr);
}
Image* create_image(Graphics* graphics, const vec2& size, const Colour& colour, bool use_alpha) {
Image* image_ptr = create_image(graphics, size);
std::unique_ptr<Image> create_image(Graphics* graphics, const vec2& size, const Colour& colour, bool use_alpha) {
std::unique_ptr<Image> image_ptr = create_image(graphics, size);
// Fill image white first
SDLUtils::SDL_RenderFillRectToImage(graphics->get_renderer(), image_ptr, Rect(VEC_NULL, size), Colour(0xFF, 0xFF, 0xFF));
SDLUtils::SDL_RenderFillRectToImage(graphics->get_renderer(), image_ptr.get(), Rect(VEC_NULL, size), Colour(0xFF, 0xFF, 0xFF));

if (use_alpha) {
SDLUtils::SDL_RenderFillImageWithAlphaMod(graphics->get_renderer(), image_ptr, colour);
SDLUtils::SDL_RenderFillImageWithAlphaMod(graphics->get_renderer(), image_ptr.get(), colour);
}
else {
SDLUtils::SDL_RenderFillImageWithoutAlphaMod(graphics->get_renderer(), image_ptr, colour);
SDLUtils::SDL_RenderFillImageWithoutAlphaMod(graphics->get_renderer(), image_ptr.get(), colour);
}

return image_ptr;
return std::move(image_ptr);
}


Expand Down
31 changes: 17 additions & 14 deletions src/game/Game.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,44 +20,47 @@ void Game::load_data() {
std::string IMAGES_PATH = BASE_PATH + PATHS::IMAGES::LOCATION;

// Load spritesheet image
graphics_objects.image_ptrs[GRAPHICS_OBJECTS::IMAGES::MAIN_SPRITESHEET] = Framework::create_image(graphics_objects.graphics_ptr, IMAGES_PATH + PATHS::IMAGES::MAIN_SPRITESHEET, Framework::Image::Flags::SDL_TEXTURE);
graphics_objects.image_ptrs[GRAPHICS_OBJECTS::IMAGES::MAIN_SPRITESHEET] = Framework::create_image(&graphics_objects.graphics, IMAGES_PATH + PATHS::IMAGES::MAIN_SPRITESHEET, Framework::Image::Flags::SDL_TEXTURE);

// Load font image
// Note: we *need* to add SURFACE flags because Font uses the surface bit
graphics_objects.image_ptrs[GRAPHICS_OBJECTS::IMAGES::FONT_SPRITESHEET] = Framework::create_image(graphics_objects.graphics_ptr, IMAGES_PATH + PATHS::IMAGES::FONT_SPRITESHEET, Framework::Image::Flags::SDL_TEXTURE | Framework::Image::Flags::SDL_SURFACE);
graphics_objects.image_ptrs[GRAPHICS_OBJECTS::IMAGES::FONT_SPRITESHEET] = Framework::create_image(&graphics_objects.graphics, IMAGES_PATH + PATHS::IMAGES::FONT_SPRITESHEET, Framework::Image::Flags::SDL_TEXTURE | Framework::Image::Flags::SDL_SURFACE);

// Create spritesheet from spritesheet image
graphics_objects.spritesheet_ptrs[GRAPHICS_OBJECTS::SPRITESHEETS::MAIN_SPRITESHEET] = new Framework::Spritesheet(graphics_objects.image_ptrs[GRAPHICS_OBJECTS::IMAGES::MAIN_SPRITESHEET], SPRITES::SIZE, SPRITES::SCALE);
graphics_objects.spritesheets[GRAPHICS_OBJECTS::SPRITESHEETS::MAIN_SPRITESHEET] = Framework::Spritesheet(graphics_objects.image_ptrs[GRAPHICS_OBJECTS::IMAGES::MAIN_SPRITESHEET].get(), SPRITES::SIZE, SPRITES::SCALE);

// Create spritesheet from font image
graphics_objects.spritesheet_ptrs[GRAPHICS_OBJECTS::SPRITESHEETS::FONT_SPRITESHEET] = new Framework::Spritesheet(graphics_objects.image_ptrs[GRAPHICS_OBJECTS::IMAGES::FONT_SPRITESHEET], FONTS::SIZE::MAIN_FONT, FONTS::SCALE::MAIN_FONT);
graphics_objects.spritesheets[GRAPHICS_OBJECTS::SPRITESHEETS::FONT_SPRITESHEET] = Framework::Spritesheet(graphics_objects.image_ptrs[GRAPHICS_OBJECTS::IMAGES::FONT_SPRITESHEET].get(), FONTS::SIZE::MAIN_FONT, FONTS::SCALE::MAIN_FONT);

// Create font from font spritesheet
graphics_objects.font_ptrs[GRAPHICS_OBJECTS::FONTS::MAIN_FONT] = new Framework::Font(graphics_objects.spritesheet_ptrs[GRAPHICS_OBJECTS::SPRITESHEETS::FONT_SPRITESHEET], FONTS::SPACING::MAIN_FONT);
graphics_objects.fonts[GRAPHICS_OBJECTS::FONTS::MAIN_FONT] = Framework::Font(&graphics_objects.spritesheets[GRAPHICS_OBJECTS::SPRITESHEETS::FONT_SPRITESHEET], FONTS::SPACING::MAIN_FONT);


// Load button images
graphics_objects.image_ptrs[GRAPHICS_OBJECTS::IMAGES::STANDARD_BUTTON_UNSELECTED] = Framework::create_image(&graphics_objects.graphics, Framework::Vec(64, 16));
graphics_objects.image_ptrs[GRAPHICS_OBJECTS::IMAGES::STANDARD_BUTTON_HOVERED] = Framework::create_image(&graphics_objects.graphics, Framework::Vec(64, 16));
graphics_objects.image_ptrs[GRAPHICS_OBJECTS::IMAGES::STANDARD_BUTTON_SELECTED] = Framework::create_image(&graphics_objects.graphics, Framework::Vec(64, 16));

// TODO: also could change into a single function to create an image from a spritesheet
graphics_objects.button_image_groups[GRAPHICS_OBJECTS::BUTTON_IMAGE_GROUPS::STANDARD] = {
.unselected = Framework::create_image(graphics_objects.graphics_ptr, Framework::Vec(64, 16)),
.hovered = Framework::create_image(graphics_objects.graphics_ptr, Framework::Vec(64, 16)),
.selected = Framework::create_image(graphics_objects.graphics_ptr, Framework::Vec(64, 16)),
.unselected = graphics_objects.image_ptrs[GRAPHICS_OBJECTS::IMAGES::STANDARD_BUTTON_UNSELECTED].get(),
.hovered = graphics_objects.image_ptrs[GRAPHICS_OBJECTS::IMAGES::STANDARD_BUTTON_HOVERED].get(),
.selected = graphics_objects.image_ptrs[GRAPHICS_OBJECTS::IMAGES::STANDARD_BUTTON_SELECTED].get(),
};

graphics_objects.button_image_groups[GRAPHICS_OBJECTS::BUTTON_IMAGE_GROUPS::STANDARD].unselected->set_render_target();
graphics_objects.spritesheet_ptrs[GRAPHICS_OBJECTS::SPRITESHEETS::MAIN_SPRITESHEET]->rect(Framework::Rect(0, 16, 64, 16), Framework::Vec(0, 0), 1.0f);
graphics_objects.spritesheets[GRAPHICS_OBJECTS::SPRITESHEETS::MAIN_SPRITESHEET].rect(Framework::Rect(0, 16, 64, 16), Framework::Vec(0, 0), 1.0f);

graphics_objects.button_image_groups[GRAPHICS_OBJECTS::BUTTON_IMAGE_GROUPS::STANDARD].hovered->set_render_target();
graphics_objects.spritesheet_ptrs[GRAPHICS_OBJECTS::SPRITESHEETS::MAIN_SPRITESHEET]->rect(Framework::Rect(0, 32, 64, 16), Framework::Vec(0, 0), 1.0f);
graphics_objects.spritesheets[GRAPHICS_OBJECTS::SPRITESHEETS::MAIN_SPRITESHEET].rect(Framework::Rect(0, 32, 64, 16), Framework::Vec(0, 0), 1.0f);

graphics_objects.button_image_groups[GRAPHICS_OBJECTS::BUTTON_IMAGE_GROUPS::STANDARD].selected->set_render_target();
graphics_objects.spritesheet_ptrs[GRAPHICS_OBJECTS::SPRITESHEETS::MAIN_SPRITESHEET]->rect(Framework::Rect(0, 48, 64, 16), Framework::Vec(0, 0), 1.0f);
graphics_objects.spritesheets[GRAPHICS_OBJECTS::SPRITESHEETS::MAIN_SPRITESHEET].rect(Framework::Rect(0, 48, 64, 16), Framework::Vec(0, 0), 1.0f);

Framework::SDLUtils::SDL_UnsetRenderTarget(graphics_objects.graphics_ptr->get_renderer());
Framework::SDLUtils::SDL_UnsetRenderTarget(graphics_objects.graphics.get_renderer());


// Create transitions
graphics_objects.transition_ptrs[GRAPHICS_OBJECTS::TRANSITIONS::FADE_TRANSITION] = new Framework::FadeTransition(graphics_objects.graphics_ptr, COLOURS::BLACK, TRANSITIONS::FADE_TIME);
graphics_objects.transition_ptrs[GRAPHICS_OBJECTS::TRANSITIONS::FADE_TRANSITION] = std::make_unique<Framework::FadeTransition>(&graphics_objects.graphics, COLOURS::BLACK, TRANSITIONS::FADE_TIME);
}

void Game::clear_data() {
Expand Down
14 changes: 7 additions & 7 deletions src/game/GameStages.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

void GameStage::start() {
// Set transition
set_transition(graphics_objects->transition_ptrs[GRAPHICS_OBJECTS::TRANSITIONS::FADE_TRANSITION]);
set_transition(graphics_objects->transition_ptrs[GRAPHICS_OBJECTS::TRANSITIONS::FADE_TRANSITION].get());

// Start transition
transition->open();
Expand All @@ -21,9 +21,9 @@ bool GameStage::update(float dt) {
}

void GameStage::render() {
graphics_objects->graphics_ptr->fill(COLOURS::BLUE);
graphics_objects->graphics.fill(COLOURS::BLUE);

graphics_objects->spritesheet_ptrs[GRAPHICS_OBJECTS::SPRITESHEETS::MAIN_SPRITESHEET]->sprite(0, Framework::Vec(128, 64));
graphics_objects->spritesheets[GRAPHICS_OBJECTS::SPRITESHEETS::MAIN_SPRITESHEET].sprite(0, Framework::Vec(128, 64));

transition->render();
}
Expand All @@ -41,18 +41,18 @@ void PausedStage::start() {
buttons.emplace_back(
Framework::Rect(WINDOW::SIZE_HALF - Framework::Vec(128, 32), Framework::Vec(256, 64)),
graphics_objects->button_image_groups[GRAPHICS_OBJECTS::BUTTON_IMAGE_GROUPS::STANDARD],
Framework::Text(graphics_objects->font_ptrs[GRAPHICS_OBJECTS::FONTS::MAIN_FONT], "Resume", COLOURS::BLACK, 4.0f),
Framework::Text(&graphics_objects->fonts[GRAPHICS_OBJECTS::FONTS::MAIN_FONT], "Resume", COLOURS::BLACK, 4.0f),
BUTTONS::PAUSED::RESUME
);
buttons.emplace_back(
Framework::Rect(WINDOW::SIZE_HALF - Framework::Vec(128, -64), Framework::Vec(256, 64)),
graphics_objects->button_image_groups[GRAPHICS_OBJECTS::BUTTON_IMAGE_GROUPS::STANDARD],
Framework::Text(graphics_objects->font_ptrs[GRAPHICS_OBJECTS::FONTS::MAIN_FONT], "Exit", COLOURS::BLACK, 4.0f),
Framework::Text(&graphics_objects->fonts[GRAPHICS_OBJECTS::FONTS::MAIN_FONT], "Exit", COLOURS::BLACK, 4.0f),
BUTTONS::PAUSED::EXIT
);

// Set transition
set_transition(graphics_objects->transition_ptrs[GRAPHICS_OBJECTS::TRANSITIONS::FADE_TRANSITION]);
set_transition(graphics_objects->transition_ptrs[GRAPHICS_OBJECTS::TRANSITIONS::FADE_TRANSITION].get());
}

bool PausedStage::update(float dt) {
Expand Down Expand Up @@ -90,7 +90,7 @@ void PausedStage::render() {
_background_stage->render();

// Render pause menu
graphics_objects->graphics_ptr->fill(COLOURS::BLACK, 0x7f);
graphics_objects->graphics.fill(COLOURS::BLACK, 0x7f);

for (const Framework::Button& button : buttons) {
button.render();
Expand Down
26 changes: 13 additions & 13 deletions src/game/MenuStages.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
// IntroStage

void IntroStage::start() {
intro_text = Framework::Text(graphics_objects->font_ptrs[GRAPHICS_OBJECTS::FONTS::MAIN_FONT], "Some intro text", COLOURS::BLACK);
intro_text = Framework::Text(&graphics_objects->fonts[GRAPHICS_OBJECTS::FONTS::MAIN_FONT], "Some intro text", COLOURS::BLACK);

intro_timer.stop();

// Start transition
set_transition(graphics_objects->transition_ptrs[GRAPHICS_OBJECTS::TRANSITIONS::FADE_TRANSITION]);
set_transition(graphics_objects->transition_ptrs[GRAPHICS_OBJECTS::TRANSITIONS::FADE_TRANSITION].get());
transition->open();
}

Expand Down Expand Up @@ -36,7 +36,7 @@ bool IntroStage::update(float dt) {
}

void IntroStage::render() {
graphics_objects->graphics_ptr->fill(COLOURS::BLUE);
graphics_objects->graphics.fill(COLOURS::BLUE);

// Display some intro text in the centre of the display
intro_text.render(WINDOW::SIZE_HALF);
Expand All @@ -52,18 +52,18 @@ void TitleStage::start() {
buttons.emplace_back(
Framework::Rect(WINDOW::SIZE_HALF - Framework::Vec(128, 32), Framework::Vec(256, 64)),
graphics_objects->button_image_groups[GRAPHICS_OBJECTS::BUTTON_IMAGE_GROUPS::STANDARD],
Framework::Text(graphics_objects->font_ptrs[GRAPHICS_OBJECTS::FONTS::MAIN_FONT], "Play", COLOURS::BLACK, 4.0f),
Framework::Text(&graphics_objects->fonts[GRAPHICS_OBJECTS::FONTS::MAIN_FONT], "Play", COLOURS::BLACK, 4.0f),
BUTTONS::TITLE::PLAY
);
buttons.emplace_back(
Framework::Rect(WINDOW::SIZE_HALF - Framework::Vec(128, -64), Framework::Vec(256, 64)),
graphics_objects->button_image_groups[GRAPHICS_OBJECTS::BUTTON_IMAGE_GROUPS::STANDARD],
Framework::Text(graphics_objects->font_ptrs[GRAPHICS_OBJECTS::FONTS::MAIN_FONT], "Quit", COLOURS::BLACK, 4.0f),
Framework::Text(&graphics_objects->fonts[GRAPHICS_OBJECTS::FONTS::MAIN_FONT], "Quit", COLOURS::BLACK, 4.0f),
BUTTONS::TITLE::QUIT
);

// Set transition
set_transition(graphics_objects->transition_ptrs[GRAPHICS_OBJECTS::TRANSITIONS::FADE_TRANSITION]);
set_transition(graphics_objects->transition_ptrs[GRAPHICS_OBJECTS::TRANSITIONS::FADE_TRANSITION].get());

// Start transition
transition->open();
Expand Down Expand Up @@ -107,17 +107,17 @@ bool TitleStage::update(float dt) {
}

void TitleStage::render() {
graphics_objects->graphics_ptr->fill(COLOURS::BLUE);
graphics_objects->graphics.fill(COLOURS::BLUE);

graphics_objects->graphics_ptr->render_circle(Framework::Vec(20, 20), 10, COLOURS::BLACK);
graphics_objects->graphics_ptr->render_rect(Framework::Rect(40, 20, 10, 30), COLOURS::BLACK);
graphics_objects->graphics.render_circle(Framework::Vec(20, 20), 10, COLOURS::BLACK);
graphics_objects->graphics.render_rect(Framework::Rect(40, 20, 10, 30), COLOURS::BLACK);

graphics_objects->spritesheet_ptrs[GRAPHICS_OBJECTS::SPRITESHEETS::MAIN_SPRITESHEET]->sprite(0, Framework::Vec(64, 48));
graphics_objects->spritesheets[GRAPHICS_OBJECTS::SPRITESHEETS::MAIN_SPRITESHEET].sprite(0, Framework::Vec(64, 48));

graphics_objects->spritesheet_ptrs[GRAPHICS_OBJECTS::SPRITESHEETS::MAIN_SPRITESHEET]->sprite(2, Framework::Vec(16, 48));
graphics_objects->spritesheet_ptrs[GRAPHICS_OBJECTS::SPRITESHEETS::MAIN_SPRITESHEET]->sprite(2, Framework::Vec(32, 48), Framework::SpriteTransform::ROTATE_90_ACW);
graphics_objects->spritesheets[GRAPHICS_OBJECTS::SPRITESHEETS::MAIN_SPRITESHEET].sprite(2, Framework::Vec(16, 48));
graphics_objects->spritesheets[GRAPHICS_OBJECTS::SPRITESHEETS::MAIN_SPRITESHEET].sprite(2, Framework::Vec(32, 48), Framework::SpriteTransform::ROTATE_90_ACW);

graphics_objects->spritesheet_ptrs[GRAPHICS_OBJECTS::SPRITESHEETS::MAIN_SPRITESHEET]->sprite(1, Framework::Vec(96, 48), SPRITES::SCALE, _timer.time() * 90);
graphics_objects->spritesheets[GRAPHICS_OBJECTS::SPRITESHEETS::MAIN_SPRITESHEET].sprite(1, Framework::Vec(96, 48), SPRITES::SCALE, _timer.time() * 90);

for (const Framework::Button& button : buttons) {
button.render();
Expand Down
Loading