From 815aec62f8ae3a403e913559d5fe6138c8825007 Mon Sep 17 00:00:00 2001 From: BoredGuy Date: Tue, 29 Jul 2025 11:50:57 +0300 Subject: Added background entity and asset system --- src/assets.c | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/assets.c (limited to 'src/assets.c') 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 +#include +#include +#include +#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; +} -- cgit v1.2.3