diff --git a/engine/include/GearBox/Core.h b/engine/include/GearBox/Core.h index 8a992e2..e216670 100644 --- a/engine/include/GearBox/Core.h +++ b/engine/include/GearBox/Core.h @@ -16,6 +16,7 @@ GBDECL void GBEngineParamInit(GBEngineParam* param); GBDECL void GBEngineLoop(GBEngine engine); GBDECL GBClient GBEngineGetClient(GBEngine engine); GBDECL GBServer GBEngineGetServer(GBEngine engine); +GBDECL int GBEngineRegisterResource(GBEngine engine, const char* name, const char* path); #ifdef __cplusplus } diff --git a/engine/src/core.c b/engine/src/core.c index 47cc616..12eff7d 100644 --- a/engine/src/core.c +++ b/engine/src/core.c @@ -19,9 +19,19 @@ void GBInit(void) { gload_init(); } -GBEngine GBEngineCreate(GBEngineParam* param) { - GBEngine engine = malloc(sizeof(*engine)); +int GBEngineRegisterResource(GBEngine engine, const char* name, const char* path) { GBResource resource; + if((resource = GBResourceOpen(engine, path)) != NULL) { + shput(engine->resource, name, resource); + + return 1; + } + + return 0; +} + +GBEngine GBEngineCreate(GBEngineParam* param) { + GBEngine engine = malloc(sizeof(*engine)); memset(engine, 0, sizeof(*engine)); @@ -34,13 +44,8 @@ GBEngine GBEngineCreate(GBEngineParam* param) { sh_new_strdup(engine->resource); - if((resource = GBResourceOpen(engine, "base.pak")) != NULL) { - shput(engine->resource, "base", resource); - } - - if((resource = GBResourceOpen(engine, "game.pak")) != NULL) { - shput(engine->resource, "game", resource); - } + GBEngineRegisterResource(engine, "base", "base.pak"); + GBEngineRegisterResource(engine, "game", "game.pak"); if(engine != NULL && param->client && (engine->client = GBClientCreate(engine)) == NULL) { GBLog(GBLogError, "Failed to create client");