X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=6654499152ebcf2fcd03d05b0936dc8ea6f2b288;hb=2f8bd98e428f73379a9173ccc9f7d03c885d641a;hp=51a30367e49f618bb741edd3413f628119e1bbe0;hpb=04cfb5daeff6cbceef152fc01ad5852407c0c918;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index 51a30367..66544991 100644 --- a/src/screens.c +++ b/src/screens.c @@ -257,7 +257,6 @@ struct TitleControlInfo struct TitleControlInfo title_controls[MAX_NUM_TITLE_SCREENS]; - /* main menu display and control definitions */ #define MAIN_CONTROL_NAME 0 @@ -494,6 +493,160 @@ static struct TitleMessageInfo *getTitleMessageInfo(int nr, boolean initial) return (initial ? &titlemessage_initial[nr] : &titlemessage[nr]); } +#if 0 +static int getTitleScreenGameMode(boolean initial) +{ + return (initial ? GAME_MODE_TITLE_INITIAL : GAME_MODE_TITLE); +} +#endif + +static int getTitleMessageGameMode(boolean initial) +{ + return (initial ? GAME_MODE_TITLE_INITIAL : GAME_MODE_TITLE); +} + +#if 0 +static int getTitleScreenBackground(boolean initial) +{ + return (initial ? IMG_BACKGROUND_TITLE_INITIAL : IMG_BACKGROUND_TITLE); +} +#endif + +#if 0 +static int getTitleMessageBackground(int nr, boolean initial) +{ + return (initial ? IMG_BACKGROUND_TITLE_INITIAL : IMG_BACKGROUND_TITLE); +} +#endif + +static int getTitleBackground(int nr, boolean initial, boolean is_image) +{ + int base = (is_image ? + (initial ? IMG_BACKGROUND_TITLESCREEN_INITIAL_1 : + IMG_BACKGROUND_TITLESCREEN_1) : + (initial ? IMG_BACKGROUND_TITLEMESSAGE_INITIAL_1 : + IMG_BACKGROUND_TITLEMESSAGE_1)); + int graphic_global = (initial ? IMG_BACKGROUND_TITLE_INITIAL : + IMG_BACKGROUND_TITLE); + int graphic_local = base + nr; + + if (graphic_info[graphic_local].bitmap != NULL) + return graphic_local; + + if (graphic_info[graphic_global].bitmap != NULL) + return graphic_global; + + return IMG_UNDEFINED; +} + +static int getTitleSound(struct TitleControlInfo *tci) +{ + boolean is_image = tci->is_image; + int initial = tci->initial; + int nr = tci->local_nr; + int mode = (initial ? GAME_MODE_TITLE_INITIAL : GAME_MODE_TITLE); + int base = (is_image ? + (initial ? SND_BACKGROUND_TITLESCREEN_INITIAL_1 : + SND_BACKGROUND_TITLESCREEN_1) : + (initial ? SND_BACKGROUND_TITLEMESSAGE_INITIAL_1 : + SND_BACKGROUND_TITLEMESSAGE_1)); + int sound_global = menu.sound[mode]; + int sound_local = base + nr; + +#if 0 + printf("::: %d, %d, %d: %d ['%s'], %d ['%s']\n", + nr, initial, is_image, + sound_global, getSoundListEntry(sound_global)->filename, + sound_local, getSoundListEntry(sound_local)->filename); +#endif + + if (!strEqual(getSoundListEntry(sound_local)->filename, UNDEFINED_FILENAME)) + return sound_local; + + if (!strEqual(getSoundListEntry(sound_global)->filename, UNDEFINED_FILENAME)) + return sound_global; + + return SND_UNDEFINED; +} + +static int getTitleMusic(struct TitleControlInfo *tci) +{ + boolean is_image = tci->is_image; + int initial = tci->initial; + int nr = tci->local_nr; + int mode = (initial ? GAME_MODE_TITLE_INITIAL : GAME_MODE_TITLE); + int base = (is_image ? + (initial ? MUS_BACKGROUND_TITLESCREEN_INITIAL_1 : + MUS_BACKGROUND_TITLESCREEN_1) : + (initial ? MUS_BACKGROUND_TITLEMESSAGE_INITIAL_1 : + MUS_BACKGROUND_TITLEMESSAGE_1)); + int music_global = menu.music[mode]; + int music_local = base + nr; + +#if 0 + printf("::: %d, %d, %d: %d ['%s'], %d ['%s']\n", + nr, initial, is_image, + music_global, getMusicListEntry(music_global)->filename, + music_local, getMusicListEntry(music_local)->filename); +#endif + + if (!strEqual(getMusicListEntry(music_local)->filename, UNDEFINED_FILENAME)) + return music_local; + + if (!strEqual(getMusicListEntry(music_global)->filename, UNDEFINED_FILENAME)) + return music_global; + + return MUS_UNDEFINED; +} + +static struct TitleFadingInfo getTitleFading(struct TitleControlInfo *tci) +{ + boolean is_image = tci->is_image; + int initial = tci->initial; + int nr = tci->local_nr; + struct TitleFadingInfo ti; + + if (is_image) + { + int graphic = getTitleScreenGraphic(nr, initial); + + /* initialize fading control values to default title config settings */ + ti = (initial ? title_initial_default : title_default); + + /* override default settings with image config settings, if defined */ + if (graphic_info[graphic].anim_mode != ANIM_DEFAULT) + ti.anim_mode = graphic_info[graphic].anim_mode; + if (graphic_info[graphic].fade_delay > -1) + ti.fade_delay = graphic_info[graphic].fade_delay; + if (graphic_info[graphic].post_delay > -1) + ti.post_delay = graphic_info[graphic].post_delay; + if (graphic_info[graphic].auto_delay > -1) + ti.auto_delay = graphic_info[graphic].auto_delay; + } + else + { + if (initial) + { + ti.anim_mode = titlemessage_initial[nr].anim_mode; + ti.fade_delay = titlemessage_initial[nr].fade_delay; + ti.post_delay = titlemessage_initial[nr].post_delay; + ti.auto_delay = titlemessage_initial[nr].auto_delay; + } + else + { + ti.anim_mode = titlemessage[nr].anim_mode; + ti.fade_delay = titlemessage[nr].fade_delay; + ti.post_delay = titlemessage[nr].post_delay; + ti.auto_delay = titlemessage[nr].auto_delay; + } + } + + if (ti.anim_mode == ANIM_NONE) + ti.fade_delay = ti.post_delay = 0; + + return ti; +} + static int compareTitleControlInfo(const void *object1, const void *object2) { const struct TitleControlInfo *tci1 = (struct TitleControlInfo *)object1; @@ -926,11 +1079,12 @@ void DrawTitleScreenImage(int nr, boolean initial) height = WIN_YSIZE; } + /* always display title screens centered */ dst_x = (WIN_XSIZE - width) / 2; dst_y = (WIN_YSIZE - height) / 2; SetDrawBackgroundMask(REDRAW_ALL); - SetWindowBackgroundImage(IMG_BACKGROUND_TITLE); + SetWindowBackgroundImage(getTitleBackground(nr, initial, TRUE)); ClearRectangleOnBackground(drawto, 0, 0, WIN_XSIZE, WIN_YSIZE); @@ -942,23 +1096,35 @@ void DrawTitleScreenImage(int nr, boolean initial) redraw_mask = REDRAW_ALL; /* reset fading control values to default config settings */ +#if 1 + +#if 0 + title = getTitleFading(nr, initial, TRUE); +#endif + +#else + title.fade_delay_final = title.fade_delay; title.post_delay_final = title.post_delay; title.auto_delay_final = title.auto_delay; /* override default settings with image config settings, if defined */ + if (graphic_info[graphic].anim_mode != ANIM_DEFAULT) + title.anim_mode = graphic_info[graphic].anim_mode; if (graphic_info[graphic].fade_delay > -1) - title.fade_delay_final = graphic_info[graphic].fade_delay; + title.fade_delay = graphic_info[graphic].fade_delay; if (graphic_info[graphic].post_delay > -1) - title.post_delay_final = graphic_info[graphic].post_delay; + title.post_delay = graphic_info[graphic].post_delay; if (graphic_info[graphic].auto_delay > -1) - title.auto_delay_final = graphic_info[graphic].auto_delay; + title.auto_delay = graphic_info[graphic].auto_delay; +#endif } void DrawTitleScreenMessage(int nr, boolean initial) { char *filename = getLevelSetTitleMessageFilename(nr, initial); struct TitleMessageInfo *tmi = getTitleMessageInfo(nr, initial); +#if 0 int font_nr = FONT_TEXT_1; int font_width; int font_height; @@ -968,27 +1134,48 @@ void DrawTitleScreenMessage(int nr, boolean initial) int sy = pad_y; int max_chars_per_line; int max_lines_per_screen; +#endif int last_game_status = game_status; /* save current game status */ if (filename == NULL) return; + /* force TITLE font on title message screen */ + game_status = getTitleMessageGameMode(initial); + + /* if chars set to "-1", automatically determine by text and font width */ + if (tmi->chars == -1) + tmi->chars = tmi->width / getFontWidth(tmi->font); + else + tmi->width = tmi->chars * getFontWidth(tmi->font); + + /* if lines set to "-1", automatically determine by text and font height */ + if (tmi->lines == -1) + tmi->lines = tmi->height / getFontHeight(tmi->font); + else + tmi->height = tmi->lines * getFontHeight(tmi->font); + SetDrawBackgroundMask(REDRAW_ALL); - SetWindowBackgroundImage(IMG_BACKGROUND_MESSAGE); + SetWindowBackgroundImage(getTitleBackground(nr, initial, FALSE)); ClearRectangleOnBackground(drawto, 0, 0, WIN_XSIZE, WIN_YSIZE); - /* force MESSAGE font on title message screen */ - game_status = GAME_MODE_MESSAGE; - +#if 0 font_width = getFontWidth(font_nr); font_height = getFontHeight(font_nr); max_chars_per_line = (WIN_XSIZE - 2 * pad_x) / font_width; max_lines_per_screen = (WIN_YSIZE - pad_y) / font_height - 1; +#endif +#if 1 + DrawTextFile(ALIGNED_TEXT_XPOS(tmi), ALIGNED_TEXT_YPOS(tmi), + filename, tmi->font, tmi->chars, -1, tmi->lines, -1, + tmi->autowrap, tmi->centered, tmi->parse_comments); +#else DrawTextFile(sx, sy, filename, font_nr, max_chars_per_line, -1, max_lines_per_screen, -1, tmi->autowrap, tmi->centered, - tmi->skip_comments); + tmi->parse_comments); +#endif game_status = last_game_status; /* restore current game status */ } @@ -1036,6 +1223,11 @@ void DrawMainMenuExt(int redraw_mask, boolean do_fading) int i; #endif +#if 0 + /* !!! CHANGE THIS !!! */ + title = title_default; +#endif + UnmapAllGadgets(); FadeSoundsAndMusic(); @@ -1081,6 +1273,11 @@ void DrawMainMenuExt(int redraw_mask, boolean do_fading) SetDrawtoField(DRAW_BACKBUFFER); #endif +#if 1 + if (levelset_has_changed) + fading = title_default; +#endif + #if 1 if (CheckTitleScreen(levelset_has_changed)) { @@ -1211,10 +1408,25 @@ void DrawMainMenuExt(int redraw_mask, boolean do_fading) DrawMaskedBorder(REDRAW_ALL); +#if 1 + if (!do_fading) + BackToFront(); + else if (fading.anim_mode == ANIM_CROSSFADE) + FadeCross(redraw_mask); + else + FadeIn(redraw_mask); +#else if (do_fading) FadeIn(redraw_mask); else BackToFront(); +#endif + +#if 1 + fading = menu.navigation; +#else + fading = title_default; +#endif SetMouseCursor(CURSOR_DEFAULT); @@ -1264,28 +1476,41 @@ static void gotoTopLevelDir() } #endif -#if 1 void HandleTitleScreen(int mx, int my, int dx, int dy, int button) { static unsigned long title_delay = 0; static int title_screen_nr = 0; + static int last_sound = -1, last_music = -1; boolean return_to_main_menu = FALSE; boolean use_fading_main_menu = TRUE; +#if 0 #if 1 boolean use_cross_fading = FALSE; #else boolean use_cross_fading = !show_title_initial; /* default */ +#endif #endif struct TitleControlInfo *tci; + struct TitleFadingInfo fading_next; + int sound, music; if (button == MB_MENU_INITIALIZE) { +#if 1 + boolean use_cross_fading = (fading.anim_mode == ANIM_CROSSFADE); +#endif + +#if 0 int last_game_status = game_status; /* save current game status */ +#endif title_delay = 0; title_screen_nr = 0; tci = &title_controls[title_screen_nr]; + last_sound = SND_UNDEFINED; + last_music = MUS_UNDEFINED; + #if 0 /* determine number of title screens to display (images and messages) */ InitializeTitleControls(); @@ -1298,48 +1523,62 @@ void HandleTitleScreen(int mx, int my, int dx, int dy, int button) DrawInfoScreen_NotAvailable("Title screen information:", "No title screen for this level set."); - title.auto_delay_final = -1; + /* use default settings for fading, but always disable auto delay */ + fading = title_default; + fading.auto_delay = -1; return; } FadeSoundsAndMusic(); +#if 1 + if (use_cross_fading) + FadeCrossSaveBackbuffer(); + else + FadeOut(REDRAW_ALL); +#else FadeOut(REDRAW_ALL); +#endif } - /* force TITLE music on title info screen */ - game_status = GAME_MODE_TITLE; - - PlayMenuSound(); - PlayMenuMusic(); - - game_status = last_game_status; /* restore current game status */ - if (tci->is_image) - { DrawTitleScreenImage(tci->local_nr, tci->initial); - } else - { DrawTitleScreenMessage(tci->local_nr, tci->initial); - title.fade_delay_final = title.fade_delay; - title.post_delay_final = title.post_delay; - title.auto_delay_final = -1; - } + fading = getTitleFading(tci); + +#if 1 + sound = getTitleSound(tci); + music = getTitleMusic(tci); + + if (sound != last_sound) + PlayMenuSoundExt(sound); + if (music != last_music) + PlayMenuMusicExt(music); + + last_sound = sound; + last_music = music; +#endif SetMouseCursor(CURSOR_NONE); +#if 1 + if (use_cross_fading) + FadeCross(REDRAW_ALL); + else + FadeIn(REDRAW_ALL); +#else FadeIn(REDRAW_ALL); +#endif DelayReached(&title_delay, 0); /* reset delay counter */ return; } - if (title.auto_delay_final > -1 && - DelayReached(&title_delay, title.auto_delay_final)) + if (fading.auto_delay > -1 && DelayReached(&title_delay, fading.auto_delay)) button = MB_MENU_CHOICE; if (button == MB_MENU_LEAVE) @@ -1349,7 +1588,9 @@ void HandleTitleScreen(int mx, int my, int dx, int dy, int button) } else if (button == MB_MENU_CHOICE) { - int anim_mode; +#if 1 + boolean use_cross_fading = (fading.anim_mode == ANIM_CROSSFADE); +#endif if (game_status == GAME_MODE_INFO && num_title_screens == 0) { @@ -1364,223 +1605,91 @@ void HandleTitleScreen(int mx, int my, int dx, int dy, int button) title_screen_nr++; tci = &title_controls[title_screen_nr]; - if (tci->is_image) - anim_mode = - graphic_info[getTitleScreenGraphic(tci->local_nr, - tci->initial)].anim_mode; - else - anim_mode = ANIM_FADE; /* ??? */ - - use_cross_fading = (anim_mode == ANIM_FADE ? FALSE : - anim_mode == ANIM_CROSSFADE ? TRUE : - use_cross_fading); - if (title_screen_nr < num_title_screens) { - if (!use_cross_fading) - FadeOut(REDRAW_ALL); - - if (use_cross_fading) - FadeCrossSaveBackbuffer(); +#if 1 +#if 0 + boolean use_cross_fading = (fading.anim_mode == ANIM_CROSSFADE); +#endif +#else + int anim_mode; if (tci->is_image) - DrawTitleScreenImage(tci->local_nr, tci->initial); + anim_mode = + graphic_info[getTitleScreenGraphic(tci->local_nr, + tci->initial)].anim_mode; else - DrawTitleScreenMessage(tci->local_nr, tci->initial); + anim_mode = ANIM_FADE; /* ??? */ - if (use_cross_fading) - FadeCross(REDRAW_ALL); - else - FadeIn(REDRAW_ALL); - - DelayReached(&title_delay, 0); /* reset delay counter */ - } - else - { - FadeSoundsAndMusic(); - - FadeOut(REDRAW_ALL); - - return_to_main_menu = TRUE; - } - } - - if (return_to_main_menu) - { - RedrawBackground(); - - SetMouseCursor(CURSOR_DEFAULT); - - if (game_status == GAME_MODE_INFO) - { - OpenDoor(DOOR_CLOSE_1 | DOOR_CLOSE_2 | DOOR_NO_DELAY | DOOR_FORCE_REDRAW); - - info_mode = INFO_MODE_MAIN; - DrawInfoScreenExt(REDRAW_ALL, use_fading_main_menu); - } - else /* default: return to main menu */ - { - OpenDoor(DOOR_CLOSE_1 | DOOR_OPEN_2 | DOOR_NO_DELAY | DOOR_FORCE_REDRAW); - - game_status = GAME_MODE_MAIN; - DrawMainMenuExt(REDRAW_ALL, use_fading_main_menu); - } - } -} - -#else - -void HandleTitleScreen(int mx, int my, int dx, int dy, int button) -{ - static unsigned long title_delay = 0; - static int title_nr = 0; - static boolean showing_message = FALSE; - char *filename = getLevelSetMessageFilename(); - boolean return_to_main_menu = FALSE; - boolean use_fading_main_menu = TRUE; - boolean use_cross_fading = !show_title_initial; /* default */ - boolean no_title_info = (graphic_info[IMG_TITLESCREEN_1].bitmap == NULL && - getLevelSetMessageFilename(1, FALSE) == NULL); - - if (button == MB_MENU_INITIALIZE) - { - int last_game_status = game_status; /* save current game status */ - - title_delay = 0; - title_nr = 0; - showing_message = FALSE; - - if (show_title_initial && - graphic_info[IMG_TITLESCREEN_INITIAL_1].bitmap == NULL && - getLevelSetMessageFilename(1, TRUE) == NULL) - show_title_initial = FALSE; - - if (game_status == GAME_MODE_INFO) - { - if (no_title_info) - { - DrawInfoScreen_NotAvailable("Title screen information:", - "No title screen for this level set."); - - title.auto_delay_final = -1; - - return; - } - - FadeSoundsAndMusic(); - - FadeOut(REDRAW_ALL); - } - - /* force TITLE music on title info screen */ - game_status = GAME_MODE_TITLE; - - PlayMenuSound(); - PlayMenuMusic(); - - game_status = last_game_status; /* restore current game status */ - - if (graphic_info[getTitleScreenGraphic(0, show_title_initial)].bitmap != NULL) - { - DrawTitleScreenImage(title_nr, show_title_initial); - } - else - { - DrawTitleScreenMessage(filename); - - showing_message = TRUE; - - title.fade_delay_final = title.fade_delay; - title.post_delay_final = title.post_delay; - title.auto_delay_final = -1; - } - - FadeIn(REDRAW_ALL); - - DelayReached(&title_delay, 0); /* reset delay counter */ - - return; - } - - if (title.auto_delay_final > -1 && - DelayReached(&title_delay, title.auto_delay_final)) - button = MB_MENU_CHOICE; - - if (button == MB_MENU_LEAVE) - { - return_to_main_menu = TRUE; - use_fading_main_menu = FALSE; - } - else if (button == MB_MENU_CHOICE) - { - int anim_mode; - - if (game_status == GAME_MODE_INFO && no_title_info) - { - FadeOut(REDRAW_FIELD); - - info_mode = INFO_MODE_MAIN; - DrawAndFadeInInfoScreen(REDRAW_FIELD); + use_cross_fading = (anim_mode == ANIM_FADE ? FALSE : + anim_mode == ANIM_CROSSFADE ? TRUE : + use_cross_fading); +#endif - return; - } + sound = getTitleSound(tci); + music = getTitleMusic(tci); - title_nr++; + if (sound == SND_UNDEFINED || sound != last_sound) + FadeSounds(); + if (music == MUS_UNDEFINED || music != last_music) + FadeMusic(); - if (show_title_initial && - (title_nr >= MAX_NUM_TITLE_IMAGES || - graphic_info[IMG_TITLESCREEN_INITIAL_1 + title_nr].bitmap == NULL)) - { - show_title_initial = FALSE; + if (use_cross_fading) + FadeCrossSaveBackbuffer(); + else + FadeOut(REDRAW_ALL); - title_nr = 0; /* restart with title screens for current level set */ - } + if (tci->is_image) + DrawTitleScreenImage(tci->local_nr, tci->initial); + else + DrawTitleScreenMessage(tci->local_nr, tci->initial); - anim_mode = graphic_info[getTitleScreenGraphic(title_nr, show_title_initial)].anim_mode; + fading_next = getTitleFading(tci); - use_cross_fading = (anim_mode == ANIM_FADE ? FALSE : - anim_mode == ANIM_CROSSFADE ? TRUE : - use_cross_fading); +#if 1 + sound = getTitleSound(tci); + music = getTitleMusic(tci); - if (!use_cross_fading) - FadeOut(REDRAW_ALL); + if (sound != last_sound) + PlayMenuSoundExt(sound); + if (music != last_music) + PlayMenuMusicExt(music); - if (title_nr < MAX_NUM_TITLE_IMAGES && - graphic_info[getTitleScreenGraphic(title_nr, show_title_initial)].bitmap != NULL) - { - if (use_cross_fading) - FadeCrossSaveBackbuffer(); + last_sound = sound; + last_music = music; +#endif - DrawTitleScreenImage(title_nr, show_title_initial); + /* last screen already faded out, next screen has no animation */ + if (!use_cross_fading && fading_next.anim_mode == ANIM_NONE) + fading = fading_next; if (use_cross_fading) FadeCross(REDRAW_ALL); else FadeIn(REDRAW_ALL); - DelayReached(&title_delay, 0); /* reset delay counter */ - } - else if (!showing_message && filename != NULL) - { - if (use_cross_fading) - FadeCrossSaveBackbuffer(); - - DrawTitleScreenMessage(filename); - - if (use_cross_fading) - FadeCross(REDRAW_ALL); - else - FadeIn(REDRAW_ALL); + fading = fading_next; DelayReached(&title_delay, 0); /* reset delay counter */ - - showing_message = TRUE; } else { FadeSoundsAndMusic(); +#if 1 + { +#if 0 + boolean use_cross_fading = (fading.anim_mode == ANIM_CROSSFADE); +#endif + + if (use_cross_fading) + FadeCrossSaveBackbuffer(); + else + FadeOut(REDRAW_ALL); + } +#else FadeOut(REDRAW_ALL); +#endif return_to_main_menu = TRUE; } @@ -1588,10 +1697,10 @@ void HandleTitleScreen(int mx, int my, int dx, int dy, int button) if (return_to_main_menu) { - show_title_initial = FALSE; - RedrawBackground(); + SetMouseCursor(CURSOR_DEFAULT); + if (game_status == GAME_MODE_INFO) { OpenDoor(DOOR_CLOSE_1 | DOOR_CLOSE_2 | DOOR_NO_DELAY | DOOR_FORCE_REDRAW); @@ -1608,7 +1717,6 @@ void HandleTitleScreen(int mx, int my, int dx, int dy, int button) } } } -#endif void HandleMainMenu_SelectLevel(int step, int direction) { @@ -2051,10 +2159,19 @@ static void DrawInfoScreen_Main(int redraw_mask, boolean do_fading) DrawMaskedBorder(REDRAW_ALL); +#if 1 + if (!do_fading) + BackToFront(); + else if (fading.anim_mode == ANIM_CROSSFADE) + FadeCross(redraw_mask); + else + FadeIn(redraw_mask); +#else if (do_fading) FadeIn(redraw_mask); else BackToFront(); +#endif InitAnimation(); } @@ -3096,65 +3213,19 @@ void HandleInfoScreen_Version(int button) void DrawInfoScreen_LevelSet() { struct TitleMessageInfo *tmi = &readme; - int ystart1 = mSY - SY + 100; - int ystart2 = mSY - SY + 150; - int ybottom = mSY - SY + SYSIZE - 20; char *filename = getLevelSetInfoFilename(); -#if 1 -#if 1 - int font_nr = tmi->font; -#else - int font_nr = FONT_INFO_LEVELSET; -#endif -#else - int font_nr = FONT_LEVEL_NUMBER; -#endif -#if 0 - int font_width = getFontWidth(font_nr); - int font_height = getFontHeight(font_nr); -#endif -#if 1 -#if 0 - int sx = mSX + ALIGNED_TEXT_XPOS(tmi); - int sy = mSY + ALIGNED_TEXT_YPOS(tmi); -#endif -#if 0 - int width = tmi->width; - int height = tmi->height; -#endif -#else - int pad_x = 32; - int pad_y = 150; - int sx = mSX + pad_x; - int sy = mSY + pad_y; - int width = SXSIZE - 2 * pad_x; - int height = SYSIZE - pad_y; -#endif -#if 1 -#if 0 - int max_chars = tmi->chars; - int max_lines = tmi->lines; -#endif -#else - int max_chars_per_line = width / font_width; -#if 1 - int max_lines_per_screen = height / font_height; -#else - int max_lines_per_screen = height / font_height - 1; /* minus footer line */ -#endif -#endif /* if chars set to "-1", automatically determine by text and font width */ if (tmi->chars == -1) - tmi->chars = tmi->width / getFontWidth(font_nr); + tmi->chars = tmi->width / getFontWidth(tmi->font); else - tmi->width = tmi->chars * getFontWidth(font_nr); + tmi->width = tmi->chars * getFontWidth(tmi->font); /* if lines set to "-1", automatically determine by text and font height */ if (tmi->lines == -1) - tmi->lines = tmi->height / getFontHeight(font_nr); + tmi->lines = tmi->height / getFontHeight(tmi->font); else - tmi->height = tmi->lines * getFontHeight(font_nr); + tmi->height = tmi->lines * getFontHeight(tmi->font); SetMainBackgroundImageIfDefined(IMG_BACKGROUND_INFO_LEVELSET); @@ -3163,18 +3234,18 @@ void DrawInfoScreen_LevelSet() ClearWindow(); DrawHeadline(); - DrawTextSCentered(ystart1, FONT_TEXT_1, "Level Set Information:"); - - DrawTextSCentered(ybottom, FONT_TEXT_4, - "Press any key or button for info menu"); + DrawTextCentered(mSY + 100, FONT_TEXT_1, "Level Set Information:"); if (filename != NULL) DrawTextFile(mSX + ALIGNED_TEXT_XPOS(tmi), mSY + ALIGNED_TEXT_YPOS(tmi), - filename, font_nr, tmi->chars, -1, tmi->lines, -1, - tmi->autowrap, tmi->centered, tmi->skip_comments); + filename, tmi->font, tmi->chars, -1, tmi->lines, -1, + tmi->autowrap, tmi->centered, tmi->parse_comments); else - DrawTextSCentered(ystart2, FONT_TEXT_2, - "No information for this level set."); + DrawTextCentered(mSY + ALIGNED_TEXT_YPOS(tmi), FONT_TEXT_2, + "No information for this level set."); + + DrawTextCentered(mSY + SYSIZE - 20, FONT_TEXT_4, + "Press any key or button for info menu"); FadeIn(REDRAW_FIELD); } @@ -3243,6 +3314,8 @@ void DrawAndFadeInInfoScreen(int redraw_mask) void DrawInfoScreen() { + fading = menu.destination; + DrawInfoScreenExt(REDRAW_ALL, FALSE); }