diff options
author | BoredGuy <osome3717@gmail.com> | 2025-07-29 11:50:57 +0300 |
---|---|---|
committer | BoredGuy <osome3717@gmail.com> | 2025-07-29 11:50:57 +0300 |
commit | 815aec62f8ae3a403e913559d5fe6138c8825007 (patch) | |
tree | 3041d4b8a843c05a4da02e66d5e2f63e1e713b72 /src/assets.c | |
parent | 9e1627c229d8d094c7b55751d82db9d3579a16e1 (diff) |
Added background entity and asset system
Diffstat (limited to 'src/assets.c')
-rw-r--r-- | src/assets.c | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/assets.c b/src/assets.c new file mode 100644 index 0000000..8edfde6 --- /dev/null +++ b/src/assets.c @@ -0,0 +1,67 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <stdint.h> +#include "assets.h" + +typedef enum AssetType { + Texture_Asset +} AssetType; + +typedef struct Asset { + AssetType type; + const char* name; + const char* filePath; + + Texture2D texture; +} Asset; + +Asset assets[] = { + { + .type = Texture_Asset, + .name = "bar-background", + .filePath = "assets/art/backgrounds/bar-background.png" + }, + { + .type = Texture_Asset, + .name = "rails", + .filePath = "assets/art/backgrounds/rails.png" + }, +}; + +#define ASSET_COUNT (sizeof(assets) / sizeof(Asset)) + +void LoadAssets() { + + for (size_t i = 0; i < ASSET_COUNT; i++) { + Asset* c = &assets[i]; + + switch (c->type) { + case Texture_Asset: + c->texture = LoadTexture(c->filePath); + break; + } + } +} + +Asset* GetMatchingAssetWithType(const char* targetName, AssetType targetType) { + for (size_t i = 0; i < ASSET_COUNT; i++) { + Asset* c = &assets[i]; + + if (strcmp(targetName, c->name) == 0 && c->type == targetType) + return c; + } + + return NULL; +} + +Texture2D GetTexture(const char* name) { + Asset* textureAsset = GetMatchingAssetWithType(name, Texture_Asset); + + if (textureAsset == NULL) { + fprintf(stderr, "Failed to load texture with name: %s, exitting!\n", name); + exit(EXIT_FAILURE); + } + + return textureAsset->texture; +} |