#include "game_em/game_em.h"
#include "game_sp/game_sp.h"
#include "game_mm/game_mm.h"
+#include "engines.h"
#include "conf_gfx.h" /* include auto-generated data structure definitions */
#include "conf_snd.h" /* include auto-generated data structure definitions */
#define IS_NEXT_FRAME(f, g) (IS_NEW_FRAME(f, g) && (f) > 0)
#define IS_LOOP_SOUND(s) (sound_info[s].loop)
+#define IS_LOOP_MUSIC(s) (music_info[s].loop)
#define IS_SPECIAL_GFX_ARG(a) ((a) >= 0 && (a) < NUM_SPECIAL_GFX_ARGS)
#define GFX_ARG_POST_DELAY_FIXED 39
#define GFX_ARG_POST_DELAY_RANDOM 40
#define GFX_ARG_INIT_EVENT 41
-#define GFX_ARG_ANIM_EVENT 42
-#define GFX_ARG_NAME 43
-#define GFX_ARG_SCALE_UP_FACTOR 44
-#define GFX_ARG_TILE_SIZE 45
-#define GFX_ARG_CLONE_FROM 46
-#define GFX_ARG_FADE_MODE 47
-#define GFX_ARG_FADE_DELAY 48
-#define GFX_ARG_POST_DELAY 49
-#define GFX_ARG_AUTO_DELAY 50
-#define GFX_ARG_ALIGN 51
-#define GFX_ARG_VALIGN 52
-#define GFX_ARG_SORT_PRIORITY 53
-#define GFX_ARG_CLASS 54
-#define GFX_ARG_STYLE 55
-#define GFX_ARG_ACTIVE_XOFFSET 56
-#define GFX_ARG_ACTIVE_YOFFSET 57
-#define GFX_ARG_PRESSED_XOFFSET 58
-#define GFX_ARG_PRESSED_YOFFSET 59
-
-#define NUM_GFX_ARGS 60
+#define GFX_ARG_INIT_EVENT_ACTION 42
+#define GFX_ARG_ANIM_EVENT 43
+#define GFX_ARG_ANIM_EVENT_ACTION 44
+#define GFX_ARG_NAME 45
+#define GFX_ARG_SCALE_UP_FACTOR 46
+#define GFX_ARG_TILE_SIZE 47
+#define GFX_ARG_CLONE_FROM 48
+#define GFX_ARG_FADE_MODE 49
+#define GFX_ARG_FADE_DELAY 50
+#define GFX_ARG_POST_DELAY 51
+#define GFX_ARG_AUTO_DELAY 52
+#define GFX_ARG_ALIGN 53
+#define GFX_ARG_VALIGN 54
+#define GFX_ARG_SORT_PRIORITY 55
+#define GFX_ARG_CLASS 56
+#define GFX_ARG_STYLE 57
+#define GFX_ARG_ACTIVE_XOFFSET 58
+#define GFX_ARG_ACTIVE_YOFFSET 59
+#define GFX_ARG_PRESSED_XOFFSET 60
+#define GFX_ARG_PRESSED_YOFFSET 61
+
+#define NUM_GFX_ARGS 62
/* values for sound configuration suffixes */
#define FONT_OPTION_ON 30
#define FONT_VALUE_1 31
#define FONT_VALUE_2 32
-#define FONT_VALUE_OLD 33
-#define FONT_VALUE_NARROW 34
-#define FONT_LEVEL_NUMBER_ACTIVE 35
-#define FONT_LEVEL_NUMBER 36
-#define FONT_TAPE_RECORDER 37
-#define FONT_GAME_INFO 38
-#define FONT_INFO_ELEMENTS 39
-#define FONT_INFO_LEVELSET 40
-
-#define NUM_FONTS 41
+#define FONT_VALUE_OLD_NARROW 33
+#define FONT_VALUE_OLD 34
+#define FONT_VALUE_NARROW 35
+#define FONT_LEVEL_NUMBER_ACTIVE 36
+#define FONT_LEVEL_NUMBER 37
+#define FONT_TAPE_RECORDER 38
+#define FONT_GAME_INFO 39
+#define FONT_INFO_ELEMENTS 40
+#define FONT_INFO_LEVELSET 41
+#define FONT_MAIN_NETWORK_PLAYERS 42
+
+#define NUM_FONTS 43
#define NUM_INITIAL_FONTS 4
/* values for toon animation configuration */
/* program information and versioning definitions */
-#define PROGRAM_VERSION_MAJOR 4
+#define PROGRAM_VERSION_SUPER 4
+#define PROGRAM_VERSION_MAJOR 1
#define PROGRAM_VERSION_MINOR 0
#define PROGRAM_VERSION_PATCH 1
-#define PROGRAM_VERSION_BUILD 5
#define PROGRAM_VERSION_EXTRA ""
#define PROGRAM_TITLE_STRING "Rocks'n'Diamonds"
#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, \
+#define GAME_VERSION_ACTUAL VERSION_IDENT(PROGRAM_VERSION_SUPER, \
+ PROGRAM_VERSION_MAJOR, \
PROGRAM_VERSION_MINOR, \
- PROGRAM_VERSION_PATCH, \
- PROGRAM_VERSION_BUILD)
+ PROGRAM_VERSION_PATCH)
/* values for game_emulation */
#define EMU_NONE 0
struct MenuPosInfo prev_level;
struct MenuPosInfo next_level;
+
+ struct MenuPosInfo first_level;
+ struct MenuPosInfo last_level;
+ struct MenuPosInfo level_number;
+
+ struct MenuPosInfo insert_solution;
+ struct MenuPosInfo play_solution;
};
struct MenuMainTextInfo
struct MenuMainButtonInfo button;
struct MenuMainTextInfo text;
struct MenuMainInputInfo input;
+
+ struct TextPosInfo preview_players;
+ struct TextPosInfo network_players;
};
struct TitleFadingInfo
char text[MAX_ENVELOPE_TEXT_LEN + 1];
};
-struct LevelSetInfo
-{
- int music[MAX_LEVELS];
-};
-
struct LevelFileInfo
{
int nr;
boolean can_pass_to_walkable; /* player can pass to empty or walkable tile */
boolean grow_into_diggable; /* amoeba can grow into anything diggable */
boolean auto_exit_sokoban; /* automatically finish solved Sokoban levels */
+ boolean solved_by_one_player; /* level is solved if one player enters exit */
boolean continuous_snapping; /* repeated snapping without releasing key */
boolean block_snap_field; /* snapping blocks field to show animation */
boolean use_action_after_change_bug;
};
+struct NetworkLevelInfo
+{
+ char *leveldir_identifier; /* network levelset identifier */
+
+ struct LevelFileInfo file_info; /* file info for level file */
+ struct LevelFileInfo tmpl_info; /* file info for level template */
+
+ boolean use_network_level_files; /* use levels from network server */
+ boolean use_custom_template; /* use CEs from level template */
+};
+
struct GlobalInfo
{
char *autoplay_leveldir;
int post_delay_random; /* animations (pause before next animation) */
int init_event; /* optional event triggering animation start */
+ int init_event_action; /* optional action called on animation start */
int anim_event; /* optional event triggering animation end */
+ int anim_event_action; /* optional action called on animation end */
int step_offset; /* optional step offset of toon animations */
int step_xoffset; /* optional step offset of toon animations */
extern int graphics_action_mapping[];
-extern struct LevelSetInfo levelset;
extern struct LevelInfo level, level_template;
extern struct HiScore highscore[];
extern struct TapeInfo tape;