X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=55f0f8ef3c9ee355bbb8692552b8b70c80ede3db;hb=000f4fbffe0d915d1ded9c981a5a2d521cdf7e5e;hp=aabc7026b630dd834afa213b6a4685ac9c16cf95;hpb=44daf525cec5664a3de0ce6e7516cd6c0081cf5b;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index aabc7026..55f0f8ef 100644 --- a/src/init.c +++ b/src/init.c @@ -104,6 +104,8 @@ void InitGadgets() CreateToolButtons(); CreateScreenGadgets(); + InitGadgetsSoundCallback(PlaySoundActivating, PlaySoundSelecting); + gadgets_initialized = TRUE; } @@ -165,7 +167,7 @@ static int getFontBitmapID(int font_nr) { int special = -1; - if (game_status >= GAME_MODE_MAIN && game_status <= GAME_MODE_PSEUDO_PREVIEW) + if (game_status >= GAME_MODE_TITLE && game_status <= GAME_MODE_PSEUDO_PREVIEW) special = game_status; else if (game_status == GAME_MODE_PSEUDO_TYPENAME) special = GFX_SPECIAL_ARG_MAIN; @@ -1233,6 +1235,7 @@ static void InitGraphicInfo() IMG_BACKGROUND, IMG_BACKGROUND_TITLE, + IMG_BACKGROUND_MESSAGE, IMG_BACKGROUND_MAIN, IMG_BACKGROUND_LEVELS, IMG_BACKGROUND_SCORES, @@ -2173,13 +2176,42 @@ void InitElementPropertiesStatic() EL_SIGN_STOP, EL_SIGN_WHEELCHAIR, EL_SIGN_PARKING, - EL_SIGN_ONEWAY, + EL_SIGN_NO_ENTRY, + EL_SIGN_UNUSED_1, + EL_SIGN_GIVE_WAY, + EL_SIGN_ENTRY_FORBIDDEN, + EL_SIGN_EMERGENCY_EXIT, + EL_SIGN_YIN_YANG, + EL_SIGN_UNUSED_2, + EL_SIGN_SPERMS, + EL_SIGN_BULLET, EL_SIGN_HEART, - EL_SIGN_TRIANGLE, - EL_SIGN_ROUND, - EL_SIGN_EXIT, - EL_SIGN_YINYANG, - EL_SIGN_OTHER, + EL_SIGN_CROSS, + EL_SIGN_FRANKIE, + EL_STEEL_EXIT_CLOSED, + EL_STEEL_EXIT_OPEN, + EL_DC_STEELWALL_1_LEFT, + EL_DC_STEELWALL_1_RIGHT, + EL_DC_STEELWALL_1_TOP, + EL_DC_STEELWALL_1_BOTTOM, + EL_DC_STEELWALL_1_HORIZONTAL, + EL_DC_STEELWALL_1_VERTICAL, + EL_DC_STEELWALL_1_TOPLEFT, + EL_DC_STEELWALL_1_TOPRIGHT, + EL_DC_STEELWALL_1_BOTTOMLEFT, + EL_DC_STEELWALL_1_BOTTOMRIGHT, + EL_DC_STEELWALL_1_TOPLEFT_2, + EL_DC_STEELWALL_1_TOPRIGHT_2, + EL_DC_STEELWALL_1_BOTTOMLEFT_2, + EL_DC_STEELWALL_1_BOTTOMRIGHT_2, + EL_DC_STEELWALL_2_LEFT, + EL_DC_STEELWALL_2_RIGHT, + EL_DC_STEELWALL_2_TOP, + EL_DC_STEELWALL_2_BOTTOM, + EL_DC_STEELWALL_2_HORIZONTAL, + EL_DC_STEELWALL_2_VERTICAL, + EL_DC_STEELWALL_2_MIDDLE, + EL_DC_STEELWALL_2_SINGLE, EL_STEELWALL_SLIPPERY, EL_EMC_STEELWALL_1, EL_EMC_STEELWALL_2, @@ -2472,6 +2504,7 @@ void InitElementPropertiesStatic() EL_EXIT_OPEN, EL_SP_EXIT_OPEN, EL_SP_EXIT_OPENING, + EL_STEEL_EXIT_OPEN, EL_GATE_1, EL_GATE_2, EL_GATE_3, @@ -3192,13 +3225,42 @@ void InitElementPropertiesStatic() EL_SIGN_STOP, EL_SIGN_WHEELCHAIR, EL_SIGN_PARKING, - EL_SIGN_ONEWAY, + EL_SIGN_NO_ENTRY, + EL_SIGN_UNUSED_1, + EL_SIGN_GIVE_WAY, + EL_SIGN_ENTRY_FORBIDDEN, + EL_SIGN_EMERGENCY_EXIT, + EL_SIGN_YIN_YANG, + EL_SIGN_UNUSED_2, + EL_SIGN_SPERMS, + EL_SIGN_BULLET, EL_SIGN_HEART, - EL_SIGN_TRIANGLE, - EL_SIGN_ROUND, - EL_SIGN_EXIT, - EL_SIGN_YINYANG, - EL_SIGN_OTHER, + EL_SIGN_CROSS, + EL_SIGN_FRANKIE, + EL_STEEL_EXIT_CLOSED, + EL_STEEL_EXIT_OPEN, + EL_DC_STEELWALL_1_LEFT, + EL_DC_STEELWALL_1_RIGHT, + EL_DC_STEELWALL_1_TOP, + EL_DC_STEELWALL_1_BOTTOM, + EL_DC_STEELWALL_1_HORIZONTAL, + EL_DC_STEELWALL_1_VERTICAL, + EL_DC_STEELWALL_1_TOPLEFT, + EL_DC_STEELWALL_1_TOPRIGHT, + EL_DC_STEELWALL_1_BOTTOMLEFT, + EL_DC_STEELWALL_1_BOTTOMRIGHT, + EL_DC_STEELWALL_1_TOPLEFT_2, + EL_DC_STEELWALL_1_TOPRIGHT_2, + EL_DC_STEELWALL_1_BOTTOMLEFT_2, + EL_DC_STEELWALL_1_BOTTOMRIGHT_2, + EL_DC_STEELWALL_2_LEFT, + EL_DC_STEELWALL_2_RIGHT, + EL_DC_STEELWALL_2_TOP, + EL_DC_STEELWALL_2_BOTTOM, + EL_DC_STEELWALL_2_HORIZONTAL, + EL_DC_STEELWALL_2_VERTICAL, + EL_DC_STEELWALL_2_MIDDLE, + EL_DC_STEELWALL_2_SINGLE, EL_STEELWALL_SLIPPERY, EL_EMC_STEELWALL_1, EL_EMC_STEELWALL_2, @@ -3610,13 +3672,40 @@ void InitElementPropertiesStatic() EL_SIGN_STOP, EL_SIGN_WHEELCHAIR, EL_SIGN_PARKING, - EL_SIGN_ONEWAY, + EL_SIGN_NO_ENTRY, + EL_SIGN_UNUSED_1, + EL_SIGN_GIVE_WAY, + EL_SIGN_ENTRY_FORBIDDEN, + EL_SIGN_EMERGENCY_EXIT, + EL_SIGN_YIN_YANG, + EL_SIGN_UNUSED_2, + EL_SIGN_SPERMS, + EL_SIGN_BULLET, EL_SIGN_HEART, - EL_SIGN_TRIANGLE, - EL_SIGN_ROUND, - EL_SIGN_EXIT, - EL_SIGN_YINYANG, - EL_SIGN_OTHER, + EL_SIGN_CROSS, + EL_SIGN_FRANKIE, + EL_DC_STEELWALL_1_LEFT, + EL_DC_STEELWALL_1_RIGHT, + EL_DC_STEELWALL_1_TOP, + EL_DC_STEELWALL_1_BOTTOM, + EL_DC_STEELWALL_1_HORIZONTAL, + EL_DC_STEELWALL_1_VERTICAL, + EL_DC_STEELWALL_1_TOPLEFT, + EL_DC_STEELWALL_1_TOPRIGHT, + EL_DC_STEELWALL_1_BOTTOMLEFT, + EL_DC_STEELWALL_1_BOTTOMRIGHT, + EL_DC_STEELWALL_1_TOPLEFT_2, + EL_DC_STEELWALL_1_TOPRIGHT_2, + EL_DC_STEELWALL_1_BOTTOMLEFT_2, + EL_DC_STEELWALL_1_BOTTOMRIGHT_2, + EL_DC_STEELWALL_2_LEFT, + EL_DC_STEELWALL_2_RIGHT, + EL_DC_STEELWALL_2_TOP, + EL_DC_STEELWALL_2_BOTTOM, + EL_DC_STEELWALL_2_HORIZONTAL, + EL_DC_STEELWALL_2_VERTICAL, + EL_DC_STEELWALL_2_MIDDLE, + EL_DC_STEELWALL_2_SINGLE, EL_STEELWALL_SLIPPERY, EL_EMC_STEELWALL_1, EL_EMC_STEELWALL_2, @@ -3672,6 +3761,7 @@ void InitElementPropertiesStatic() EL_INTERNAL_CASCADE_DC_ACTIVE, EL_INTERNAL_CASCADE_DX_ACTIVE, EL_INTERNAL_CASCADE_CHARS_ACTIVE, + EL_INTERNAL_CASCADE_STEEL_CHARS_ACTIVE, EL_INTERNAL_CASCADE_CE_ACTIVE, EL_INTERNAL_CASCADE_GE_ACTIVE, EL_INTERNAL_CASCADE_REF_ACTIVE, @@ -3692,6 +3782,7 @@ void InitElementPropertiesStatic() EL_INTERNAL_CASCADE_DC, EL_INTERNAL_CASCADE_DX, EL_INTERNAL_CASCADE_CHARS, + EL_INTERNAL_CASCADE_STEEL_CHARS, EL_INTERNAL_CASCADE_CE, EL_INTERNAL_CASCADE_GE, EL_INTERNAL_CASCADE_REF, @@ -3808,6 +3899,10 @@ void InitElementPropertiesStatic() if (HAS_PROPERTY(copy_properties[j][0], i)) for (k = 1; k <= 4; k++) SET_PROPERTY(copy_properties[j][k], i, TRUE); + + /* set static element properties that are not listed in array definitions */ + for (i = EL_STEEL_CHAR_START; i <= EL_STEEL_CHAR_END; i++) + SET_PROPERTY(i, EP_INDESTRUCTIBLE, TRUE); } void InitElementPropertiesEngine(int engine_version) @@ -3862,7 +3957,10 @@ void InitElementPropertiesEngine(int engine_version) for (i = 0; i < MAX_NUM_ELEMENTS; i++) { /* ---------- INACTIVE ------------------------------------------------- */ - SET_PROPERTY(i, EP_INACTIVE, (i >= EL_CHAR_START && i <= EL_CHAR_END)); + SET_PROPERTY(i, EP_INACTIVE, ((i >= EL_CHAR_START && + i <= EL_CHAR_END) || + (i >= EL_STEEL_CHAR_START && + i <= EL_STEEL_CHAR_END))); /* ---------- WALKABLE, PASSABLE, ACCESSIBLE --------------------------- */ SET_PROPERTY(i, EP_WALKABLE, (IS_WALKABLE_OVER(i) || @@ -3916,7 +4014,6 @@ void InitElementPropertiesEngine(int engine_version) !IS_COLLECTIBLE(i))); /* ---------- DRAGONFIRE_PROOF ----------------------------------------- */ - if (IS_HISTORIC_SOLID(i) || i == EL_EXPLOSION) SET_PROPERTY(i, EP_DRAGONFIRE_PROOF, TRUE); else @@ -4096,6 +4193,10 @@ static void InitGlobal() element_info[i].token_name = element_name_info[i].token_name; element_info[i].class_name = element_name_info[i].class_name; element_info[i].editor_description=element_name_info[i].editor_description; + +#if 0 + printf("%04d: %s\n", i, element_name_info[i].token_name); +#endif } global.autoplay_leveldir = NULL; @@ -4580,7 +4681,7 @@ void InitGfx() DrawInitText(PROGRAM_COPYRIGHT_STRING, 50, FC_RED); DrawInitText(PROGRAM_WEBSITE_STRING, WIN_YSIZE - 20 - font_height, FC_RED); - DrawInitText("Loading graphics:", 120, FC_GREEN); + DrawInitText("Loading graphics", 120, FC_GREEN); } void RedrawBackground() @@ -4595,7 +4696,6 @@ void InitGfxBackground() { int x, y; - drawto = backbuffer; fieldbuffer = bitmap_db_field; SetDrawtoField(DRAW_BACKBUFFER); @@ -4910,8 +5010,7 @@ void OpenAll() InitJoysticks(); InitVideoDisplay(); - InitVideoBuffer(&backbuffer, &window, WIN_XSIZE, WIN_YSIZE, DEFAULT_DEPTH, - setup.fullscreen); + InitVideoBuffer(WIN_XSIZE, WIN_YSIZE, DEFAULT_DEPTH, setup.fullscreen); InitEventFilter(FilterMouseMotionEvents); @@ -4920,8 +5019,11 @@ void OpenAll() InitGfx(); + // debug_print_timestamp(0, "INIT"); InitLevelInfo(); + // debug_print_timestamp(0, "TIME InitLevelInfo: "); InitLevelArtworkInfo(); + // debug_print_timestamp(0, "TIME InitLevelArtworkInfo: "); InitImages(); /* needs to know current level directory */ InitSound(NULL); /* needs to know current level directory */