Added ability to open, close and render fonts

This commit is contained in:
abdelrahman committed 2022-09-25 15:58:54 +01:00
1 parent e3f4f9c94f
commit dbc8c88b89
6 files changed
+111 -9

No files matched your search

+29
View File
@@ -4,6 +4,7 @@
#include "SDL_image.h"
#include "SDL_mixer.h"
#include "SDL_render.h"
#include "SDL_ttf.h"
#include "constants.h"
#include "reusable_ids.h"
#include <stdbool.h>
@@ -20,6 +21,7 @@ typedef struct asset {
SDL_Texture *texture;
Mix_Chunk *chunk;
Mix_Music *music;
TTF_Font *font;
} data;
} Asset;
@@ -217,6 +219,14 @@ AssetID load_asset_to_manager(AssetManager *am, const char *path,
loaded = false;
}
break;
case ASSET_TYPE_FONT:
asset.data.font = TTF_OpenFont(path, 32);
if (!(asset.data.font)) {
loaded = false;
}
break;
default:
loaded = false;
@@ -259,6 +269,9 @@ AssetID load_asset_to_manager(AssetManager *am, const char *path,
case ASSET_TYPE_MUSIC:
asset.data.music = NULL;
break;
case ASSET_TYPE_FONT:
asset.data.font = NULL;
break;
default:
break;
}
@@ -300,6 +313,10 @@ void remove_asset_from_manager(AssetManager *am, AssetID *id_ptr) {
Mix_FreeMusic(am->assets[id].data.music);
am->assets[id].data.music = NULL;
break;
case ASSET_TYPE_FONT:
TTF_CloseFont(am->assets[id].data.font);
am->assets[id].data.font = NULL;
break;
default:
break;
}
@@ -317,6 +334,14 @@ SDL_Texture *get_texture(AssetManager *am, AssetID id) {
return am->assets[id].data.texture;
}
TTF_Font *get_font(AssetManager *am, AssetID id) {
if (id < 0 || am->assets[id].type != ASSET_TYPE_FONT) {
return NULL;
}
return am->assets[id].data.font;
}
Mix_Chunk *get_audio_chunk(AssetManager *am, AssetID id) {
if (id < 0 || am->assets[id].type != ASSET_TYPE_AUDIO_FX) {
return NULL;
@@ -360,6 +385,10 @@ void destroy_asset_manager(AssetManager **am) {
Mix_FreeMusic((*am)->assets[i].data.music);
(*am)->assets[i].data.music = NULL;
break;
case ASSET_TYPE_FONT:
TTF_CloseFont((*am)->assets[i].data.font);
(*am)->assets[i].data.font = NULL;
break;
default:
break;
}