diff options
Diffstat (limited to 'src/loader.c')
-rw-r--r-- | src/loader.c | 150 |
1 files changed, 140 insertions, 10 deletions
diff --git a/src/loader.c b/src/loader.c index efbefa6..7924cb0 100644 --- a/src/loader.c +++ b/src/loader.c @@ -8,11 +8,36 @@ #include "utils.h" #define PATH_STYLE "../styles" +#define PATH_MISC "../misc" +#define MISC_ICON_COUNT 13 extern FILE *yyin; +int _loadMiscRessources(gameIni_t *gIni, gameRess_t *gRess); + +void loadGameConfig(gameConfig_t *conf) { + conf->screen.w=640; + conf->screen.h=480; + conf->screen.x=0; + conf->screen.y=0; + //TODO : charger vraiment le fichier de conf ^^ +} + +int loadIni(gameIni_t *gIni, char *filepath) { + int res; + + yyin=fopen(filepath, "r"); + if (yyin == NULL ) { + fprintf(stderr, "load_ini(), Could not open '%s'\n", filepath); + return 1; + } + res=parse(gIni); + fclose(yyin); + return res; +} + int loadRessources(gameIni_t *gIni, gameRess_t *gRess) { - int i, filenamelen; + int i, res, filenamelen; char *filepath; filenamelen = sizeof(char)*(strlen(PATH_STYLE)+2*strlen(gIni->style.name)+strlen("//om_00.gif")+1); @@ -73,18 +98,123 @@ int loadRessources(gameIni_t *gIni, gameRess_t *gRess) { } free(filepath); - return 0; + + res=_loadMiscRessources(gIni, gRess); + + return res; } -int loadIni(gameIni_t *gIni, char *filepath) { - int res; +int _loadMiscRessources(gameIni_t *gIni, gameRess_t *gRess) { + int i, filenamelen; + char *filepath; - yyin=fopen(filepath, "r"); - if (yyin == NULL ) { - fprintf(stderr, "load_ini(), Could not open '%s'\n", filepath); + filenamelen = sizeof(char)*(strlen(PATH_MISC)+16); + filepath = malloc(filenamelen); + + gRess->misc.lemmingAnims=malloc(sizeof(SDL_Surface *)*gIni->misc.lemmingAnimCount); + if (gRess->misc.lemmingAnims==NULL) { + logp(LOG_ERROR, "_loadMiscRessources(), malloc()"); return 1; } - res=parse(gIni); - fclose(yyin); - return res; + + gRess->misc.lemmingMasks=malloc(sizeof(SDL_Surface *)*gIni->misc.lemmingAnimCount); + if (gRess->misc.lemmingMasks==NULL) { + logp(LOG_ERROR, "_loadMiscRessources(), malloc()"); + return 1; + } + + gRess->misc.lemmingImasks=malloc(sizeof(SDL_Surface *)*gIni->misc.lemmingAnimCount); + if (gRess->misc.lemmingImasks==NULL) { + logp(LOG_ERROR, "_loadMiscRessources(), malloc()"); + return 1; + } + + for(i=0; i < gIni->misc.lemmingAnimCount ; ++i) { + snprintf(filepath, filenamelen, "%s/lemm_%d.gif", PATH_MISC, i); + gRess->misc.lemmingAnims[i] = loadGif(filepath); + if (gRess->misc.lemmingAnims[i]==NULL) { + logs2(LOG_WARN, "_loadMiscRessources(), loadGif() error for ", filepath); + return 2; + } + + if ( gIni->misc.lemmingAnims[i].haveImask == 1 ) { + snprintf(filepath, filenamelen, "%s/mask_%d.gif", PATH_MISC, i); + gRess->misc.lemmingImasks[i] = loadGif(filepath); + if (gRess->misc.lemmingImasks[i]==NULL) { + logs2(LOG_WARN, "_loadMiscRessources(), loadGif() error for ", filepath); + return 2; + } + } + + if ( gIni->misc.lemmingAnims[i].haveMask == 1 ) { + snprintf(filepath, filenamelen, "%s/mask_%d.gif", PATH_MISC, i); + gRess->misc.lemmingImasks[i] = loadGif(filepath); + if (gRess->misc.lemmingImasks[i]==NULL) { + logs2(LOG_WARN, "_loadMiscRessources(), loadGif() error for ", filepath); + return 2; + } + } + } + + gRess->misc.icons=malloc(sizeof(SDL_Surface *)*MISC_ICON_COUNT); + if (gRess->misc.icons==NULL) { + logp(LOG_ERROR, "_loadMiscRessources(), malloc()"); + return 1; + } + + for(i=0; i < MISC_ICON_COUNT ; ++i) { + snprintf(filepath, filenamelen, "%s/icon_%d.gif", PATH_MISC, i); + gRess->misc.icons[i] = loadGif(filepath); + if (gRess->misc.icons[i]==NULL) { + logs2(LOG_WARN, "_loadMiscRessources(), loadGif() error for ", filepath); + return 2; + } + } + + snprintf(filepath, filenamelen, "%s/lemmfont.gif", PATH_MISC); + gRess->misc.font1 = loadGif(filepath); + if (gRess->misc.font1==NULL) { + logs2(LOG_WARN, "_loadMiscRessources(), loadGif() error for ", filepath); + return 2; + } + + snprintf(filepath, filenamelen, "%s/numfont.gif", PATH_MISC); + gRess->misc.font2 = loadGif(filepath); + if (gRess->misc.font2==NULL) { + logs2(LOG_WARN, "_loadMiscRessources(), loadGif() error for ", filepath); + return 2; + } + + snprintf(filepath, filenamelen, "%s/lemmfont2.gif", PATH_MISC); + gRess->misc.font2 = loadGif(filepath); + if (gRess->misc.font2==NULL) { + logs2(LOG_WARN, "_loadMiscRessources(), loadGif() error for ", filepath); + return 2; + } + + snprintf(filepath, filenamelen, "%s/countdown.gif", PATH_MISC); + gRess->misc.countdown = loadGif(filepath); + if (gRess->misc.countdown==NULL) { + logs2(LOG_WARN, "_loadMiscRessources(), loadGif() error for ", filepath); + return 2; + } + + snprintf(filepath, filenamelen, "%s/cursor.gif", PATH_MISC); + gRess->misc.cursor = loadGif(filepath); + if (gRess->misc.cursor==NULL) { + logs2(LOG_WARN, "_loadMiscRessources(), loadGif() error for ", filepath); + return 2; + } + + snprintf(filepath, filenamelen, "%s/explode.gif", PATH_MISC); + gRess->misc.explode = loadGif(filepath); + if (gRess->misc.explode==NULL) { + logs2(LOG_WARN, "_loadMiscRessources(), loadGif() error for ", filepath); + return 2; + } + + free(filepath); + + return 0; } + |