#define MAX_LEV_FIELDX MAX_PLAYFIELD_WIDTH
#define MAX_LEV_FIELDY MAX_PLAYFIELD_HEIGHT
+#define MIN_SCROLL_DELAY 0
+#define STD_SCROLL_DELAY 3
+#define MAX_SCROLL_DELAY 8
+
#define SCREENX(a) ((a) - scroll_x)
#define SCREENY(a) ((a) - scroll_y)
#define LEVELX(a) ((a) + scroll_x)
#define EM_KEY_NR(e) ((e) - EL_EM_KEY_1)
#define EMC_KEY_NR(e) ((e) - EL_EMC_KEY_5 + 4)
#define KEY_NR(e) (IS_RND_KEY(e) ? RND_KEY_NR(e) : \
- IS_EM_KEY(e) ? EM_KEY_NR(e) : \
+ IS_EM_KEY(e) ? EM_KEY_NR(e) : \
IS_EMC_KEY(e) ? EMC_KEY_NR(e) : 0)
#define IS_RND_GATE(e) ((e) >= EL_GATE_1 && \
/* values for special image configuration suffixes (must match game mode) */
#define GFX_SPECIAL_ARG_DEFAULT 0
-#define GFX_SPECIAL_ARG_TITLE 1
-#define GFX_SPECIAL_ARG_MESSAGE 2
+#define GFX_SPECIAL_ARG_TITLE_INITIAL 1
+#define GFX_SPECIAL_ARG_TITLE 2
#define GFX_SPECIAL_ARG_MAIN 3
#define GFX_SPECIAL_ARG_LEVELS 4
#define GFX_SPECIAL_ARG_SCORES 5
#define GFX_SPECIAL_ARG_SETUP 8
#define GFX_SPECIAL_ARG_PLAYING 9
#define GFX_SPECIAL_ARG_DOOR 10
-#define GFX_SPECIAL_ARG_PREVIEW 11
-#define GFX_SPECIAL_ARG_CRUMBLED 12
+#define GFX_SPECIAL_ARG_PANEL 11
+#define GFX_SPECIAL_ARG_PREVIEW 12
+#define GFX_SPECIAL_ARG_CRUMBLED 13
-#define NUM_SPECIAL_GFX_ARGS 13
+#define NUM_SPECIAL_GFX_ARGS 14
/* these additional definitions are currently only used for draw offsets */
#define GFX_SPECIAL_ARG_INFO_MAIN 0
#define GFX_ARG_NAME 36
#define GFX_ARG_SCALE_UP_FACTOR 37
#define GFX_ARG_CLONE_FROM 38
-#define GFX_ARG_FADE_DELAY 39
-#define GFX_ARG_POST_DELAY 40
-#define GFX_ARG_AUTO_DELAY 41
-#define GFX_ARG_ALIGN 42
-#define GFX_ARG_SORT_PRIORITY 43
+#define GFX_ARG_FADE_MODE 39
+#define GFX_ARG_FADE_DELAY 40
+#define GFX_ARG_POST_DELAY 41
+#define GFX_ARG_AUTO_DELAY 42
+#define GFX_ARG_ALIGN 43
+#define GFX_ARG_VALIGN 44
+#define GFX_ARG_SORT_PRIORITY 45
-#define NUM_GFX_ARGS 44
+#define NUM_GFX_ARGS 46
/* values for sound configuration suffixes */
/* values for game_status (must match special image configuration suffixes) */
#define GAME_MODE_DEFAULT 0
-#define GAME_MODE_TITLE 1
-#define GAME_MODE_MESSAGE 2
+#define GAME_MODE_TITLE_INITIAL 1
+#define GAME_MODE_TITLE 2
#define GAME_MODE_MAIN 3
#define GAME_MODE_LEVELS 4
#define GAME_MODE_SCORES 5
#define GAME_MODE_SETUP 8
#define GAME_MODE_PLAYING 9
#define GAME_MODE_PSEUDO_DOOR 10
-#define GAME_MODE_PSEUDO_PREVIEW 11
-#define GAME_MODE_PSEUDO_CRUMBLED 12
+#define GAME_MODE_PSEUDO_PANEL 11
+#define GAME_MODE_PSEUDO_PREVIEW 12
+#define GAME_MODE_PSEUDO_CRUMBLED 13
/* there are no special config file suffixes for these modes */
-#define GAME_MODE_PSEUDO_TYPENAME 13
-#define GAME_MODE_QUIT 14
+#define GAME_MODE_PSEUDO_TYPENAME 14
+#define GAME_MODE_QUIT 15
/* special definitions currently only used for custom artwork configuration */
#define MUSIC_PREFIX_BACKGROUND 0
boolean draw_masked[NUM_SPECIAL_GFX_ARGS];
};
-#if 0
-struct MenuPosInfo
-{
- int x, y;
- int width, height;
- int align;
-};
-#endif
-
struct MenuMainButtonInfo
{
struct MenuPosInfo name;
struct TextPosInfo setup;
struct TextPosInfo quit;
- struct TextPosInfo current_level;
struct TextPosInfo first_level;
struct TextPosInfo last_level;
+ struct TextPosInfo level_number;
struct TextPosInfo level_info_1;
struct TextPosInfo level_info_2;
struct TextPosInfo level_name;
struct MenuMainInputInfo input;
};
-struct TitleInfo
+struct TitleFadingInfo
{
+ int fade_mode;
int fade_delay;
int post_delay;
int auto_delay;
-
- int fade_delay_final;
- int post_delay_final;
- int auto_delay_final;
};
struct TitleMessageInfo
{
- int x;
- int y;
- int width;
- int height;
- int chars;
- int lines;
- int align;
+ int x, y;
+ int width, height;
+ int chars, lines;
+ int align, valign;
int font;
boolean autowrap;
boolean centered;
- boolean skip_comments;
+ boolean parse_comments;
int sort_priority;
+
+ int fade_mode;
+ int fade_delay;
+ int post_delay;
+ int auto_delay;
};
struct MenuInfo
int list_size[NUM_SPECIAL_GFX_ARGS];
- int fade_delay;
- int post_delay;
- int auto_delay;
+ struct TitleFadingInfo enter_menu;
+ struct TitleFadingInfo leave_menu;
+ struct TitleFadingInfo enter_screen[NUM_SPECIAL_GFX_ARGS];
+ struct TitleFadingInfo leave_screen[NUM_SPECIAL_GFX_ARGS];
int sound[NUM_SPECIAL_GFX_ARGS];
int music[NUM_SPECIAL_GFX_ARGS];
struct PreviewInfo
{
int x, y;
- int align;
+ int align, valign;
int xsize, ysize;
int xoffset, yoffset;
int tile_size;
boolean use_spring_bug; /* for compatibility with old levels */
boolean use_time_orb_bug; /* for compatibility with old levels */
boolean instant_relocation; /* no visual delay when relocating player */
+ boolean shifted_relocation; /* no level centering when relocating player */
boolean can_pass_to_walkable; /* player can pass to empty or walkable tile */
boolean grow_into_diggable; /* amoeba can grow into anything diggable */
int draw_masked; /* optional setting for drawing envelope gfx */
+ int fade_mode; /* optional setting for drawing title screens */
int fade_delay; /* optional setting for drawing title screens */
int post_delay; /* optional setting for drawing title screens */
int auto_delay; /* optional setting for drawing title screens */
- int align; /* optional setting for drawing title screens */
+ int align, valign; /* optional setting for drawing title screens */
int sort_priority; /* optional setting for drawing title screens */
boolean use_image_size; /* use image size as default width and height */
extern struct TapeInfo tape;
extern struct GlobalInfo global;
extern struct BorderInfo border;
-extern struct TitleInfo title;
+extern struct TitleFadingInfo fading;
+extern struct TitleFadingInfo fading_none;
+extern struct TitleFadingInfo title_initial_default;
+extern struct TitleFadingInfo title_default;
+extern struct TitleMessageInfo titlemessage_initial_default;
extern struct TitleMessageInfo titlemessage_initial[];
+extern struct TitleMessageInfo titlemessage_default;
extern struct TitleMessageInfo titlemessage[];
extern struct TitleMessageInfo readme;
extern struct MenuInfo menu;