summaryrefslogtreecommitdiff
path: root/src/loader.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/loader.c')
-rw-r--r--src/loader.c150
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;
}
+