static void InitPlayerInfo(void);
static void InitLevelInfo(void);
static void InitArtworkInfo(void);
+static void InitLevelArtworkInfo(void);
static void InitNetworkServer(void);
-static void InitSoundServer(void);
+static void InitMixer(void);
static void InitSound(void);
static void InitGfx(void);
static void InitGfxBackground(void);
static void InitGadgets(void);
static void InitElementProperties(void);
+static void Execute_Debug_Command(char *);
void OpenAll(void)
{
+ if (options.debug_command)
+ {
+ Execute_Debug_Command(options.debug_command);
+
+ exit(0);
+ }
+
if (options.serveronly)
{
#if defined(PLATFORM_UNIX)
InitArtworkInfo(); /* needed before loading gfx, sound & music */
InitCounter();
- InitSoundServer();
+ InitMixer();
InitJoysticks();
InitRND(NEW_RANDOMIZE);
InitElementProperties(); /* initializes IS_CHAR() for el2gfx() */
InitLevelInfo();
+ InitLevelArtworkInfo();
InitGadgets(); /* needs to know number of level series */
InitSound(); /* needs to know current level directory */
InitGfxBackground();
InitToons();
+ InitGameEngine();
+
DrawMainMenu();
InitNetworkServer();
LoadArtworkInfo();
}
+void InitLevelArtworkInfo()
+{
+ LoadLevelArtworkInfo();
+}
+
void InitNetworkServer()
{
#if defined(PLATFORM_UNIX)
#endif
}
-#if 0
-static void ReloadCustomSounds()
-{
- int i;
-
-#if 1
- printf("DEBUG: reloading sounds '%s' ...\n", artwork.sounds_set_current);
-#endif
-
- LoadSoundsInfo();
-
- for(i=0; i<NUM_SOUNDS; i++)
- LoadSoundToList(sound_name[i], i);
-}
-
-static void ReloadCustomMusic()
-{
-#if 1
- printf("DEBUG: reloading music '%s' ...\n", artwork.music_set_current);
-#endif
-
- FreeAllMusic();
-
- LoadCustomMusic();
-}
-#endif
-
-static void InitSoundServer()
+static void InitMixer()
{
OpenAudio();
-#if 0
- SetAudioReloadFunctions(ReloadCustomSounds, ReloadCustomMusic);
-#endif
- InitSoundList(sound_name, NUM_SOUNDS);
+ InitSoundList(sound_effects, NUM_SOUND_EFFECTS);
- StartSoundserver();
+ StartMixer();
}
static void InitSound()
for(i=0; i<NUM_BITMAPS; i++)
{
- if (pix[i]->stored_clip_gc)
+ if (pix[i] != NULL && pix[i]->stored_clip_gc)
{
XFreeGC(display, pix[i]->stored_clip_gc);
pix[i]->stored_clip_gc = None;
DrawInitText(WINDOW_TITLE_STRING, 20, FC_YELLOW);
DrawInitText(WINDOW_SUBTITLE_STRING, 50, FC_RED);
-#if defined(PLATFORM_MSDOS)
- DrawInitText(PROGRAM_DOS_PORT_STRING, 210, FC_BLUE);
- rest(200);
-#endif
- DrawInitText("Loading graphics:",120,FC_GREEN);
+
+ DrawInitText("Loading graphics:", 120, FC_GREEN);
for(i=0; i<NUM_PICTURES; i++)
{
void ReloadCustomArtwork()
{
- if (artwork.graphics_set_current != artwork.gfx_current->name)
+ static char *leveldir_current_name = 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)
+ {
+ /* 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;
+ }
+
+ if (artwork.graphics_set_current_name != artwork.gfx_current->name ||
+ last_override_level_graphics != setup.override_level_graphics)
{
int i;
SetDoorState(DOOR_OPEN_1 | DOOR_CLOSE_2);
- artwork.graphics_set_current = artwork.gfx_current->name;
+ artwork.graphics_set_current_name = artwork.gfx_current->name;
+ last_override_level_graphics = setup.override_level_graphics;
}
- if (artwork.sounds_set_current != artwork.snd_current->name)
+ if (artwork.sounds_set_current_name != artwork.snd_current->name ||
+ last_override_level_sounds != setup.override_level_sounds)
{
InitReloadSounds(artwork.snd_current->name);
- artwork.sounds_set_current = artwork.snd_current->name;
+ artwork.sounds_set_current_name = artwork.snd_current->name;
+ last_override_level_sounds = setup.override_level_sounds;
}
- if (artwork.music_set_current != artwork.mus_current->name)
+ if (artwork.music_set_current_name != artwork.mus_current->name ||
+ last_override_level_music != setup.override_level_music)
{
InitReloadMusic(artwork.mus_current->name);
- artwork.music_set_current = artwork.mus_current->name;
+ artwork.music_set_current_name = artwork.mus_current->name;
+ last_override_level_music = setup.override_level_music;
}
}
Elementeigenschaften1[i] |= (EP_BIT_CHAR | EP_BIT_INACTIVE);
}
+void Execute_Debug_Command(char *command)
+{
+ if (strcmp(command, "create soundinfo.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");
+
+ for (i=0; i<NUM_SOUND_EFFECTS; i++)
+ printf("# %s\n",
+ getFormattedSetupEntry(sound_effects[i].text,
+ sound_effects[i].default_filename));
+ }
+}
+
void CloseAllAndExit(int exit_value)
{
int i;