summaryrefslogtreecommitdiff
path: root/src/assets.c
diff options
context:
space:
mode:
authorBoredGuy <osome3717@gmail.com>2025-07-29 11:50:57 +0300
committerBoredGuy <osome3717@gmail.com>2025-07-29 11:50:57 +0300
commit815aec62f8ae3a403e913559d5fe6138c8825007 (patch)
tree3041d4b8a843c05a4da02e66d5e2f63e1e713b72 /src/assets.c
parent9e1627c229d8d094c7b55751d82db9d3579a16e1 (diff)
Added background entity and asset system
Diffstat (limited to 'src/assets.c')
-rw-r--r--src/assets.c67
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;
+}