feat: add wake, rose, terrain, pathfinding, gameover, clouds, enemy shooting, variable bird speed refactor: some things
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
#include "engineAssets.h"
|
||||
#include <raylib.h>
|
||||
#include <string.h>
|
||||
|
||||
#define ASSET_CACHE_CAPACITY 64
|
||||
#define ASSET_PATH_MAX 128
|
||||
|
||||
typedef struct {
|
||||
char path[ASSET_PATH_MAX];
|
||||
Texture2D texture;
|
||||
} CachedTexture;
|
||||
|
||||
typedef struct {
|
||||
char path[ASSET_PATH_MAX];
|
||||
Sound sound;
|
||||
} CachedSound;
|
||||
|
||||
static CachedTexture textureCache[ASSET_CACHE_CAPACITY];
|
||||
static int textureCacheCount = 0;
|
||||
|
||||
static CachedSound soundCache[ASSET_CACHE_CAPACITY];
|
||||
static int soundCacheCount = 0;
|
||||
|
||||
Texture2D LoadTextureCached(const char *path) {
|
||||
for (int i = 0; i < textureCacheCount; i++) {
|
||||
if (strcmp(textureCache[i].path, path) == 0) {
|
||||
return textureCache[i].texture;
|
||||
}
|
||||
}
|
||||
|
||||
Texture2D texture = LoadTexture(path);
|
||||
|
||||
if (textureCacheCount >= ASSET_CACHE_CAPACITY) {
|
||||
TraceLog(LOG_WARNING, "ASSETS: Texture cache full, not caching %s", path);
|
||||
return texture;
|
||||
}
|
||||
|
||||
CachedTexture *entry = &textureCache[textureCacheCount++];
|
||||
strncpy(entry->path, path, ASSET_PATH_MAX - 1);
|
||||
entry->path[ASSET_PATH_MAX - 1] = '\0';
|
||||
entry->texture = texture;
|
||||
|
||||
return texture;
|
||||
}
|
||||
|
||||
Sound LoadSoundCached(const char *path) {
|
||||
for (int i = 0; i < soundCacheCount; i++) {
|
||||
if (strcmp(soundCache[i].path, path) == 0) {
|
||||
return soundCache[i].sound;
|
||||
}
|
||||
}
|
||||
|
||||
Sound sound = LoadSound(path);
|
||||
|
||||
if (soundCacheCount >= ASSET_CACHE_CAPACITY) {
|
||||
TraceLog(LOG_WARNING, "ASSETS: Sound cache full, not caching %s", path);
|
||||
return sound;
|
||||
}
|
||||
|
||||
CachedSound *entry = &soundCache[soundCacheCount++];
|
||||
strncpy(entry->path, path, ASSET_PATH_MAX - 1);
|
||||
entry->path[ASSET_PATH_MAX - 1] = '\0';
|
||||
entry->sound = sound;
|
||||
|
||||
return sound;
|
||||
}
|
||||
|
||||
void UnloadCachedAssets(void) {
|
||||
for (int i = 0; i < textureCacheCount; i++) {
|
||||
UnloadTexture(textureCache[i].texture);
|
||||
}
|
||||
textureCacheCount = 0;
|
||||
|
||||
for (int i = 0; i < soundCacheCount; i++) {
|
||||
UnloadSound(soundCache[i].sound);
|
||||
}
|
||||
soundCacheCount = 0;
|
||||
}
|
||||
Reference in New Issue
Block a user