X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=41bdc3604a698e15300013591b71861fd74cabd9;hb=c9433eab5c4317ed4f89164b386a7d33562e29be;hp=1f724a11a8088294c6c0781013a7202c5e60d909;hpb=b81f28710057e7d84528b65b92e9b4d1aaadab6c;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index 1f724a11..41bdc360 100644 --- a/src/init.c +++ b/src/init.c @@ -1,7 +1,7 @@ /*********************************************************** * Rocks'n'Diamonds -- McDuffin Strikes Back! * *----------------------------------------------------------* -* (c) 1995-2001 Artsoft Entertainment * +* (c) 1995-2002 Artsoft Entertainment * * Holger Schemel * * Detmolder Strasse 189 * * 33604 Bielefeld * @@ -105,8 +105,6 @@ void OpenAll(void) InitGfxBackground(); InitToons(); - InitGameEngine(); - DrawMainMenu(); InitNetworkServer(); @@ -180,8 +178,12 @@ static void InitMixer() static void InitSound() { + /* load custom sounds and music */ InitReloadSounds(artwork.snd_current->name); InitReloadMusic(artwork.mus_current->name); + + /* initialize sound effect lookup table for element actions */ + InitGameSound(); } static void InitTileClipmasks() @@ -409,19 +411,29 @@ void InitGfxBackground() void ReloadCustomArtwork() { - static char *leveldir_current_name = NULL; + static char *leveldir_current_filename = NULL; static boolean last_override_level_graphics = FALSE; static boolean last_override_level_sounds = FALSE; static boolean last_override_level_music = FALSE; - if (leveldir_current_name != leveldir_current->name) + if (leveldir_current_filename != leveldir_current->filename) { - /* force reload of custom artwork after new level series was selected */ - artwork.graphics_set_current_name = NULL; - artwork.sounds_set_current_name = NULL; - artwork.music_set_current_name = NULL; - - leveldir_current_name = leveldir_current->name; + char *filename_old = leveldir_current_filename; + char *filename_new = leveldir_current->filename; + + /* force reload of custom artwork after new level series was selected, + but reload only that part of the artwork that really has changed */ + if (getTreeInfoFromFilename(artwork.gfx_first, filename_old) != + getTreeInfoFromFilename(artwork.gfx_first, filename_new)) + artwork.graphics_set_current_name = NULL; + if (getTreeInfoFromFilename(artwork.snd_first, filename_old) != + getTreeInfoFromFilename(artwork.snd_first, filename_new)) + artwork.sounds_set_current_name = NULL; + if (getTreeInfoFromFilename(artwork.mus_first, filename_new) != + getTreeInfoFromFilename(artwork.mus_first, filename_new)) + artwork.music_set_current_name = NULL; + + leveldir_current_filename = leveldir_current->filename; } if (artwork.graphics_set_current_name != artwork.gfx_current->name || @@ -441,7 +453,9 @@ void ReloadCustomArtwork() InitTileClipmasks(); InitGfxBackground(); - SetDoorState(DOOR_OPEN_1 | DOOR_CLOSE_2); + /* force redraw of (open or closed) door graphics */ + SetDoorState(DOOR_OPEN_ALL); + CloseDoor(DOOR_CLOSE_ALL | DOOR_NO_DELAY); artwork.graphics_set_current_name = artwork.gfx_current->name; last_override_level_graphics = setup.override_level_graphics; @@ -530,9 +544,13 @@ void InitElementProperties() EL_EM_GATE_3X, EL_EM_GATE_4X, EL_SWITCHGATE_OPEN, + EL_SWITCHGATE_OPENING, EL_SWITCHGATE_CLOSED, + EL_SWITCHGATE_CLOSING, EL_TIMEGATE_OPEN, + EL_TIMEGATE_OPENING, EL_TIMEGATE_CLOSED, + EL_TIMEGATE_CLOSING, EL_TUBE_CROSS, EL_TUBE_VERTICAL, EL_TUBE_HORIZONTAL, @@ -571,11 +589,15 @@ void InitElementProperties() EL_QUICKSAND_EMPTYING, EL_MAGIC_WALL_OFF, EL_MAGIC_WALL_EMPTY, + EL_MAGIC_WALL_EMPTYING, + EL_MAGIC_WALL_FILLING, EL_MAGIC_WALL_FULL, EL_MAGIC_WALL_DEAD, EL_MAGIC_WALL_BD_OFF, EL_MAGIC_WALL_BD_EMPTY, + EL_MAGIC_WALL_BD_EMPTYING, EL_MAGIC_WALL_BD_FULL, + EL_MAGIC_WALL_BD_FILLING, EL_MAGIC_WALL_BD_DEAD, EL_LIFE, EL_LIFE_ASYNC, @@ -601,6 +623,7 @@ void InitElementProperties() EL_SP_HARD_BASE5, EL_SP_HARD_BASE6, EL_SP_TERMINAL, + EL_SP_TERMINAL_ACTIVE, EL_SP_EXIT, EL_INVISIBLE_STEEL, EL_BELT1_SWITCH_LEFT, @@ -649,6 +672,30 @@ void InitElementProperties() EL_CRYSTAL, EL_WALL_PEARL, EL_WALL_CRYSTAL, + EL_PFORTE1, + EL_PFORTE2, + EL_PFORTE3, + EL_PFORTE4, + EL_PFORTE1X, + EL_PFORTE2X, + EL_PFORTE3X, + EL_PFORTE4X, + EL_EM_GATE_1, + EL_EM_GATE_2, + EL_EM_GATE_3, + EL_EM_GATE_4, + EL_EM_GATE_1X, + EL_EM_GATE_2X, + EL_EM_GATE_3X, + EL_EM_GATE_4X, + EL_SWITCHGATE_OPEN, + EL_SWITCHGATE_OPENING, + EL_SWITCHGATE_CLOSED, + EL_SWITCHGATE_CLOSING, + EL_TIMEGATE_OPEN, + EL_TIMEGATE_OPENING, + EL_TIMEGATE_CLOSED, + EL_TIMEGATE_CLOSING, EL_TUBE_CROSS, EL_TUBE_VERTICAL, EL_TUBE_HORIZONTAL, @@ -672,26 +719,6 @@ void InitElementProperties() EL_BADEWANNE3, EL_BADEWANNE4, EL_BADEWANNE5, - EL_PFORTE1, - EL_PFORTE2, - EL_PFORTE3, - EL_PFORTE4, - EL_PFORTE1X, - EL_PFORTE2X, - EL_PFORTE3X, - EL_PFORTE4X, - EL_EM_GATE_1, - EL_EM_GATE_2, - EL_EM_GATE_3, - EL_EM_GATE_4, - EL_EM_GATE_1X, - EL_EM_GATE_2X, - EL_EM_GATE_3X, - EL_EM_GATE_4X, - EL_SWITCHGATE_OPEN, - EL_SWITCHGATE_CLOSED, - EL_TIMEGATE_OPEN, - EL_TIMEGATE_CLOSED, EL_SP_HARD_GRAY, EL_SP_HARD_GREEN, EL_SP_HARD_BLUE, @@ -736,6 +763,30 @@ void InitElementProperties() EL_EMC_STEEL_WALL_3, EL_EMC_STEEL_WALL_4, EL_CRYSTAL, + EL_PFORTE1, + EL_PFORTE2, + EL_PFORTE3, + EL_PFORTE4, + EL_PFORTE1X, + EL_PFORTE2X, + EL_PFORTE3X, + EL_PFORTE4X, + EL_EM_GATE_1, + EL_EM_GATE_2, + EL_EM_GATE_3, + EL_EM_GATE_4, + EL_EM_GATE_1X, + EL_EM_GATE_2X, + EL_EM_GATE_3X, + EL_EM_GATE_4X, + EL_SWITCHGATE_OPEN, + EL_SWITCHGATE_OPENING, + EL_SWITCHGATE_CLOSED, + EL_SWITCHGATE_CLOSING, + EL_TIMEGATE_OPEN, + EL_TIMEGATE_OPENING, + EL_TIMEGATE_CLOSED, + EL_TIMEGATE_CLOSING, EL_TUBE_CROSS, EL_TUBE_VERTICAL, EL_TUBE_HORIZONTAL, @@ -849,6 +900,7 @@ void InitElementProperties() EL_SP_HARD_BASE5, EL_SP_HARD_BASE6, EL_SP_TERMINAL, + EL_SP_TERMINAL_ACTIVE, EL_SP_EXIT, EL_INVISIBLE_STEEL, EL_STEEL_SLANTED, @@ -1626,19 +1678,35 @@ void InitElementProperties() void Execute_Debug_Command(char *command) { - if (strcmp(command, "create soundinfo.conf") == 0) + if (strcmp(command, "create graphicsinfo.conf") == 0) + { + printf("# (Currently only the \"name\" directive is recognized.)\n"); + printf("\n"); + printf("%s\n", getFormattedSetupEntry("name", "Classic Graphics")); + printf("\n"); + } + else if (strcmp(command, "create soundsinfo.conf") == 0) { int i; printf("# You can configure additional/alternative sound effects here\n"); printf("# (The sounds below are default and therefore commented out.)\n"); printf("\n"); + printf("%s\n", getFormattedSetupEntry("name", "Classic Sounds")); + printf("\n"); for (i=0; i