X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fmain.h;h=a8edcee71ea33d8c76b534843b1bb39e487c7aa7;hp=1357db711ec600a931715f596bb09f0635a8f464;hb=7ecbe0a730dc19d8a46ffe6bbcb052f20d0c4152;hpb=c3c190ae0fb103b7843b84b964bdfa1acb9b0091 diff --git a/src/main.h b/src/main.h index 1357db71..a8edcee7 100644 --- a/src/main.h +++ b/src/main.h @@ -1,15 +1,13 @@ -/*********************************************************** -* Rocks'n'Diamonds -- McDuffin Strikes Back! * -*----------------------------------------------------------* -* (c) 1995-2006 Artsoft Entertainment * -* Holger Schemel * -* Detmolder Strasse 189 * -* 33604 Bielefeld * -* Germany * -* e-mail: info@artsoft.org * -*----------------------------------------------------------* -* main.h * -***********************************************************/ +// ============================================================================ +// Rocks'n'Diamonds - McDuffin Strikes Back! +// ---------------------------------------------------------------------------- +// (c) 1995-2014 by Artsoft Entertainment +// Holger Schemel +// info@artsoft.org +// http://www.artsoft.org/ +// ---------------------------------------------------------------------------- +// main.h +// ============================================================================ #ifndef MAIN_H #define MAIN_H @@ -31,10 +29,6 @@ #include "conf_mus.h" /* include auto-generated data structure definitions */ -#define NEW_GAME_TILESIZE 1 -#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 @@ -47,17 +41,17 @@ #define SND_UNDEFINED (-1) #define MUS_UNDEFINED (-1) -#if 0 -#define WIN_XSIZE 672 -#define WIN_YSIZE 560 -#endif - #define DEFAULT_FULLSCREEN_MODE "800x600" -#if 0 -#define SCR_FIELDX 17 -#define SCR_FIELDY 17 -#endif +#define WIN_XSIZE_DEFAULT 672 +#define WIN_YSIZE_DEFAULT 560 + +#define SCR_FIELDX_DEFAULT 17 +#define SCR_FIELDY_DEFAULT 17 + +#define SXSIZE_DEFAULT (SCR_FIELDX_DEFAULT * TILEX) +#define SYSIZE_DEFAULT (SCR_FIELDY_DEFAULT * TILEY) + #define MAX_BUF_XSIZE (SCR_FIELDX + 2) #define MAX_BUF_YSIZE (SCR_FIELDY + 2) #define MIN_LEV_FIELDX 3 @@ -770,27 +764,7 @@ #define IS_DC_STEELWALL_2(e) ((e) >= EL_DC_STEELWALL_2_LEFT && \ (e) <= EL_DC_STEELWALL_2_SINGLE) -#if 1 - -#if 1 #define GFX_ELEMENT(e) (element_info[e].gfx_element) -#else -#define GFX_ELEMENT(e) (element_info[e].gfx_element == \ - (element_info[e].use_gfx_element ? \ - element_info[e].gfx_element : e) ? \ - element_info[e].gfx_element : \ - element_info[e].gfx_element + \ - 0 * printf("::: %d: %d <-> %d\n", \ - e, \ - element_info[e].gfx_element, \ - element_info[e].use_gfx_element ? \ - element_info[e].gfx_element : e)) -#endif - -#else -#define GFX_ELEMENT(e) (element_info[e].use_gfx_element ? \ - element_info[e].gfx_element : e) -#endif /* !!! CHECK THIS !!! */ #if 1 @@ -912,7 +886,6 @@ #define BUTTON_ACTIVE(b) (ActiveButton[b]) #define FONT_ACTIVE(f) (ActiveFont[f]) - /* fundamental game speed values */ #define MICROLEVEL_SCROLL_DELAY 50 /* delay for scrolling micro level */ #define MICROLEVEL_LABEL_DELAY 250 /* delay for micro level label */ @@ -951,18 +924,6 @@ #define MAX_INITIAL_INVENTORY_SIZE 8 /* often used screen positions */ -#if 0 -#define SX 8 -#define SY 8 -#define REAL_SX (SX - 2) -#define REAL_SY (SY - 2) -#define DX 566 -#define DY 60 -#define VX DX -#define VY 400 -#define EX DX -#define EY (VY - 44) -#endif #define TILESIZE 32 #define TILEX TILESIZE #define TILEY TILESIZE @@ -976,53 +937,9 @@ #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) @@ -2027,20 +1944,6 @@ #define NUM_FONTS 38 #define NUM_INITIAL_FONTS 4 -#if 0 -#define FONT_ACTIVE(f) \ - ((f) == FONT_MENU_1 ? FONT_MENU_1_ACTIVE : \ - (f) == FONT_MENU_2 ? FONT_MENU_2_ACTIVE : \ - (f) == FONT_TEXT_1 ? FONT_TEXT_1_ACTIVE : \ - (f) == FONT_TEXT_2 ? FONT_TEXT_2_ACTIVE : \ - (f) == FONT_TEXT_3 ? FONT_TEXT_3_ACTIVE : \ - (f) == FONT_TEXT_4 ? FONT_TEXT_4_ACTIVE : \ - (f) == FONT_INPUT_1 ? FONT_INPUT_1_ACTIVE : \ - (f) == FONT_INPUT_2 ? FONT_INPUT_2_ACTIVE : \ - (f) == FONT_LEVEL_NUMBER ? FONT_LEVEL_NUMBER_ACTIVE : \ - (f)) -#endif - /* values for game_status (must match special image configuration suffixes) */ #define GAME_MODE_DEFAULT 0 #define GAME_MODE_LOADING 1 @@ -2081,39 +1984,17 @@ #define PROGRAM_TITLE_STRING "Rocks'n'Diamonds" #define PROGRAM_AUTHOR_STRING "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 PROGRAM_UNIX_DATADIR_STRING ".rocksndiamonds" - -#if defined(CREATE_SPECIAL_EDITION_RND_JUE) -#undef PROGRAM_TITLE_STRING -#define PROGRAM_TITLE_STRING "R'n'D jue" -#undef PROGRAM_UNIX_DATADIR_STRING -#define PROGRAM_UNIX_DATADIR_STRING ".rnd_jue" -#endif +#define PROGRAM_COPYRIGHT_STRING "Copyright \xa9""1995-2015 by Holger Schemel" +#define PROGRAM_COMPANY_STRING "A Game by Artsoft Entertainment" + +#define PROGRAM_ICON_FILENAME "RocksIcon32x32.png" -#define ICON_TITLE_STRING PROGRAM_TITLE_STRING #define COOKIE_PREFIX "ROCKSNDIAMONDS" -#define USERDATA_DIRECTORY_WIN32 PROGRAM_TITLE_STRING -#define USERDATA_DIRECTORY_MACOSX PROGRAM_TITLE_STRING -#define USERDATA_DIRECTORY_UNIX PROGRAM_UNIX_DATADIR_STRING #define USERDATA_DIRECTORY_OTHER "userdata" -#if defined(PLATFORM_WIN32) -#define USERDATA_DIRECTORY USERDATA_DIRECTORY_WIN32 -#elif defined(PLATFORM_MACOSX) -#define USERDATA_DIRECTORY USERDATA_DIRECTORY_MACOSX -#elif defined(PLATFORM_UNIX) -#define USERDATA_DIRECTORY USERDATA_DIRECTORY_UNIX -#else -#define USERDATA_DIRECTORY USERDATA_DIRECTORY_OTHER -#endif - -#define SDL_ICON_FILENAME "RocksIcon32x32.png" - /* file version numbers for resource files (levels, tapes, score, setup, etc.) ** currently supported/known file version numbers: ** 1.0 (old) @@ -2169,6 +2050,11 @@ #define NUM_ENGINE_TYPES 4 +/* values for automatically playing tapes */ +#define AUTOPLAY_TEST 0 +#define AUTOPLAY_PLAY 1 +#define AUTOPLAY_FFWD 2 + struct BorderInfo { @@ -2284,6 +2170,7 @@ struct MenuInfo int scrollbar_xoffset; int list_size[NUM_SPECIAL_GFX_ARGS]; + int list_size_info[NUM_SPECIAL_GFX_INFO_ARGS]; struct TitleFadingInfo enter_menu; struct TitleFadingInfo leave_menu; @@ -2327,6 +2214,8 @@ struct RequestInfo int step_offset; int step_delay; int anim_mode; + int align; + int valign; boolean autowrap; boolean centered; boolean wrap_single_words; @@ -2344,24 +2233,117 @@ struct PreviewInfo int anim_mode; }; +struct EditorTabsInfo +{ + int x; + int y; + int yoffset2; + int width; + int height; + int draw_xoffset; + int draw_yoffset; +}; + +struct EditorSettingsInfo +{ + struct MenuPosInfo headline; + + struct XY element_graphic; + struct XY element_name; + + struct EditorTabsInfo tabs; +}; + +struct EditorGadgetInfo +{ + int normal_spacing; + int small_spacing; + int tiny_spacing; + int line_spacing; + int text_spacing; + int tab_spacing; + + struct Rect separator_line; +}; + +struct EditorButtonInfo +{ + struct XY prev_level; + struct XY next_level; + + struct XY properties; + + struct XY draw_single; + struct XY draw_connected; + struct XY draw_line; + struct XY draw_arc; + struct XY draw_rectangle; + struct XY draw_filled_box; + struct XY rotate_up; + struct XY draw_text; + struct XY flood_fill; + struct XY rotate_left; + struct XY zoom_level; + struct XY rotate_right; + struct XY draw_random; + struct XY grab_brush; + struct XY rotate_down; + struct XY pick_element; + + struct XY ce_copy_from; + struct XY ce_copy_to; + struct XY ce_swap; + struct XY ce_copy; + struct XY ce_paste; + + struct XY undo; + struct XY conf; + struct XY save; + struct XY clear; + struct XY test; + struct XY exit; +}; + +struct EditorInputInfo +{ + struct XY level_number; +}; + +struct EditorPaletteElementInfo +{ + int x, y; + int tile_size; +}; + struct EditorPaletteInfo { int x, y; int cols, rows; + int tile_size; + + struct EditorPaletteElementInfo element_left; + struct EditorPaletteElementInfo element_middle; + struct EditorPaletteElementInfo element_right; +}; - struct XY element_left; - struct XY element_middle; - struct XY element_right; +struct EditorDrawingAreaInfo +{ + int tile_size; }; struct EditorInfo { + struct EditorSettingsInfo settings; + struct EditorGadgetInfo gadget; + struct EditorButtonInfo button; + struct EditorInputInfo input; struct EditorPaletteInfo palette; + struct EditorDrawingAreaInfo drawingarea; }; struct ViewportInfo { - struct RectWithBorder window; + struct RectWithBorder window[NUM_SPECIAL_GFX_ARGS]; struct RectWithBorder playfield[NUM_SPECIAL_GFX_ARGS]; struct RectWithBorder door_1[NUM_SPECIAL_GFX_ARGS]; struct RectWithBorder door_2[NUM_SPECIAL_GFX_ARGS]; @@ -2515,6 +2497,7 @@ struct LevelInfo 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 lazy_relocation; /* only redraw off-screen player relocation */ 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 */ @@ -2544,6 +2527,7 @@ struct GlobalInfo char *autoplay_leveldir; int autoplay_level[MAX_TAPES_PER_SET]; boolean autoplay_all; + boolean autoplay_mode; char *convert_leveldir; int convert_level_nr; @@ -2553,15 +2537,9 @@ struct GlobalInfo int num_toons; float frames_per_second; - boolean fps_slowdown; - int fps_slowdown_factor; /* global values for fading screens and masking borders */ int border_status; -#if 0 - int fading_status; - int fading_type; -#endif boolean use_envelope_request; }; @@ -2767,7 +2745,9 @@ struct FontInfo struct GraphicInfo { - Bitmap *bitmap; + Bitmap **bitmaps; /* bitmaps in all required sizes */ + Bitmap *bitmap; /* bitmap in default size */ + int src_image_width; /* scaled bitmap size, but w/o small images */ int src_image_height; /* scaled bitmap size, but w/o small images */ @@ -2901,17 +2881,14 @@ 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 DrawBuffer *drawto_field; extern int game_status; +extern boolean game_status_last_screen; extern boolean level_editor_test_game; extern boolean network_playing; @@ -2922,17 +2899,6 @@ extern SDL_Thread *server_thread; 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 redraw_x1, redraw_y1; - extern short Feld[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern short MovPos[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern short MovDir[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; @@ -2990,6 +2956,9 @@ extern int VXSIZE, VYSIZE; extern int EXSIZE, EYSIZE; extern int TILESIZE_VAR; +extern int FADE_SX, FADE_SY; +extern int FADE_SXSIZE, FADE_SYSIZE; + extern int FX, FY; extern int ScrollStepSize; extern int ScreenMovDir, ScreenMovPos, ScreenGfxPos;