#include "conf_mus.h" /* include auto-generated data structure definitions */
+#define NEW_TILESIZE 1
+#define NEW_SCROLL 1
+
#define IMG_UNDEFINED (-1)
#define IMG_EMPTY IMG_EMPTY_SPACE
#define IMG_SP_EMPTY IMG_EMPTY_SPACE
#define TILESIZE 32
#define TILEX TILESIZE
#define TILEY TILESIZE
+#define TILEX_VAR TILESIZE_VAR
+#define TILEY_VAR TILESIZE_VAR
#define MINI_TILESIZE (TILESIZE / 2)
#define MINI_TILEX MINI_TILESIZE
#define MINI_TILEY MINI_TILESIZE
#define MICRO_TILEY MICRO_TILESIZE
#define MIDPOSX (SCR_FIELDX / 2)
#define MIDPOSY (SCR_FIELDY / 2)
+#if NEW_TILESIZE
+#if NEW_SCROLL
+#if 0
+#define SXSIZE (SCR_FIELDX * TILEX_VAR)
+#define SYSIZE (SCR_FIELDY * TILEY_VAR)
+#endif
+#define FXSIZE ((2 + SCR_FIELDX + 2) * TILEX_VAR)
+#define FYSIZE ((2 + SCR_FIELDY + 2) * TILEY_VAR)
+#else
+#if 0
+#define SXSIZE (SCR_FIELDX * TILEX_VAR)
+#define SYSIZE (SCR_FIELDY * TILEY_VAR)
+#endif
+#define FXSIZE ((SCR_FIELDX + 2) * TILEX_VAR)
+#define FYSIZE ((SCR_FIELDY + 2) * TILEY_VAR)
+#endif
+#else
+#if NEW_SCROLL
+#if 0
+#define SXSIZE (SCR_FIELDX * TILEX)
+#define SYSIZE (SCR_FIELDY * TILEY)
+#endif
+#define FXSIZE ((2 + SCR_FIELDX + 2) * TILEX)
+#define FYSIZE ((2 + SCR_FIELDY + 2) * TILEY)
+#else
+#if 0
#define SXSIZE (SCR_FIELDX * TILEX)
#define SYSIZE (SCR_FIELDY * TILEY)
+#endif
#define FXSIZE ((SCR_FIELDX + 2) * TILEX)
#define FYSIZE ((SCR_FIELDY + 2) * TILEY)
+#endif
+#endif
+
+#if 0
#define DXSIZE 100
#define DYSIZE 280
#define VXSIZE DXSIZE
#define VYSIZE 100
#define EXSIZE DXSIZE
#define EYSIZE (VYSIZE + 44)
+#endif
+
+#if 0
#define FULL_SXSIZE (2 + SXSIZE + 2)
#define FULL_SYSIZE (2 + SYSIZE + 2)
+#endif
#define MICROLEVEL_XSIZE ((STD_LEV_FIELDX + 2) * MICRO_TILEX)
#define MICROLEVEL_YSIZE ((STD_LEV_FIELDY + 2) * MICRO_TILEY)
#define MICROLEVEL_XPOS (SX + (SXSIZE - MICROLEVEL_XSIZE) / 2)
#define GFX_SPECIAL_ARG_TITLE 3
#define GFX_SPECIAL_ARG_MAIN 4
#define GFX_SPECIAL_ARG_LEVELS 5
-#define GFX_SPECIAL_ARG_SCORES 6
-#define GFX_SPECIAL_ARG_EDITOR 7
-#define GFX_SPECIAL_ARG_INFO 8
-#define GFX_SPECIAL_ARG_SETUP 9
-#define GFX_SPECIAL_ARG_PLAYING 10
-#define GFX_SPECIAL_ARG_DOOR 11
-#define GFX_SPECIAL_ARG_PANEL 12
-#define GFX_SPECIAL_ARG_PREVIEW 13
-#define GFX_SPECIAL_ARG_CRUMBLED 14
-
-#define NUM_SPECIAL_GFX_ARGS 15
+#define GFX_SPECIAL_ARG_LEVELNR 6
+#define GFX_SPECIAL_ARG_SCORES 7
+#define GFX_SPECIAL_ARG_EDITOR 8
+#define GFX_SPECIAL_ARG_INFO 9
+#define GFX_SPECIAL_ARG_SETUP 10
+#define GFX_SPECIAL_ARG_PLAYING 11
+#define GFX_SPECIAL_ARG_DOOR 12
+#define GFX_SPECIAL_ARG_TAPE 13
+#define GFX_SPECIAL_ARG_PANEL 14
+#define GFX_SPECIAL_ARG_PREVIEW 15
+#define GFX_SPECIAL_ARG_CRUMBLED 16
+
+#define NUM_SPECIAL_GFX_ARGS 17
/* these additional definitions are currently only used for draw offsets */
#define GFX_SPECIAL_ARG_INFO_MAIN 0
#define NUM_SPECIAL_GFX_INFO_ARGS 8
/* these additional definitions are currently only used for draw offsets */
+/* (must match SETUP_MODE_* values as defined in src/screens.c) */
+/* (should also match corresponding entries in src/conf_gfx.c) */
#define GFX_SPECIAL_ARG_SETUP_MAIN 0
#define GFX_SPECIAL_ARG_SETUP_GAME 1
#define GFX_SPECIAL_ARG_SETUP_EDITOR 2
#define GFX_SPECIAL_ARG_SETUP_SOUND 4
#define GFX_SPECIAL_ARG_SETUP_ARTWORK 5
#define GFX_SPECIAL_ARG_SETUP_INPUT 6
-#define GFX_SPECIAL_ARG_SETUP_SHORTCUTS 7
-#define GFX_SPECIAL_ARG_SETUP_SHORTCUTS_1 8
-#define GFX_SPECIAL_ARG_SETUP_SHORTCUTS_2 9
-#define GFX_SPECIAL_ARG_SETUP_SHORTCUTS_3 10
-#define GFX_SPECIAL_ARG_SETUP_SHORTCUTS_4 11
-#define GFX_SPECIAL_ARG_SETUP_CHOOSE_ARTWORK 12
-#define GFX_SPECIAL_ARG_SETUP_CHOOSE_OTHER 13
+#define GFX_SPECIAL_ARG_SETUP_TOUCH 7
+#define GFX_SPECIAL_ARG_SETUP_SHORTCUTS 8
+#define GFX_SPECIAL_ARG_SETUP_SHORTCUTS_1 9
+#define GFX_SPECIAL_ARG_SETUP_SHORTCUTS_2 10
+#define GFX_SPECIAL_ARG_SETUP_SHORTCUTS_3 11
+#define GFX_SPECIAL_ARG_SETUP_SHORTCUTS_4 12
+#define GFX_SPECIAL_ARG_SETUP_SHORTCUTS_5 13
+#define GFX_SPECIAL_ARG_SETUP_CHOOSE_ARTWORK 14
+#define GFX_SPECIAL_ARG_SETUP_CHOOSE_OTHER 15
-#define NUM_SPECIAL_GFX_SETUP_ARGS 14
+#define NUM_SPECIAL_GFX_SETUP_ARGS 16
/* values for image configuration suffixes */
#define GFX_ARG_SORT_PRIORITY 45
#define GFX_ARG_CLASS 46
#define GFX_ARG_STYLE 47
+#define GFX_ARG_ACTIVE_XOFFSET 48
+#define GFX_ARG_ACTIVE_YOFFSET 49
+#define GFX_ARG_PRESSED_XOFFSET 50
+#define GFX_ARG_PRESSED_YOFFSET 51
-#define NUM_GFX_ARGS 48
+#define NUM_GFX_ARGS 52
/* values for sound configuration suffixes */
#define FONT_ENVELOPE_2 19
#define FONT_ENVELOPE_3 20
#define FONT_ENVELOPE_4 21
-#define FONT_INPUT_1_ACTIVE 22
-#define FONT_INPUT_2_ACTIVE 23
-#define FONT_INPUT_1 24
-#define FONT_INPUT_2 25
-#define FONT_OPTION_OFF 26
-#define FONT_OPTION_ON 27
-#define FONT_VALUE_1 28
-#define FONT_VALUE_2 29
-#define FONT_VALUE_OLD 30
-#define FONT_LEVEL_NUMBER_ACTIVE 31
-#define FONT_LEVEL_NUMBER 32
-#define FONT_TAPE_RECORDER 33
-#define FONT_GAME_INFO 34
-#define FONT_INFO_ELEMENTS 35
-#define FONT_INFO_LEVELSET 36
-
-#define NUM_FONTS 37
+#define FONT_REQUEST 22
+#define FONT_INPUT_1_ACTIVE 23
+#define FONT_INPUT_2_ACTIVE 24
+#define FONT_INPUT_1 25
+#define FONT_INPUT_2 26
+#define FONT_OPTION_OFF 27
+#define FONT_OPTION_ON 28
+#define FONT_VALUE_1 29
+#define FONT_VALUE_2 30
+#define FONT_VALUE_OLD 31
+#define FONT_LEVEL_NUMBER_ACTIVE 32
+#define FONT_LEVEL_NUMBER 33
+#define FONT_TAPE_RECORDER 34
+#define FONT_GAME_INFO 35
+#define FONT_INFO_ELEMENTS 36
+#define FONT_INFO_LEVELSET 37
+
+#define NUM_FONTS 38
#define NUM_INITIAL_FONTS 4
#if 0
#define GAME_MODE_TITLE 3
#define GAME_MODE_MAIN 4
#define GAME_MODE_LEVELS 5
-#define GAME_MODE_SCORES 6
-#define GAME_MODE_EDITOR 7
-#define GAME_MODE_INFO 8
-#define GAME_MODE_SETUP 9
-#define GAME_MODE_PLAYING 10
-#define GAME_MODE_PSEUDO_DOOR 11
-#define GAME_MODE_PSEUDO_PANEL 12
-#define GAME_MODE_PSEUDO_PREVIEW 13
-#define GAME_MODE_PSEUDO_CRUMBLED 14
+#define GAME_MODE_LEVELNR 6
+#define GAME_MODE_SCORES 7
+#define GAME_MODE_EDITOR 8
+#define GAME_MODE_INFO 9
+#define GAME_MODE_SETUP 10
+#define GAME_MODE_PLAYING 11
+#define GAME_MODE_PSEUDO_DOOR 12
+#define GAME_MODE_PSEUDO_TAPE 13
+#define GAME_MODE_PSEUDO_PANEL 14
+#define GAME_MODE_PSEUDO_PREVIEW 15
+#define GAME_MODE_PSEUDO_CRUMBLED 16
/* there are no special config file suffixes for these modes */
-#define GAME_MODE_PSEUDO_TYPENAME 15
-#define GAME_MODE_QUIT 16
+#define GAME_MODE_PSEUDO_TYPENAME 17
+#define GAME_MODE_QUIT 18
/* special definitions currently only used for custom artwork configuration */
#define MUSIC_PREFIX_BACKGROUND 0
#define NUM_MUSIC_PREFIXES 1
-#define MAX_LEVELS 1000
/* definitions for demo animation lists */
#define HELPANIM_LIST_NEXT -1
/* program information and versioning definitions */
-#define PROGRAM_VERSION_MAJOR 3
-#define PROGRAM_VERSION_MINOR 2
-#define PROGRAM_VERSION_PATCH 6
-#define PROGRAM_VERSION_BUILD 2
+#define PROGRAM_VERSION_MAJOR 4
+#define PROGRAM_VERSION_MINOR 0
+#define PROGRAM_VERSION_PATCH 0
+#define PROGRAM_VERSION_BUILD 0
#define PROGRAM_TITLE_STRING "Rocks'n'Diamonds"
#define PROGRAM_AUTHOR_STRING "Holger Schemel"
-#define PROGRAM_COPYRIGHT_STRING "Copyright ©1995-2009 by Holger Schemel"
+#define PROGRAM_COPYRIGHT_STRING "Copyright ©1995-2014 by Holger Schemel"
#define PROGRAM_EMAIL_STRING "info@artsoft.org"
#define PROGRAM_WEBSITE_STRING "http://www.artsoft.org/"
#define PROGRAM_GAME_BY_STRING "A Game by Artsoft Entertainment"
#define X11_ICON_FILENAME "rocks_icon.xbm"
#define X11_ICONMASK_FILENAME "rocks_iconmask.xbm"
-#define SDL_ICON_FILENAME "rocks_icon_32x32.pcx"
+#define SDL_ICON_FILENAME "RocksIcon32x32.png"
#define MSDOS_POINTER_FILENAME "mouse.pcx"
/* file version numbers for resource files (levels, tapes, score, setup, etc.)
boolean draw_masked_when_fading;
};
+struct RequestButtonInfo
+{
+ struct TextPosInfo yes;
+ struct TextPosInfo no;
+ struct TextPosInfo confirm;
+ struct TextPosInfo player_1;
+ struct TextPosInfo player_2;
+ struct TextPosInfo player_3;
+ struct TextPosInfo player_4;
+};
+
struct MenuMainButtonInfo
{
struct MenuPosInfo name;
struct DoorInfo
{
+ struct DoorPartPosInfo part_1;
+ struct DoorPartPosInfo part_2;
+ struct DoorPartPosInfo part_3;
+ struct DoorPartPosInfo part_4;
+ struct DoorPartPosInfo part_5;
+ struct DoorPartPosInfo part_6;
+ struct DoorPartPosInfo part_7;
+ struct DoorPartPosInfo part_8;
+
+ struct DoorPartPosInfo panel;
+
int width;
int height;
int step_offset;
int anim_mode;
};
+struct RequestInfo
+{
+ struct RequestButtonInfo button;
+ int x, y;
+ int width, height;
+ int border_size;
+ int line_spacing;
+ int step_offset;
+ int step_delay;
+ int anim_mode;
+ boolean autowrap;
+ boolean centered;
+ boolean wrap_single_words;
+};
+
struct PreviewInfo
{
int x, y;
int anim_mode;
};
+struct EditorPaletteInfo
+{
+ int x, y;
+ int cols, rows;
+
+ struct XY element_left;
+ struct XY element_middle;
+ struct XY element_right;
+};
+
+struct EditorInfo
+{
+ struct EditorPaletteInfo palette;
+};
+
struct ViewportInfo
{
struct RectWithBorder window;
int fading_status;
int fading_type;
#endif
+
+ boolean use_envelope_request;
};
struct ElementChangeInfo
/* ---------- special element property values ---------- */
- unsigned long properties[NUM_EP_BITFIELDS]; /* element base properties */
+ unsigned int properties[NUM_EP_BITFIELDS]; /* element base properties */
boolean use_gfx_element; /* use custom graphic element */
int gfx_element_initial; /* initial optional custom graphic element */
int class;
int style;
+ int active_xoffset;
+ int active_yoffset;
+ int pressed_xoffset;
+ int pressed_yoffset;
+
boolean use_image_size; /* use image size as default width and height */
#if defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND)
};
+extern Bitmap *bitmap_db_store;
extern Bitmap *bitmap_db_cross;
extern Bitmap *bitmap_db_field;
extern Bitmap *bitmap_db_panel;
+#if 0
extern Bitmap *bitmap_db_door;
+#endif
+extern Bitmap *bitmap_db_door_1;
+extern Bitmap *bitmap_db_door_2;
extern Bitmap *bitmap_db_toons;
extern Pixmap tile_clipmask[];
extern DrawBuffer *fieldbuffer;
extern int key_joystick_mapping;
#if 1
+#if NEW_SCROLL
+extern boolean redraw[2 + MAX_LEV_FIELDX + 2][2 + MAX_LEV_FIELDY + 2];
+#else
extern boolean redraw[MAX_LEV_FIELDX + 2][MAX_LEV_FIELDY + 2];
+#endif
#else
extern boolean redraw[MAX_BUF_XSIZE][MAX_BUF_YSIZE];
#endif
extern int WIN_XSIZE, WIN_YSIZE;
extern int SCR_FIELDX, SCR_FIELDY;
-extern int SX, SY;
extern int REAL_SX, REAL_SY;
+extern int SX, SY;
extern int DX, DY;
extern int VX, VY;
extern int EX, EY;
+extern int dDX, dDY;
+extern int FULL_SXSIZE, FULL_SYSIZE;
+extern int SXSIZE, SYSIZE;
+extern int DXSIZE, DYSIZE;
+extern int VXSIZE, VYSIZE;
+extern int EXSIZE, EYSIZE;
+extern int TILESIZE_VAR;
extern int FX, FY;
extern int ScrollStepSize;
extern struct InitInfo init, init_last;
extern struct MenuInfo menu;
extern struct DoorInfo door_1, door_2;
+extern struct RequestInfo request;
extern struct PreviewInfo preview;
+extern struct EditorInfo editor;
extern struct ElementInfo element_info[];
extern struct ElementNameInfo element_name_info[];
extern struct ElementActionInfo element_action_info[];