#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; }