Skip to content

Commit 68330dd

Browse files
committed
chore: Change GraphicsObjects to use Spritesheet and Font instances
Use instances instead of pointers. Where pointers are needed, the address of these objects can be given. This removes a small amount of resource handling code in quit().
1 parent 9ef78e2 commit 68330dd

File tree

5 files changed

+20
-36
lines changed

5 files changed

+20
-36
lines changed

include/framework/GraphicsObjects.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ namespace Framework {
1717
Window window;
1818

1919
std::vector<Image*> image_ptrs;
20-
std::vector<Spritesheet*> spritesheet_ptrs;
21-
std::vector<Font*> font_ptrs;
20+
std::vector<Spritesheet> spritesheets;
21+
std::vector<Font> fonts;
2222
std::vector<BaseTransition*> transition_ptrs;
2323

2424
std::vector<Button::ButtonImages> button_image_groups;

src/framework/BaseGame.cpp

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,8 @@ namespace Framework {
143143

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

@@ -160,27 +160,13 @@ namespace Framework {
160160

161161
// Clear graphics objects stuff
162162

163-
// Clear spritesheets
164-
for (Framework::Spritesheet* spritesheet_ptr : graphics_objects.spritesheet_ptrs) {
165-
if (!spritesheet_ptr) continue;
166-
delete spritesheet_ptr;
167-
}
168-
graphics_objects.spritesheet_ptrs.clear();
169-
170163
// Clear images
171164
for (Framework::Image* image_ptr : graphics_objects.image_ptrs) {
172165
if (!image_ptr) continue;
173166
delete image_ptr;
174167
}
175168
graphics_objects.image_ptrs.clear();
176169

177-
// Clear fonts
178-
for (Framework::Font* font_ptr : graphics_objects.font_ptrs) {
179-
if (!font_ptr) continue;
180-
delete font_ptr;
181-
}
182-
graphics_objects.font_ptrs.clear();
183-
184170
// Clear transitions
185171
for (Framework::BaseTransition* transition_ptr : graphics_objects.transition_ptrs) {
186172
if (!transition_ptr) continue;
@@ -195,8 +181,6 @@ namespace Framework {
195181
delete button_images.hovered;
196182
delete button_images.selected;
197183
}
198-
199-
200184

201185
// Destroy renderer and window
202186
SDL_DestroyRenderer(renderer);

src/game/Game.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,13 @@ void Game::load_data() {
2727
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);
2828

2929
// Create spritesheet from spritesheet image
30-
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);
30+
graphics_objects.spritesheets[GRAPHICS_OBJECTS::SPRITESHEETS::MAIN_SPRITESHEET] = Framework::Spritesheet(graphics_objects.image_ptrs[GRAPHICS_OBJECTS::IMAGES::MAIN_SPRITESHEET], SPRITES::SIZE, SPRITES::SCALE);
3131

3232
// Create spritesheet from font image
33-
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);
33+
graphics_objects.spritesheets[GRAPHICS_OBJECTS::SPRITESHEETS::FONT_SPRITESHEET] = Framework::Spritesheet(graphics_objects.image_ptrs[GRAPHICS_OBJECTS::IMAGES::FONT_SPRITESHEET], FONTS::SIZE::MAIN_FONT, FONTS::SCALE::MAIN_FONT);
3434

3535
// Create font from font spritesheet
36-
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);
36+
graphics_objects.fonts[GRAPHICS_OBJECTS::FONTS::MAIN_FONT] = Framework::Font(&graphics_objects.spritesheets[GRAPHICS_OBJECTS::SPRITESHEETS::FONT_SPRITESHEET], FONTS::SPACING::MAIN_FONT);
3737

3838

3939
// Load button images
@@ -45,13 +45,13 @@ void Game::load_data() {
4545
};
4646

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

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

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

5656
Framework::SDLUtils::SDL_UnsetRenderTarget(graphics_objects.graphics.get_renderer());
5757

src/game/GameStages.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ bool GameStage::update(float dt) {
2323
void GameStage::render() {
2424
graphics_objects->graphics.fill(COLOURS::BLUE);
2525

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

2828
transition->render();
2929
}
@@ -41,13 +41,13 @@ void PausedStage::start() {
4141
buttons.emplace_back(
4242
Framework::Rect(WINDOW::SIZE_HALF - Framework::Vec(128, 32), Framework::Vec(256, 64)),
4343
graphics_objects->button_image_groups[GRAPHICS_OBJECTS::BUTTON_IMAGE_GROUPS::STANDARD],
44-
Framework::Text(graphics_objects->font_ptrs[GRAPHICS_OBJECTS::FONTS::MAIN_FONT], "Resume", COLOURS::BLACK, 4.0f),
44+
Framework::Text(&graphics_objects->fonts[GRAPHICS_OBJECTS::FONTS::MAIN_FONT], "Resume", COLOURS::BLACK, 4.0f),
4545
BUTTONS::PAUSED::RESUME
4646
);
4747
buttons.emplace_back(
4848
Framework::Rect(WINDOW::SIZE_HALF - Framework::Vec(128, -64), Framework::Vec(256, 64)),
4949
graphics_objects->button_image_groups[GRAPHICS_OBJECTS::BUTTON_IMAGE_GROUPS::STANDARD],
50-
Framework::Text(graphics_objects->font_ptrs[GRAPHICS_OBJECTS::FONTS::MAIN_FONT], "Exit", COLOURS::BLACK, 4.0f),
50+
Framework::Text(&graphics_objects->fonts[GRAPHICS_OBJECTS::FONTS::MAIN_FONT], "Exit", COLOURS::BLACK, 4.0f),
5151
BUTTONS::PAUSED::EXIT
5252
);
5353

src/game/MenuStages.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// IntroStage
44

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

88
intro_timer.stop();
99

@@ -52,13 +52,13 @@ void TitleStage::start() {
5252
buttons.emplace_back(
5353
Framework::Rect(WINDOW::SIZE_HALF - Framework::Vec(128, 32), Framework::Vec(256, 64)),
5454
graphics_objects->button_image_groups[GRAPHICS_OBJECTS::BUTTON_IMAGE_GROUPS::STANDARD],
55-
Framework::Text(graphics_objects->font_ptrs[GRAPHICS_OBJECTS::FONTS::MAIN_FONT], "Play", COLOURS::BLACK, 4.0f),
55+
Framework::Text(&graphics_objects->fonts[GRAPHICS_OBJECTS::FONTS::MAIN_FONT], "Play", COLOURS::BLACK, 4.0f),
5656
BUTTONS::TITLE::PLAY
5757
);
5858
buttons.emplace_back(
5959
Framework::Rect(WINDOW::SIZE_HALF - Framework::Vec(128, -64), Framework::Vec(256, 64)),
6060
graphics_objects->button_image_groups[GRAPHICS_OBJECTS::BUTTON_IMAGE_GROUPS::STANDARD],
61-
Framework::Text(graphics_objects->font_ptrs[GRAPHICS_OBJECTS::FONTS::MAIN_FONT], "Quit", COLOURS::BLACK, 4.0f),
61+
Framework::Text(&graphics_objects->fonts[GRAPHICS_OBJECTS::FONTS::MAIN_FONT], "Quit", COLOURS::BLACK, 4.0f),
6262
BUTTONS::TITLE::QUIT
6363
);
6464

@@ -112,12 +112,12 @@ void TitleStage::render() {
112112
graphics_objects->graphics.render_circle(Framework::Vec(20, 20), 10, COLOURS::BLACK);
113113
graphics_objects->graphics.render_rect(Framework::Rect(40, 20, 10, 30), COLOURS::BLACK);
114114

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

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

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

122122
for (const Framework::Button& button : buttons) {
123123
button.render();

0 commit comments

Comments
 (0)