#define NUM_BELTS 4
#define NUM_BELT_PARTS 3
+#define NUM_ENVELOPES 4
#define MIN_ENVELOPE_XSIZE 1
#define MIN_ENVELOPE_YSIZE 1
#define MAX_ENVELOPE_XSIZE 30
#define PROGRAM_VERSION_MAJOR 3
#define PROGRAM_VERSION_MINOR 2
#define PROGRAM_VERSION_PATCH 0
-#define PROGRAM_VERSION_BUILD 8
+#define PROGRAM_VERSION_BUILD 9
#define PROGRAM_TITLE_STRING "Rocks'n'Diamonds"
#define PROGRAM_AUTHOR_STRING "Holger Schemel"
#define FILE_VERSION_1_2 VERSION_IDENT(1,2,0,0)
#define FILE_VERSION_1_4 VERSION_IDENT(1,4,0,0)
#define FILE_VERSION_2_0 VERSION_IDENT(2,0,0,0)
+#define FILE_VERSION_3_0 VERSION_IDENT(3,0,0,0)
/* file version does not change for every program version, but is changed
when new features are introduced that are incompatible with older file
versions, so that they can be treated accordingly */
-#define FILE_VERSION_ACTUAL FILE_VERSION_2_0
+#define FILE_VERSION_ACTUAL FILE_VERSION_3_0
#define GAME_VERSION_1_0 FILE_VERSION_1_0
#define GAME_VERSION_1_2 FILE_VERSION_1_2
#define GAME_VERSION_1_4 FILE_VERSION_1_4
#define GAME_VERSION_2_0 FILE_VERSION_2_0
+#define GAME_VERSION_3_0 FILE_VERSION_3_0
#define GAME_VERSION_ACTUAL VERSION_IDENT(PROGRAM_VERSION_MAJOR, \
PROGRAM_VERSION_MINOR, \
int e[3][3];
};
+struct EnvelopeInfo
+{
+ int xsize;
+ int ysize;
+
+ char text[MAX_ENVELOPE_TEXT_LEN + 1];
+};
+
struct LevelSetInfo
{
int music[MAX_LEVELS];
char *filename;
};
+struct DateInfo
+{
+ int year;
+ int month;
+ int day;
+};
+
struct LevelInfo
{
struct LevelFileInfo file_info;
int file_version; /* file format version the level is stored with */
int game_version; /* game release version the level was created with */
+ struct DateInfo creation_date;
+
boolean encoding_16bit_field; /* level contains 16-bit elements */
boolean encoding_16bit_yamyam; /* yamyam contains 16-bit elements */
boolean encoding_16bit_amoeba; /* amoeba contains 16-bit elements */
char name[MAX_LEVEL_NAME_LEN + 1];
char author[MAX_LEVEL_AUTHOR_LEN + 1];
- char envelope_text[4][MAX_ENVELOPE_TEXT_LEN + 1];
- int envelope_xsize[4], envelope_ysize[4];
+ struct EnvelopeInfo envelope[NUM_ENVELOPES];
int score[LEVEL_SCORE_ELEMENTS];
int can_move_into_acid_bits; /* bitfield to store property for elements */
int dont_collide_with_bits; /* bitfield to store property for elements */
- int initial_player_stepsize; /* initial player speed */
-
- boolean initial_gravity;
+ int initial_player_stepsize[MAX_PLAYERS]; /* initial player speed */
boolean initial_player_gravity[MAX_PLAYERS];
boolean em_slippery_gems; /* EM style "gems slip from wall" behaviour */