X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=464840b6e078a7575f84d36c1958fcb963b4a55d;hb=HEAD;hp=dee3b79cd4dcc3e8662416489131cdfbcd9e5bf6;hpb=84c888496c5bf6f9e649882d77400c47634e177a;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index dee3b79c..fc344373 100644 --- a/src/screens.c +++ b/src/screens.c @@ -173,14 +173,18 @@ #define MENU_INFO_FONT_FOOT FONT_TEXT_4 #define MENU_INFO_SPACE_HEAD (menu.headline2_spacing_info[info_mode]) #define MENU_SCREEN_INFO_SPACE_LEFT (menu.left_spacing_info[info_mode]) +#define MENU_SCREEN_INFO_SPACE_MIDDLE (menu.middle_spacing_info[info_mode]) #define MENU_SCREEN_INFO_SPACE_RIGHT (menu.right_spacing_info[info_mode]) #define MENU_SCREEN_INFO_SPACE_TOP (menu.top_spacing_info[info_mode]) #define MENU_SCREEN_INFO_SPACE_BOTTOM (menu.bottom_spacing_info[info_mode]) #define MENU_SCREEN_INFO_SPACE_LINE (menu.line_spacing_info[info_mode]) #define MENU_SCREEN_INFO_SPACE_EXTRA (menu.extra_spacing_info[info_mode]) +#define MENU_SCREEN_INFO_TILE_SIZE_RAW (menu.tile_size_info[info_mode]) +#define MENU_SCREEN_INFO_TILE_SIZE (MENU_SCREEN_INFO_TILE_SIZE_RAW > 0 ? \ + MENU_SCREEN_INFO_TILE_SIZE_RAW : TILEY) #define MENU_SCREEN_INFO_ENTRY_SIZE_RAW (menu.list_entry_size_info[info_mode]) #define MENU_SCREEN_INFO_ENTRY_SIZE (MAX(MENU_SCREEN_INFO_ENTRY_SIZE_RAW, \ - TILEY)) + MENU_SCREEN_INFO_TILE_SIZE)) #define MENU_SCREEN_INFO_YSTART MENU_SCREEN_INFO_SPACE_TOP #define MENU_SCREEN_INFO_YSTEP (MENU_SCREEN_INFO_ENTRY_SIZE + \ MENU_SCREEN_INFO_SPACE_EXTRA) @@ -1788,6 +1792,9 @@ void DrawMainMenu(void) // store valid level series information leveldir_last_valid = leveldir_current; + // store first level of this level set for "level_nr" style animations + SetAnimationFirstLevel(leveldir_current->first_level); + // needed if last screen (level choice) changed graphics, sounds or music ReloadCustomArtwork(0); @@ -3120,7 +3127,8 @@ void DrawInfoScreen_HelpAnim(int start, int max_anims, boolean init) int ybottom = mSY - SY + MENU_SCREEN_INFO_YBOTTOM; int ystep = MENU_SCREEN_INFO_YSTEP; int row_height = MENU_SCREEN_INFO_ENTRY_SIZE; - int yoffset = (row_height - TILEY) / 2; + int tilesize = MENU_SCREEN_INFO_TILE_SIZE; + int yoffset = (row_height - tilesize) / 2; int element, action, direction; int graphic; int delay; @@ -3206,9 +3214,9 @@ void DrawInfoScreen_HelpAnim(int start, int max_anims, boolean init) j++; - ClearRectangleOnBackground(drawto, xstart, ystart_pos, TILEX, TILEY); - DrawFixedGraphicAnimationExt(drawto, xstart, ystart_pos, - graphic, sync_frame, USE_MASKING); + ClearRectangleOnBackground(drawto, xstart, ystart_pos, tilesize, tilesize); + DrawSizedGraphicAnimationExt(drawto, xstart, ystart_pos, + graphic, sync_frame, tilesize, USE_MASKING); if (init) DrawInfoScreen_HelpText(element, action, direction, ypos); @@ -3242,13 +3250,17 @@ void DrawInfoScreen_HelpText(int element, int action, int direction, int ypos) int font_width = getFontWidth(font_nr); int font_height = getFontHeight(font_nr); int line_spacing = MENU_SCREEN_INFO_SPACE_LINE; + int left_spacing = MENU_SCREEN_INFO_SPACE_LEFT; + int middle_spacing = MENU_SCREEN_INFO_SPACE_MIDDLE; + int right_spacing = MENU_SCREEN_INFO_SPACE_RIGHT; int line_height = font_height + line_spacing; int row_height = MENU_SCREEN_INFO_ENTRY_SIZE; - int xstart = mSX + MENU_SCREEN_INFO_SPACE_LEFT + TILEX + MINI_TILEX; + int tilesize = MENU_SCREEN_INFO_TILE_SIZE; + int xstart = mSX + left_spacing + tilesize + middle_spacing; int ystart = mSY + MENU_SCREEN_INFO_YSTART + getHeadlineSpacing(); int ystep = MENU_SCREEN_INFO_YSTEP; int pad_left = xstart - SX; - int pad_right = MENU_SCREEN_INFO_SPACE_RIGHT; + int pad_right = right_spacing; int max_chars_per_line = (SXSIZE - pad_left - pad_right) / font_width; int max_lines_per_text = (row_height + line_spacing) / line_height; char *text = NULL; @@ -3586,6 +3598,51 @@ void HandleInfoScreen_Music(int dx, int dy, int button) ystart += ystep_head; } + if (!strEqual(list->played, UNKNOWN_NAME)) + { + if (!strEqual(list->played_header, UNKNOWN_NAME)) + DrawTextSCentered(ystart, font_head, list->played_header); + else + DrawTextSCentered(ystart, font_head, "played in"); + + ystart += ystep_head; + + DrawTextFCentered(ystart, font_text, "%s", list->played); + ystart += ystep_head; + } + else if (!list->is_sound) + { + int music_level_nr = -1; + int i; + + // check if this music is configured for a certain level + for (i = leveldir_current->first_level; + i <= leveldir_current->last_level; i++) + { + // (special case: "list->music" may be negative for unconfigured music) + if (levelset.music[i] != MUS_UNDEFINED && + levelset.music[i] == list->music) + { + music_level_nr = i; + + break; + } + } + + if (music_level_nr != -1) + { + if (!strEqual(list->played_header, UNKNOWN_NAME)) + DrawTextSCentered(ystart, font_head, list->played_header); + else + DrawTextSCentered(ystart, font_head, "played in"); + + ystart += ystep_head; + + DrawTextFCentered(ystart, font_text, "level %03d", music_level_nr); + ystart += ystep_head; + } + } + DrawTextSCentered(ybottom, font_foot, TEXT_NEXT_PAGE); if (button != MB_MENU_INITIALIZE) @@ -5930,7 +5987,7 @@ static void execSetupGame_setScrollDelays(void) // set current scroll delay value to configured scroll delay value scroll_delay_current = - getTreeInfoFromIdentifier(scroll_delays,i_to_a(setup.scroll_delay_value)); + getTreeInfoFromIdentifier(scroll_delays, i_to_a(setup.scroll_delay_value)); // if that fails, set current scroll delay to reliable default value if (scroll_delay_current == NULL) @@ -6490,7 +6547,7 @@ static void execSetupSound(void) // set current volume value to configured volume value volume_simple_current = - getTreeInfoFromIdentifier(volumes_simple,i_to_a(setup.volume_simple)); + getTreeInfoFromIdentifier(volumes_simple, i_to_a(setup.volume_simple)); // if that fails, set current volume to reliable default value if (volume_simple_current == NULL) @@ -6558,7 +6615,7 @@ static void execSetupSound(void) // set current volume value to configured volume value volume_loops_current = - getTreeInfoFromIdentifier(volumes_loops,i_to_a(setup.volume_loops)); + getTreeInfoFromIdentifier(volumes_loops, i_to_a(setup.volume_loops)); // if that fails, set current volume to reliable default value if (volume_loops_current == NULL) @@ -6626,7 +6683,7 @@ static void execSetupSound(void) // set current volume value to configured volume value volume_music_current = - getTreeInfoFromIdentifier(volumes_music,i_to_a(setup.volume_music)); + getTreeInfoFromIdentifier(volumes_music, i_to_a(setup.volume_music)); // if that fails, set current volume to reliable default value if (volume_music_current == NULL) @@ -7491,7 +7548,7 @@ static struct TokenInfo setup_info_graphics[] = { TYPE_SWITCH, &setup.quick_switch, "Quick Player Focus Switch:" }, { TYPE_SWITCH, &setup.quick_doors, "Quick Menu Doors:" }, { TYPE_SWITCH, &setup.show_titlescreen,"Show Title Screens:" }, - { TYPE_SWITCH, &setup.toons, "Show Menu Animations:" }, + { TYPE_SWITCH, &setup.toons, "Show Toons:" }, { TYPE_SWITCH, &setup.small_game_graphics, "Small Game Graphics:" }, { TYPE_YES_NO_AUTO, &setup.debug.xsn_mode, debug_xsn_mode }, { TYPE_EMPTY, NULL, "" }, @@ -10369,47 +10426,47 @@ static void HandleScreenGadgets(struct GadgetInfo *gi) case SCREEN_CTRL_ID_SCROLL_UP: if (game_status == GAME_MODE_NAMES) - HandleChoosePlayerName(0,0, 0, -1 * SCROLL_LINE, MB_MENU_MARK); + HandleChoosePlayerName(0, 0, 0, -1 * SCROLL_LINE, MB_MENU_MARK); else if (game_status == GAME_MODE_LEVELS) - HandleChooseLevelSet(0,0, 0, -1 * SCROLL_LINE, MB_MENU_MARK); + HandleChooseLevelSet(0, 0, 0, -1 * SCROLL_LINE, MB_MENU_MARK); else if (game_status == GAME_MODE_LEVELNR) - HandleChooseLevelNr(0,0, 0, -1 * SCROLL_LINE, MB_MENU_MARK); + HandleChooseLevelNr(0, 0, 0, -1 * SCROLL_LINE, MB_MENU_MARK); else if (game_status == GAME_MODE_SETUP) - HandleSetupScreen(0,0, 0, -1 * SCROLL_LINE, MB_MENU_MARK); + HandleSetupScreen(0, 0, 0, -1 * SCROLL_LINE, MB_MENU_MARK); else if (game_status == GAME_MODE_INFO) - HandleInfoScreen(0,0, 0, -1 * SCROLL_LINE, MB_MENU_MARK); + HandleInfoScreen(0, 0, 0, -1 * SCROLL_LINE, MB_MENU_MARK); else if (game_status == GAME_MODE_SCORES) - HandleHallOfFame(0,0, 0, -1 * SCROLL_LINE, MB_MENU_MARK); + HandleHallOfFame(0, 0, 0, -1 * SCROLL_LINE, MB_MENU_MARK); break; case SCREEN_CTRL_ID_SCROLL_DOWN: if (game_status == GAME_MODE_NAMES) - HandleChoosePlayerName(0,0, 0, +1 * SCROLL_LINE, MB_MENU_MARK); + HandleChoosePlayerName(0, 0, 0, +1 * SCROLL_LINE, MB_MENU_MARK); else if (game_status == GAME_MODE_LEVELS) - HandleChooseLevelSet(0,0, 0, +1 * SCROLL_LINE, MB_MENU_MARK); + HandleChooseLevelSet(0, 0, 0, +1 * SCROLL_LINE, MB_MENU_MARK); else if (game_status == GAME_MODE_LEVELNR) - HandleChooseLevelNr(0,0, 0, +1 * SCROLL_LINE, MB_MENU_MARK); + HandleChooseLevelNr(0, 0, 0, +1 * SCROLL_LINE, MB_MENU_MARK); else if (game_status == GAME_MODE_SETUP) - HandleSetupScreen(0,0, 0, +1 * SCROLL_LINE, MB_MENU_MARK); + HandleSetupScreen(0, 0, 0, +1 * SCROLL_LINE, MB_MENU_MARK); else if (game_status == GAME_MODE_INFO) - HandleInfoScreen(0,0, 0, +1 * SCROLL_LINE, MB_MENU_MARK); + HandleInfoScreen(0, 0, 0, +1 * SCROLL_LINE, MB_MENU_MARK); else if (game_status == GAME_MODE_SCORES) - HandleHallOfFame(0,0, 0, +1 * SCROLL_LINE, MB_MENU_MARK); + HandleHallOfFame(0, 0, 0, +1 * SCROLL_LINE, MB_MENU_MARK); break; case SCREEN_CTRL_ID_SCROLL_VERTICAL: if (game_status == GAME_MODE_NAMES) - HandleChoosePlayerName(0,0,999,gi->event.item_position,MB_MENU_INITIALIZE); + HandleChoosePlayerName(0, 0, 999, gi->event.item_position, MB_MENU_INITIALIZE); else if (game_status == GAME_MODE_LEVELS) - HandleChooseLevelSet(0,0,999,gi->event.item_position,MB_MENU_INITIALIZE); + HandleChooseLevelSet(0, 0, 999, gi->event.item_position, MB_MENU_INITIALIZE); else if (game_status == GAME_MODE_LEVELNR) - HandleChooseLevelNr(0,0,999,gi->event.item_position,MB_MENU_INITIALIZE); + HandleChooseLevelNr(0, 0, 999, gi->event.item_position, MB_MENU_INITIALIZE); else if (game_status == GAME_MODE_SETUP) - HandleSetupScreen(0,0, 999,gi->event.item_position,MB_MENU_INITIALIZE); + HandleSetupScreen(0, 0, 999, gi->event.item_position, MB_MENU_INITIALIZE); else if (game_status == GAME_MODE_INFO) - HandleInfoScreen(0,0, 999,gi->event.item_position,MB_MENU_INITIALIZE); + HandleInfoScreen(0, 0, 999, gi->event.item_position, MB_MENU_INITIALIZE); else if (game_status == GAME_MODE_SCORES) - HandleHallOfFame(0,0, 999,gi->event.item_position,MB_MENU_INITIALIZE); + HandleHallOfFame(0, 0, 999, gi->event.item_position, MB_MENU_INITIALIZE); break; case SCREEN_CTRL_ID_NETWORK_SERVER: