summaryrefslogtreecommitdiff
path: root/src/include/data_ini.h
blob: 1f93caf92e97f0214bfb69d26ffa05e855e8d2b9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#ifndef DATA_INI_H
#define DATA_INI_H

#include <SDL_stdinc.h>

#define LEVEL_WIDTH (1664*2)
#define LEVEL_HEIGHT (160*2)

#define MAX_NAMELEN 64

#define MAX_PARTICLE_COLORS 16
#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

#define MAX_TILES_COUNT 128
#define MAX_SOUNDS_COUNT 24
#define MAX_LEMMANIM_COUNT 17
//////////////////////// LEVEL INI FILES ////////////////////////

// Item should be an object, terrain or steel
struct levelItem {
	int id, xpos, ypos;	// Common to all types (but no id for steel)
	int paintMode, ud;	// Specific to objects
	int modifier;		// Specific to terrains
	int width, height;	// Specific to steels
};

struct levelIni {
	int  releaseRate, numLemmings, numToRescue, timeLimit;
	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[MAX_OBJECTS_COUNT];
	struct levelItem terrains[MAX_TERRAINS_COUNT];
	struct levelItem steels[MAX_STEELS_COUNT];
};


//////////////////////// LEVELPACK INI FILES ////////////////////////
struct levelPackIni {
	char name[MAX_NAMELEN];
	int  maxFallDistance;
	char codeSeed[MAX_NAMELEN];
	int  musicCount, levelDifficultyCount;
	char music[MAX_MUSICS_COUNT][MAX_NAMELEN];
	char levelDifficulty[MAX_DIFFICULTY_COUNT][MAX_NAMELEN];
};

//////////////////////// STYLE INI FILES ////////////////////////
struct styleIni {
	Uint32 bgColor, debrisColor;
	int    tiles, particleColorCount;
	Uint32 particleColor[MAX_PARTICLE_COLORS];
	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 ////////////////////////
struct lemmingAnim {
	int haveMask, haveImask;

	int lemmFrames, lemmDirs, lemmAnimType;
	int maskFrames, maskDirs, maskStartFrame;
	int imaskFrames, imaskDirs;
	int xPos, yPos, posFlags;
};

struct miscIni {
	int lemmingAnimCount;
	struct lemmingAnim *lemmingAnims;
};
*/

//////////////////////// GLOBAL INI FILES ////////////////////////
typedef struct {
	struct styleIni style;
	struct levelIni level;
	struct levelPackIni levelPack;
	//struct miscIni misc;
} gameIni_t;


#endif /*DATA_INI_H*/