X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=8632855a043f5b6a4a2a8e6094a2acaa5014d9e3;hb=59ee473b86e7cbc1d9b09a3c22b0bbd3a410f16f;hp=4bd8335428844ae4078f843f5ca7e46d77ecb714;hpb=7992b03de18aad8527835dfa03375f3a30a7e673;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index 4bd83354..8632855a 100644 --- a/src/main.h +++ b/src/main.h @@ -24,14 +24,17 @@ #include "libgame/libgame.h" #include "game_em/game_em.h" +#include "game_sp/game_sp.h" #include "conf_gfx.h" /* include auto-generated data structure definitions */ #include "conf_snd.h" /* include auto-generated data structure definitions */ #include "conf_mus.h" /* include auto-generated data structure definitions */ + #define IMG_UNDEFINED (-1) #define IMG_EMPTY IMG_EMPTY_SPACE -#define IMG_SP_EMPTY IMG_SP_EMPTY_SPACE +#define IMG_SP_EMPTY IMG_EMPTY_SPACE +#define IMG_SP_EMPTY_SPACE IMG_EMPTY_SPACE #define IMG_EXPLOSION IMG_DEFAULT_EXPLODING #define IMG_CHAR_START IMG_CHAR_SPACE #define IMG_STEEL_CHAR_START IMG_STEEL_CHAR_SPACE @@ -40,8 +43,10 @@ #define SND_UNDEFINED (-1) #define MUS_UNDEFINED (-1) +#if 0 #define WIN_XSIZE 672 #define WIN_YSIZE 560 +#endif #define DEFAULT_FULLSCREEN_MODE "800x600" @@ -358,6 +363,8 @@ #define CA_SET_CE_VALUE 16 #define CA_SET_ENGINE_SCAN_MODE 17 #define CA_SET_PLAYER_INVENTORY 18 +#define CA_SET_CE_ARTWORK 19 +#define CA_SET_LEVEL_RANDOM_SEED 20 #define CA_HEADLINE_LEVEL_ACTIONS 250 #define CA_HEADLINE_PLAYER_ACTIONS 251 @@ -465,9 +472,12 @@ #define CA_ARG_SCAN_MODE_HEADLINE (CA_ARG_SCAN_MODE + 999) #define CA_ARG_INVENTORY 18000 #define CA_ARG_INVENTORY_RESET (CA_ARG_INVENTORY + 0) -#define CA_ARG_INVENTORY_RM_FIRST (CA_ARG_INVENTORY + 1) -#define CA_ARG_INVENTORY_RM_LAST (CA_ARG_INVENTORY + 2) -#define CA_ARG_INVENTORY_RM_ALL (CA_ARG_INVENTORY + 3) +#define CA_ARG_INVENTORY_RM_TARGET (CA_ARG_INVENTORY + 1) +#define CA_ARG_INVENTORY_RM_TRIGGER (CA_ARG_INVENTORY + 2) +#define CA_ARG_INVENTORY_RM_ACTION (CA_ARG_INVENTORY + 3) +#define CA_ARG_INVENTORY_RM_FIRST (CA_ARG_INVENTORY + 4) +#define CA_ARG_INVENTORY_RM_LAST (CA_ARG_INVENTORY + 5) +#define CA_ARG_INVENTORY_RM_ALL (CA_ARG_INVENTORY + 6) #define CA_ARG_INVENTORY_HEADLINE (CA_ARG_INVENTORY + 998) #define CA_ARG_INVENTORY_RM_HEADLINE (CA_ARG_INVENTORY + 999) #define CA_ARG_UNDEFINED 65535 @@ -754,8 +764,27 @@ #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 @@ -1492,7 +1521,9 @@ #define EL_QUICKSAND_FAST_EMPTY 861 #define EL_QUICKSAND_FAST_FULL 862 -#define NUM_FILE_ELEMENTS 863 +#define EL_FROM_LEVEL_TEMPLATE 863 + +#define NUM_FILE_ELEMENTS 864 /* "real" (and therefore drawable) runtime elements */ @@ -1819,12 +1850,15 @@ #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_1 7 -#define GFX_SPECIAL_ARG_SETUP_SHORTCUTS_2 8 -#define GFX_SPECIAL_ARG_SETUP_CHOOSE_ARTWORK 9 -#define GFX_SPECIAL_ARG_SETUP_CHOOSE_OTHER 10 +#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 NUM_SPECIAL_GFX_SETUP_ARGS 11 +#define NUM_SPECIAL_GFX_SETUP_ARGS 14 /* values for image configuration suffixes */ @@ -1874,8 +1908,10 @@ #define GFX_ARG_ALIGN 43 #define GFX_ARG_VALIGN 44 #define GFX_ARG_SORT_PRIORITY 45 +#define GFX_ARG_CLASS 46 +#define GFX_ARG_STYLE 47 -#define NUM_GFX_ARGS 46 +#define NUM_GFX_ARGS 48 /* values for sound configuration suffixes */ @@ -1982,12 +2018,12 @@ /* program information and versioning definitions */ #define PROGRAM_VERSION_MAJOR 3 #define PROGRAM_VERSION_MINOR 2 -#define PROGRAM_VERSION_PATCH 5 -#define PROGRAM_VERSION_BUILD 0 +#define PROGRAM_VERSION_PATCH 6 +#define PROGRAM_VERSION_BUILD 2 #define PROGRAM_TITLE_STRING "Rocks'n'Diamonds" #define PROGRAM_AUTHOR_STRING "Holger Schemel" -#define PROGRAM_COPYRIGHT_STRING "Copyright ©1995-2008 by Holger Schemel" +#define PROGRAM_COPYRIGHT_STRING "Copyright ©1995-2009 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" @@ -2075,8 +2111,9 @@ #define GAME_ENGINE_TYPE_UNKNOWN LEVEL_FILE_TYPE_UNKNOWN #define GAME_ENGINE_TYPE_RND LEVEL_FILE_TYPE_RND #define GAME_ENGINE_TYPE_EM LEVEL_FILE_TYPE_EM +#define GAME_ENGINE_TYPE_SP LEVEL_FILE_TYPE_SP -#define NUM_ENGINE_TYPES 3 +#define NUM_ENGINE_TYPES 4 struct BorderInfo @@ -2257,6 +2294,12 @@ struct DateInfo int year; int month; int day; + + enum + { + DATE_SRC_CLOCK, + DATE_SRC_LEVELFILE + } src; }; struct LevelInfo @@ -2267,6 +2310,7 @@ struct LevelInfo /* level stored in native format for the alternative native game engines */ struct LevelInfo_EM *native_em_level; + struct LevelInfo_SP *native_sp_level; int file_version; /* file format version the level is stored with */ int game_version; /* game release version the level was created with */ @@ -2285,6 +2329,8 @@ struct LevelInfo char name[MAX_LEVEL_NAME_LEN + 1]; char author[MAX_LEVEL_AUTHOR_LEN + 1]; + int random_seed; + struct EnvelopeInfo envelope[NUM_ENVELOPES]; int score[LEVEL_SCORE_ELEMENTS]; @@ -2350,12 +2396,14 @@ struct LevelInfo int initial_inventory_content[MAX_PLAYERS][MAX_INITIAL_INVENTORY_SIZE]; boolean em_slippery_gems; /* EM style "gems slip from wall" behaviour */ + boolean em_explodes_by_fire; /* EM style chain explosion behaviour */ 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 */ + boolean auto_exit_sokoban; /* automatically finish solved Sokoban levels */ boolean continuous_snapping; /* repeated snapping without releasing key */ boolean block_snap_field; /* snapping blocks field to show animation */ @@ -2400,6 +2448,8 @@ struct GlobalInfo int fading_status; int fading_type; #endif + + struct Rect screen; }; struct ElementChangeInfo @@ -2516,7 +2566,7 @@ struct ElementInfo unsigned long properties[NUM_EP_BITFIELDS]; /* element base properties */ boolean use_gfx_element; /* use custom graphic element */ - int gfx_element; /* optional custom graphic element */ + int gfx_element_initial; /* initial optional custom graphic element */ int access_direction; /* accessible from which direction */ @@ -2567,6 +2617,8 @@ struct ElementInfo boolean in_group[NUM_GROUP_ELEMENTS]; + int gfx_element; /* runtime optional custom graphic element */ + int collect_score; /* runtime score value for collecting */ /* count of this element on playfield, calculated after each frame */ @@ -2651,6 +2703,9 @@ struct GraphicInfo int align, valign; /* optional setting for drawing title screens */ int sort_priority; /* optional setting for drawing title screens */ + int class; + int style; + boolean use_image_size; /* use image size as default width and height */ #if defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND) @@ -2792,6 +2847,8 @@ extern int ActiveFont[NUM_FONTS]; extern int lev_fieldx, lev_fieldy; extern int scroll_x, scroll_y; +extern int WIN_XSIZE, WIN_YSIZE; + extern int FX, FY; extern int ScrollStepSize; extern int ScreenMovDir, ScreenMovPos, ScreenGfxPos; @@ -2827,7 +2884,7 @@ extern struct TitleMessageInfo titlemessage_initial[]; extern struct TitleMessageInfo titlemessage_default; extern struct TitleMessageInfo titlemessage[]; extern struct TitleMessageInfo readme; -extern struct InitInfo init; +extern struct InitInfo init, init_last; extern struct MenuInfo menu; extern struct DoorInfo door_1, door_2; extern struct PreviewInfo preview;