+void DrawInfoScreen_Music()
+{
+ SetMainBackgroundImageIfDefined(IMG_BACKGROUND_INFO_MUSIC);
+
+ ClearWindow();
+ DrawHeadline();
+
+ LoadMusicInfo();
+
+ HandleInfoScreen_Music(MB_MENU_INITIALIZE);
+}
+
+void HandleInfoScreen_Music(int button)
+{
+ static struct MusicFileInfo *list = NULL;
+ int ystart = 150, dy = 30;
+ int ybottom = SYSIZE - 20;
+ int button_released = !button;
+
+ if (button == MB_MENU_INITIALIZE)
+ {
+ list = music_file_info;
+
+ if (list == NULL)
+ {
+ FadeSoundsAndMusic();
+
+ ClearWindow();
+ DrawHeadline();
+
+ DrawTextSCentered(100, FONT_TEXT_1, "No music info for this level set.");
+
+ DrawTextSCentered(ybottom, FONT_TEXT_4,
+ "Press any key or button for info menu");
+
+ return;
+ }
+ }
+ else if (button == MB_MENU_LEAVE)
+ {
+ info_mode = INFO_MODE_MAIN;
+ DrawInfoScreen();
+
+ return;
+ }
+
+ if (button_released || button == MB_MENU_INITIALIZE)
+ {
+ int y = 0;
+
+ if (button != MB_MENU_INITIALIZE)
+ if (list != NULL)
+ list = list->next;
+
+ if (list == NULL)
+ {
+ info_mode = INFO_MODE_MAIN;
+ DrawInfoScreen();
+
+ return;
+ }
+
+ FadeSoundsAndMusic();
+
+ ClearWindow();
+ DrawHeadline();
+
+ if (list->is_sound)
+ {
+ int sound = list->music;
+
+ if (sound_info[sound].loop)
+ PlaySoundLoop(sound);
+ else
+ PlaySound(sound);
+
+ DrawTextSCentered(100, FONT_TEXT_1, "The Game Background Sounds:");
+ }
+ else
+ {
+ PlayMusic(list->music);
+
+ DrawTextSCentered(100, FONT_TEXT_1, "The Game Background Music:");
+ }
+
+ if (!strEqual(list->title, UNKNOWN_NAME))
+ {
+ if (!strEqual(list->title_header, UNKNOWN_NAME))
+ DrawTextSCentered(ystart + y++ * dy, FONT_TEXT_2, list->title_header);
+
+ DrawTextFCentered(ystart + y++ * dy, FONT_TEXT_3, "\"%s\"", list->title);
+ }
+
+ if (!strEqual(list->artist, UNKNOWN_NAME))
+ {
+ if (!strEqual(list->artist_header, UNKNOWN_NAME))
+ DrawTextSCentered(ystart + y++ * dy, FONT_TEXT_2, list->artist_header);
+ else
+ DrawTextSCentered(ystart + y++ * dy, FONT_TEXT_2, "by");
+
+ DrawTextFCentered(ystart + y++ * dy, FONT_TEXT_3, "%s", list->artist);
+ }
+
+ if (!strEqual(list->album, UNKNOWN_NAME))
+ {
+ if (!strEqual(list->album_header, UNKNOWN_NAME))
+ DrawTextSCentered(ystart + y++ * dy, FONT_TEXT_2, list->album_header);
+ else
+ DrawTextSCentered(ystart + y++ * dy, FONT_TEXT_2, "from the album");
+
+ DrawTextFCentered(ystart + y++ * dy, FONT_TEXT_3, "\"%s\"", list->album);
+ }
+
+ if (!strEqual(list->year, UNKNOWN_NAME))
+ {
+ if (!strEqual(list->year_header, UNKNOWN_NAME))
+ DrawTextSCentered(ystart + y++ * dy, FONT_TEXT_2, list->year_header);
+ else
+ DrawTextSCentered(ystart + y++ * dy, FONT_TEXT_2, "from the year");
+
+ DrawTextFCentered(ystart + y++ * dy, FONT_TEXT_3, "%s", list->year);
+ }
+
+ DrawTextSCentered(ybottom, FONT_TEXT_4,
+ "Press any key or button for next page");
+ }
+
+ if (list != NULL && list->is_sound && sound_info[list->music].loop)
+ PlaySoundLoop(list->music);
+}
+
+static boolean DrawInfoScreen_CreditsScreen(int screen_nr)
+{
+ int ystart = 150, ystep = 30;
+ int ybottom = SYSIZE - 20;
+
+ ClearWindow();
+ DrawHeadline();
+
+ DrawTextSCentered(100, FONT_TEXT_1, "Credits:");
+
+ if (screen_nr == 0)
+ {
+ DrawTextSCentered(ystart + 0 * ystep, FONT_TEXT_2,
+ "Special thanks to");
+ DrawTextSCentered(ystart + 1 * ystep, FONT_TEXT_3,
+ "Peter Liepa");
+ DrawTextSCentered(ystart + 2 * ystep, FONT_TEXT_2,
+ "for creating");
+ DrawTextSCentered(ystart + 3 * ystep, FONT_TEXT_3,
+ "\"Boulder Dash\"");
+ DrawTextSCentered(ystart + 4 * ystep, FONT_TEXT_2,
+ "in the year");
+ DrawTextSCentered(ystart + 5 * ystep, FONT_TEXT_3,
+ "1984");
+ DrawTextSCentered(ystart + 6 * ystep, FONT_TEXT_2,
+ "published by");
+ DrawTextSCentered(ystart + 7 * ystep, FONT_TEXT_3,
+ "First Star Software");
+ }
+ else if (screen_nr == 1)
+ {
+ DrawTextSCentered(ystart + 0 * ystep, FONT_TEXT_2,
+ "Special thanks to");
+ DrawTextSCentered(ystart + 1 * ystep, FONT_TEXT_3,
+ "Klaus Heinz & Volker Wertich");
+ DrawTextSCentered(ystart + 2 * ystep, FONT_TEXT_2,
+ "for creating");
+ DrawTextSCentered(ystart + 3 * ystep, FONT_TEXT_3,
+ "\"Emerald Mine\"");
+ DrawTextSCentered(ystart + 4 * ystep, FONT_TEXT_2,
+ "in the year");
+ DrawTextSCentered(ystart + 5 * ystep, FONT_TEXT_3,
+ "1987");
+ DrawTextSCentered(ystart + 6 * ystep, FONT_TEXT_2,
+ "published by");
+ DrawTextSCentered(ystart + 7 * ystep, FONT_TEXT_3,
+ "Kingsoft");
+ }
+ else if (screen_nr == 2)
+ {
+ DrawTextSCentered(ystart + 0 * ystep, FONT_TEXT_2,
+ "Special thanks to");
+ DrawTextSCentered(ystart + 1 * ystep, FONT_TEXT_3,
+ "Michael Stopp & Philip Jespersen");
+ DrawTextSCentered(ystart + 2 * ystep, FONT_TEXT_2,
+ "for creating");
+ DrawTextSCentered(ystart + 3 * ystep, FONT_TEXT_3,
+ "\"Supaplex\"");
+ DrawTextSCentered(ystart + 4 * ystep, FONT_TEXT_2,
+ "in the year");
+ DrawTextSCentered(ystart + 5 * ystep, FONT_TEXT_3,
+ "1991");
+ DrawTextSCentered(ystart + 6 * ystep, FONT_TEXT_2,
+ "published by");
+ DrawTextSCentered(ystart + 7 * ystep, FONT_TEXT_3,
+ "Digital Integration");
+ }
+ else if (screen_nr == 3)
+ {
+ DrawTextSCentered(ystart + 0 * ystep, FONT_TEXT_2,
+ "Special thanks to");
+ DrawTextSCentered(ystart + 1 * ystep, FONT_TEXT_3,
+ "Hiroyuki Imabayashi");
+ DrawTextSCentered(ystart + 2 * ystep, FONT_TEXT_2,
+ "for creating");
+ DrawTextSCentered(ystart + 3 * ystep, FONT_TEXT_3,
+ "\"Sokoban\"");
+ DrawTextSCentered(ystart + 4 * ystep, FONT_TEXT_2,
+ "in the year");
+ DrawTextSCentered(ystart + 5 * ystep, FONT_TEXT_3,
+ "1982");
+ DrawTextSCentered(ystart + 6 * ystep, FONT_TEXT_2,
+ "published by");
+ DrawTextSCentered(ystart + 7 * ystep, FONT_TEXT_3,
+ "Thinking Rabbit");
+ }
+ else if (screen_nr == 4)
+ {
+ DrawTextSCentered(ystart + 0 * ystep, FONT_TEXT_2,
+ "Special thanks to");
+ DrawTextSCentered(ystart + 1 * ystep, FONT_TEXT_3,
+ "Alan Bond");
+ DrawTextSCentered(ystart + 2 * ystep, FONT_TEXT_2,
+ "and");
+ DrawTextSCentered(ystart + 3 * ystep, FONT_TEXT_3,
+ "Jürgen Bonhagen");
+ DrawTextSCentered(ystart + 4 * ystep, FONT_TEXT_2,
+ "for the continuous creation");
+ DrawTextSCentered(ystart + 5 * ystep, FONT_TEXT_2,
+ "of outstanding level sets");
+ }
+ else if (screen_nr == 5)
+ {
+ DrawTextSCentered(ystart + 0 * ystep, FONT_TEXT_2,
+ "Thanks to");
+ DrawTextSCentered(ystart + 1 * ystep, FONT_TEXT_3,
+ "Peter Elzner");
+ DrawTextSCentered(ystart + 2 * ystep, FONT_TEXT_2,
+ "for ideas and inspiration by");
+ DrawTextSCentered(ystart + 3 * ystep, FONT_TEXT_3,
+ "Diamond Caves");
+
+ DrawTextSCentered(ystart + 5 * ystep, FONT_TEXT_2,
+ "Thanks to");
+ DrawTextSCentered(ystart + 6 * ystep, FONT_TEXT_3,
+ "Steffest");
+ DrawTextSCentered(ystart + 7 * ystep, FONT_TEXT_2,
+ "for ideas and inspiration by");
+ DrawTextSCentered(ystart + 8 * ystep, FONT_TEXT_3,
+ "DX-Boulderdash");
+ }
+ else if (screen_nr == 6)
+ {
+ DrawTextSCentered(ystart + 0 * ystep, FONT_TEXT_2,
+ "Thanks to");
+ DrawTextSCentered(ystart + 1 * ystep, FONT_TEXT_3,
+ "David Tritscher");
+ DrawTextSCentered(ystart + 2 * ystep, FONT_TEXT_2,
+ "for the new Emerald Mine engine");
+ }
+ else if (screen_nr == 7)
+ {
+ DrawTextSCentered(ystart + 0 * ystep, FONT_TEXT_2,
+ "Thanks to");
+ DrawTextSCentered(ystart + 1 * ystep, FONT_TEXT_3,
+ "Guido Schulz");
+ DrawTextSCentered(ystart + 2 * ystep, FONT_TEXT_2,
+ "for the initial DOS port");
+
+ DrawTextSCentered(ystart + 4 * ystep, FONT_TEXT_2,
+ "Thanks to");
+ DrawTextSCentered(ystart + 5 * ystep, FONT_TEXT_3,
+ "Karl Hörnell");
+ DrawTextSCentered(ystart + 6 * ystep, FONT_TEXT_2,
+ "for some additional toons");
+ }
+ else if (screen_nr == 8)
+ {
+ DrawTextSCentered(ystart + 0 * ystep, FONT_TEXT_2,
+ "And not to forget:");
+ DrawTextSCentered(ystart + 1 * ystep, FONT_TEXT_2,
+ "Many thanks to");
+ DrawTextSCentered(ystart + 2 * ystep, FONT_TEXT_3,
+ "All those who contributed");
+ DrawTextSCentered(ystart + 3 * ystep, FONT_TEXT_3,
+ "levels to this game");
+ DrawTextSCentered(ystart + 4 * ystep, FONT_TEXT_3,
+ "since 1995");
+ }
+ else
+ {
+ return FALSE;
+ }
+
+ DrawTextSCentered(ybottom, FONT_TEXT_4,
+ "Press any key or button for next page");