diff options
author | Ludovic Pouzenc <lpouzenc@gmail.com> | 2013-07-16 21:11:55 +0200 |
---|---|---|
committer | Ludovic Pouzenc <lpouzenc@gmail.com> | 2013-07-16 21:11:55 +0200 |
commit | a3faaf6f1270e7af4789da1bda4e3e478ce33960 (patch) | |
tree | cab2c8c39d620612697c0cbd33b9ae0b33ca3092 /src/include | |
parent | aebfa9ac4b9eea848ec40f62819ecf743a807b73 (diff) | |
download | mplemmings-a3faaf6f1270e7af4789da1bda4e3e478ce33960.tar.gz mplemmings-a3faaf6f1270e7af4789da1bda4e3e478ce33960.tar.bz2 mplemmings-a3faaf6f1270e7af4789da1bda4e3e478ce33960.zip |
Parseur de fichier INI fonctionnel. Il reste le misc.ini laissé de côté avec les nombre de frames par animations... A voir si on garde ça configurable (change le comportement du jeu)
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/data_ini.h | 48 | ||||
-rw-r--r-- | src/include/parser.h | 19 |
2 files changed, 38 insertions, 29 deletions
diff --git a/src/include/data_ini.h b/src/include/data_ini.h index ae6cda0..9b14899 100644 --- a/src/include/data_ini.h +++ b/src/include/data_ini.h @@ -7,9 +7,14 @@ #define LEVEL_WIDTH 1664*2 #define LEVEL_HEIGHT 160*2 +#define MAX_NAMELEN 64 + #define MAX_PARTICLE_COLORS 16 -#define MAX_MUSIC_COUNT 32 +#define MAX_MUSICS_COUNT 32 #define MAX_DIFFICULTY_COUNT 8 +#define MAX_OBJECTS_COUNT 256 +#define MAX_TERRAINS_COUNT 1024 +#define MAX_STEELS_COUNT 256 //////////////////////// LEVEL INI FILES //////////////////////// @@ -23,41 +28,42 @@ struct levelItem { struct levelIni { int releaseRate, numLemmings, numToRescue, timeLimit; - int numClimbers, numFloaters, numBlockers, numBombers, numBuilders, numBashers, numMiners, numDiggers; - int xPos; - char *style, *name; + int numClimbers, numFloaters, numBlockers, numBombers; + int numBuilders, numBashers, numMiners, numDiggers; + int xPos; // Initial camera position on level + char style[MAX_NAMELEN], name[MAX_NAMELEN]; int superLemming; int objectCount, terrainCount, steelCount; - struct levelItem *objects, *terrains, *steels; + struct levelItem objects[MAX_OBJECTS_COUNT]; + struct levelItem terrains[MAX_OBJECTS_COUNT]; + struct levelItem steels[MAX_OBJECTS_COUNT]; }; //////////////////////// LEVELPACK INI FILES //////////////////////// struct levelPackIni { - char *name; + char name[MAX_NAMELEN]; int maxFallDistance; - char *codeSeed; + char codeSeed[MAX_NAMELEN]; int musicCount, levelDifficultyCount; - char *musics[MAX_MUSIC_COUNT]; - char *levelDifficulty[MAX_DIFFICULTY_COUNT]; + char music[MAX_MUSICS_COUNT][MAX_NAMELEN]; + char levelDifficulty[MAX_DIFFICULTY_COUNT][MAX_NAMELEN]; }; //////////////////////// STYLE INI FILES //////////////////////// -// frames_, amin_, type_ sound_ quadruplet entries from style ini files -struct styleObjects { - int frames, anim, type, sound; -}; - -// Various keys at the beginning of style ini files struct styleIni { - char *name; + char name[MAX_NAMELEN]; uint32_t bgColor, debrisColor; - int /*tiles,*/ particleColorCount, objectCount; + int tiles, particleColorCount; uint32_t particleColor[MAX_PARTICLE_COLORS]; - struct styleObjects *objects; + int objectCount; + int frames[MAX_OBJECTS_COUNT]; + int anim[MAX_OBJECTS_COUNT]; + int type[MAX_OBJECTS_COUNT]; + int sound[MAX_OBJECTS_COUNT]; }; -//////////////////////// MISC/LEMMING.INI FILE //////////////////////// +/*////////////////////// MISC/LEMMING.INI FILE //////////////////////// struct lemmingAnim { int haveMask, haveImask; @@ -71,14 +77,14 @@ struct miscIni { int lemmingAnimCount; struct lemmingAnim *lemmingAnims; }; +*/ //////////////////////// GLOBAL INI FILES //////////////////////// typedef struct { struct styleIni style; struct levelIni level; struct levelPackIni levelPack; - struct miscIni misc; - int firstPass; + //struct miscIni misc; } gameIni_t; diff --git a/src/include/parser.h b/src/include/parser.h index 6127628..9d9c2c7 100644 --- a/src/include/parser.h +++ b/src/include/parser.h @@ -2,22 +2,25 @@ #define PARSER_H #include "data_ini.h" -enum ini_type { ini_style, ini_levelpack, ini_level }; //#define OUT_OF_BOUNDS "out of bounds" //#define CANNOT_BE_NEGATIVE "cannot be negative" //#define BAD_VALUE "bad value" -#define MAX_OBJECT_FRAMES 64 -#define MAX_OBJECTS_COUNT 256 -#define MAX_TERRAINS_COUNT 1024 -#define MAX_STEELS_COUNT 256 -#define MAX_LEMMTYPES_COUNT 256 -#define MAX_SOUNDS_COUNT 32 -#define MAX_NUMLEMMINGS 100 +//#define MAX_LEMMTYPES_COUNT 16 +//#define MAX_OBJECT_FRAMES 64 +//#define MAX_NUMLEMMINGS 100 //#define STEEL_MAX_WIDTH 256 //#define STEEL_MAX_HEIGHT 256 +#define ERR_UNKNOWN_KEY 1 +#define ERR_NOT_YET_IMPLEMENTED 2 +#define ERR_KEY_OUT_OF_RANGE 3 +#define ERR_VAL_OUT_OF_RANGE 4 +#define ERR_STRING_TOO_LONG 5 + +enum ini_type { ini_style, ini_levelpack, ini_level }; + int loadIni(enum ini_type type, const char *filepath, gameIni_t *ini); #endif /*PARSER_H*/ |