summaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authorLudovic Pouzenc <lpouzenc@gmail.com>2013-07-16 21:11:55 +0200
committerLudovic Pouzenc <lpouzenc@gmail.com>2013-07-16 21:11:55 +0200
commita3faaf6f1270e7af4789da1bda4e3e478ce33960 (patch)
treecab2c8c39d620612697c0cbd33b9ae0b33ca3092 /src/include
parentaebfa9ac4b9eea848ec40f62819ecf743a807b73 (diff)
downloadmplemmings-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.h48
-rw-r--r--src/include/parser.h19
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*/