#define EP_BIT_BELT (1 << 0)
#define EP_BIT_BELT_SWITCH (1 << 1)
#define EP_BIT_TUBE (1 << 2)
+#define EP_BIT_SLIPPERY_GEMS (1 << 3)
#define IS_AMOEBALIVE(e) (Elementeigenschaften1[e] & EP_BIT_AMOEBALIVE)
#define IS_AMOEBOID(e) (Elementeigenschaften1[e] & EP_BIT_AMOEBOID)
#define IS_BELT(e) (Elementeigenschaften2[e] & EP_BIT_BELT)
#define IS_BELT_SWITCH(e) (Elementeigenschaften2[e] & EP_BIT_BELT_SWITCH)
#define IS_TUBE(e) (Elementeigenschaften2[e] & EP_BIT_TUBE)
+#define IS_SLIPPERY_GEMS(e) (Elementeigenschaften2[e] & EP_BIT_SLIPPERY_GEMS)
#define IS_PLAYER(x,y) (ELEM_IS_PLAYER(StorePlayer[x][y]))
struct SetupInputInfo input[MAX_PLAYERS];
};
-struct SetupFileList
-{
- char *token;
- char *value;
- struct SetupFileList *next;
-};
-
struct PlayerInfo
{
boolean present; /* player present in level playfield */
int index_nr, client_nr, element_nr;
byte action; /* action from local input device */
- byte effective_action; /* action aknowledged from network server
+ byte effective_action; /* action acknowledged from network server
or summarized over all configured input
devices when in single player mode */
byte programmed_action; /* action forced by game itself (like moving
int move_delay_value;
int last_move_dir;
+ int is_moving;
unsigned long push_delay;
unsigned long push_delay_value;
struct LevelInfo
{
- int file_version; /* version of file this level was stored with */
- int game_version; /* version of game engine to play this level */
+ int file_version; /* version of file the level was stored with */
+ int game_version; /* version of game engine to play this level */
+ 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 */
+
int fieldx;
int fieldy;
int time;
boolean fast_forward;
boolean changed;
boolean player_participates[MAX_PLAYERS];
+ int num_participating_players;
struct
{
byte action[MAX_PLAYERS];
int belt_dir_nr[4];
int switchgate_pos;
int balloon_dir;
+ boolean explosions_delayed;
};
struct GlobalInfo
extern short JustStopped[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern short AmoebaNr[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern short AmoebaCnt[MAX_NUM_AMOEBA], AmoebaCnt2[MAX_NUM_AMOEBA];
+extern short ExplodeField[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern unsigned long Elementeigenschaften1[MAX_ELEMENTS];
extern unsigned long Elementeigenschaften2[MAX_ELEMENTS];
#define EL_TRAP_ACTIVE 522
#define EL_SPRING_MOVING 523
#define EL_SP_MURPHY_CLONE 524
-#define EL_QUICKSAND_FILLING 525
-#define EL_QUICKSAND_DROPPING 526
+#define EL_QUICKSAND_EMPTYING 525
+#define EL_MAGIC_WALL_EMPTYING 526
+#define EL_MAGIC_WALL_BD_EMPTYING 527
+#define EL_AMOEBA_DRIPPING 528
/* "unreal" (and therefore not drawable) runtime elements */
#define EL_BLOCKED 600
#define EL_MAUERND 607
#define EL_BURNING 608
#define EL_PLAYER_IS_LEAVING 609
+#define EL_QUICKSAND_FILLING 610
+#define EL_MAGIC_WALL_FILLING 611
+#define EL_MAGIC_WALL_BD_FILLING 612
/* game graphics:
** 0 - 255: graphics from "RocksScreen"
#define SETUPINPUT 9
#define CALIBRATION 10
-#define PROGRAM_VERSION_STRING "2.0.0"
+#define PROGRAM_VERSION_MAJOR 2
+#define PROGRAM_VERSION_MINOR 0
+#define PROGRAM_VERSION_PATCH 1
+#define PROGRAM_VERSION_STRING "2.0.1"
+
#define PROGRAM_TITLE_STRING "Rocks'n'Diamonds"
#define PROGRAM_AUTHOR_STRING "Holger Schemel"
#define PROGRAM_RIGHTS_STRING "Copyright ^1995-2001 by"
** 1.4 (still in use)
** 2.0 (actual)
*/
-#define FILE_VERSION_1_0 10
-#define FILE_VERSION_1_2 12
-#define FILE_VERSION_1_4 14
-#define FILE_VERSION_2_0 20
+#define FILE_VERSION_1_0 VERSION_IDENT(1,0,0)
+#define FILE_VERSION_1_2 VERSION_IDENT(1,2,0)
+#define FILE_VERSION_1_4 VERSION_IDENT(1,4,0)
+#define FILE_VERSION_2_0 VERSION_IDENT(2,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 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_ACTUAL GAME_VERSION_2_0
+
+#define GAME_VERSION_ACTUAL VERSION_IDENT(PROGRAM_VERSION_MAJOR, \
+ PROGRAM_VERSION_MINOR, \
+ PROGRAM_VERSION_PATCH)
/* for DrawGraphicAnimation() [tools.c] and AnimateToon() [cartoons.c] */
#define ANIM_NORMAL 0