/***********************************************************
* Rocks'n'Diamonds -- McDuffin Strikes Back! *
*----------------------------------------------------------*
-* (c) 1995-2001 Artsoft Entertainment *
+* (c) 1995-2002 Artsoft Entertainment *
* Holger Schemel *
* Detmolder Strasse 189 *
* 33604 Bielefeld *
InitGfxBackground();
InitToons();
- InitGameEngine();
-
DrawMainMenu();
InitNetworkServer();
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()
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 ||
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;
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,
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,
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,
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,
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,
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,
EL_SP_HARD_BASE5,
EL_SP_HARD_BASE6,
EL_SP_TERMINAL,
+ EL_SP_TERMINAL_ACTIVE,
EL_SP_EXIT,
EL_INVISIBLE_STEEL,
EL_STEEL_SLANTED,
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<NUM_SOUND_EFFECTS; i++)
printf("# %s\n",
getFormattedSetupEntry(sound_effects[i].text,
sound_effects[i].default_filename));
}
+ else if (strcmp(command, "create musicinfo.conf") == 0)
+ {
+ printf("# (Currently only the \"name\" directive is recognized.)\n");
+ printf("\n");
+ printf("%s\n", getFormattedSetupEntry("name", "Classic Music"));
+ printf("\n");
+ }
}
void CloseAllAndExit(int exit_value)