#include #include #include #include #include "assets.h" 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" }, { .type = Texture_Asset, .name = "human-shadow", .filePath = "assets/art/characters/shadow.png" }, { .type = Texture_Asset, .name = "player-body", .filePath = "assets/art/characters/player.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); if (c->texture.id == 0) { TraceLog(LOG_ERROR, "Failed to load texture %s, exitting!", c->filePath); exit(EXIT_FAILURE); } break; default: 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; } Asset* GetMatchingAssetExitOnFail(const char* targetName, AssetType targetType) { Asset* matchingAsset = GetMatchingAssetWithType(targetName, targetType); if (!matchingAsset) { TraceLog(LOG_ERROR, "Failed to load asset %s, exitting!", targetName); exit(EXIT_FAILURE); } return matchingAsset; } void UnloadAssets() { for (size_t i = 0; i < ASSET_COUNT; i++) { Asset* c = &assets[i]; switch (c->type) { case Texture_Asset: UnloadTexture(c->texture); break; default: break; } } }