summaryrefslogtreecommitdiff
path: root/src/parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser.c')
-rw-r--r--src/parser.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/parser.c b/src/parser.c
index 027d1fc..89f3c55 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -206,6 +206,49 @@ int callback_ini_level(const mTCHAR *section, const mTCHAR *key, const mTCHAR *v
MATCH_STRING(style,MAX_NAMELEN);
MATCH_STRING(name,MAX_NAMELEN);
+ if (SDL_strncasecmp(key,"object",6)==0 && key[6]=='_') {
+ return 1;
+ }
+ if (SDL_strncasecmp(key,"steel",5)==0 && key[5]=='_') {
+ return 1;
+ }
+
+ if (SDL_strncasecmp(key,"terrain",7)==0 && key[7]=='_') {
+ char *wordBoundary;
+ int v;
+ int k = atoi(key+8);
+ if ( k<0 || k>MAX_TERRAINS_COUNT) { *err=ERR_KEY_OUT_OF_RANGE; return 0; }
+ if (data->terrainCount < k+1) data->terrainCount = k+1;
+
+ if ( (wordBoundary=SDL_strchr(value,','))==NULL ) { *err=ERR_BAD_FIELDS; return 0; }
+ *wordBoundary='\0';
+ v = atoi(value);
+ if ( v<0 || v>MAX_OBJECTS_COUNT) { *err=ERR_VAL_OUT_OF_RANGE; return 0; }
+ data->terrains[k].id = v;
+ value = wordBoundary+1;
+
+ if ( (wordBoundary=SDL_strchr(value,','))==NULL ) { *err=ERR_BAD_FIELDS; return 0; }
+ *wordBoundary='\0';
+ v = atoi(value);
+ if ( v<0 || v>LEVEL_WIDTH) { *err=ERR_VAL_OUT_OF_RANGE; return 0; }
+ data->terrains[k].xpos = v;
+ value = wordBoundary+1;
+
+ if ( (wordBoundary=SDL_strchr(value,','))==NULL ) { *err=ERR_BAD_FIELDS; return 0; }
+ *wordBoundary='\0';
+ v = atoi(value);
+ if ( v<0 || v>LEVEL_HEIGHT) { *err=ERR_VAL_OUT_OF_RANGE; return 0; }
+ data->terrains[k].ypos = v;
+ value = wordBoundary+1;
+
+ v = atoi(value);
+ if ( v<0 || v>16) { *err=ERR_VAL_OUT_OF_RANGE; return 0; }
+ data->terrains[k].modifier = v;
+
+ return 1;
+ }
+ //MATCH_INT_ARRAY_QUAD(terrain,MAX_OBJECTS_COUNT,data->terrainCount,data->terrains,id,xpos,ypos,modifier);
+ //MATCH_INT_ARRAY_QUAD(terrain,MAX_STEELS_COUNT,data->terrainCount,data->terrains,id,xpos,ypos,modifier);
// TODO : object/terrain/steel à la main (car struct, et complications)
// No match is an error (unkown key)