X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=97eabb96539c21c9390ff67fbe21acff3c85f68c;hb=3607ef8e4000754063935d908053d564de92c0a2;hp=d096d3bb5ec12162b1e7d7a4c0fcd5b4d1d3226f;hpb=bc8503fee1600305a9e915da07d5f2c29d9890b6;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index d096d3bb..97eabb96 100644 --- a/src/screens.c +++ b/src/screens.c @@ -155,13 +155,13 @@ static void PlaySound_Menu_Continue(int sound) void DrawHeadline() { - int font1_width = getFontWidth(FONT_TITLE_1); - int font2_width = getFontWidth(FONT_TITLE_2); - int x1 = SX + (SXSIZE - strlen(PROGRAM_TITLE_STRING) * font1_width) / 2; - int x2 = SX + (SXSIZE - strlen(WINDOW_SUBTITLE_STRING) * font2_width) / 2; + int text1_width = getTextWidth(PROGRAM_TITLE_STRING, FONT_TITLE_1); + int text2_width = getTextWidth(PROGRAM_COPYRIGHT_STRING, FONT_TITLE_2); + int x1 = SX + (SXSIZE - text1_width) / 2; + int x2 = SX + (SXSIZE - text2_width) / 2; - DrawText(x1, SY + 8, PROGRAM_TITLE_STRING, FONT_TITLE_1); - DrawText(x2, SY + 46, WINDOW_SUBTITLE_STRING, FONT_TITLE_2); + DrawText(x1, SY + 8, PROGRAM_TITLE_STRING, FONT_TITLE_1); + DrawText(x2, SY + 46, PROGRAM_COPYRIGHT_STRING, FONT_TITLE_2); } static void ToggleFullscreenIfNeeded() @@ -192,15 +192,12 @@ void DrawMainMenu() { static LevelDirTree *leveldir_last_valid = NULL; char *name_text = (!options.network && setup.team_mode ? "Team:" : "Name:"); - int font_width = getFontWidth(FONT_MENU_1); - int name_width = font_width * strlen("Name:"); - int level_width = font_width * strlen("Level:"); + int name_width = getTextWidth("Name:", FONT_MENU_1); + int level_width = getTextWidth("Level:", FONT_MENU_1); int i; - printf("::: CHECK A: '%s'\n", leveldir_current->graphics_path); - UnmapAllGadgets(); - FadeSounds(); + FadeSoundsAndMusic(); KeyboardAutoRepeatOn(); ActivateJoystick(); @@ -215,6 +212,7 @@ void DrawMainMenu() { game_status = GAME_MODE_EDITOR; DrawLevelEd(); + return; } @@ -224,24 +222,16 @@ void DrawMainMenu() /* needed if last screen was the setup screen and fullscreen state changed */ ToggleFullscreenIfNeeded(); - printf("::: CHECK B.1: '%s'\n", leveldir_current->graphics_path); - -#if 1 /* leveldir_current may be invalid (level group, parent link) */ if (!validLevelSeries(leveldir_current)) leveldir_current = getFirstValidTreeInfoEntry(leveldir_last_valid); /* store valid level series information */ leveldir_last_valid = leveldir_current; -#endif - - printf("::: CHECK B.2: '%s'\n", leveldir_current->graphics_path); /* needed if last screen (level choice) changed graphics, sounds or music */ ReloadCustomArtwork(); - printf("::: CHECK C: '%s'\n", leveldir_current->graphics_path); - #ifdef TARGET_SDL SetDrawtoField(DRAW_BACKBUFFER); #endif @@ -249,15 +239,6 @@ void DrawMainMenu() /* map gadgets for main menu screen */ MapTapeButtons(); -#if 0 - /* leveldir_current may be invalid (level group, parent link) */ - if (!validLevelSeries(leveldir_current)) - leveldir_current = getFirstValidTreeInfoEntry(leveldir_last_valid); - - /* store valid level series information */ - leveldir_last_valid = leveldir_current; -#endif - /* level_nr may have been set to value over handicap with level editor */ if (setup.handicap && level_nr > leveldir_current->handicap_level) level_nr = leveldir_current->handicap_level; @@ -325,8 +306,6 @@ static void gotoTopLevelDir() /* move upwards to top level directory */ while (leveldir_current->node_parent) { - printf("::: ---> '%s'\n", leveldir_current->graphics_path); - /* write a "path" into level tree for easy navigation to last level */ if (leveldir_current->node_parent->node_group->cl_first == -1) { @@ -348,16 +327,12 @@ static void gotoTopLevelDir() } leveldir_current = leveldir_current->node_parent; - - printf("::: +++> '%s'\n", leveldir_current->graphics_path); } - - printf("::: ===> '%s'\n", leveldir_current->graphics_path); } void HandleMainMenu(int mx, int my, int dx, int dy, int button) { - static int choice = 0; + static int choice = 5; int x = 0; int y = choice; @@ -443,12 +418,8 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) SaveLevelSetup_LastSeries(); SaveLevelSetup_SeriesInfo(); - printf("::: CHECK C.1: '%s'\n", leveldir_current->graphics_path); - gotoTopLevelDir(); - printf("::: CHECK C.2: '%s'\n", leveldir_current->graphics_path); - DrawChooseLevel(); } } @@ -502,8 +473,6 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) } } - BackToFront(); - out: if (game_status == GAME_MODE_MAIN) @@ -511,6 +480,8 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) DrawMicroLevel(MICROLEV_XPOS, MICROLEV_YPOS, FALSE); DoAnimation(); } + + BackToFront(); } @@ -990,7 +961,7 @@ void DrawHelpScreenMusicText(int num) int ystart = 150, ystep = 30; int ybottom = SYSIZE - 20; - FadeSounds(); + FadeSoundsAndMusic(); ClearWindow(); DrawHeadline(); @@ -1019,7 +990,7 @@ void DrawHelpScreenCreditsText() int ystart = 150, ystep = 30; int ybottom = SYSIZE - 20; - FadeSounds(); + FadeSoundsAndMusic(); ClearWindow(); DrawHeadline(); @@ -1092,11 +1063,16 @@ void DrawHelpScreen() FadeToFront(); InitAnimation(); +#if 1 + PlaySound(SND_BACKGROUND_INFO); + PlayMusic(MUS_BACKGROUND_INFO); +#else #if 0 PlaySoundLoop(SND_BACKGROUND_INFO); #else PlaySound_Menu_Start(SND_BACKGROUND_INFO); #endif +#endif } void HandleHelpScreen(int button) @@ -1139,7 +1115,7 @@ void HandleHelpScreen(int button) } else { - FadeSounds(); + FadeSoundsAndMusic(); game_status = GAME_MODE_MAIN; DrawMainMenu(); @@ -1156,15 +1132,16 @@ void HandleHelpScreen(int button) /* !!! workaround for playing "music" that is really a sound loop (and must therefore periodically be reactivated with the current sound engine !!! */ +#if 0 #if 0 PlaySoundLoop(SND_BACKGROUND_INFO); #else PlaySound_Menu_Continue(SND_BACKGROUND_INFO); #endif - - DoAnimation(); +#endif } + DoAnimation(); BackToFront(); } @@ -1271,9 +1248,6 @@ static void drawChooseTreeList(int first_entry, int num_page_entries, int yoffset = (ti->type == TREE_TYPE_LEVEL_DIR ? 0 : yoffset_setup); int last_game_status = game_status; /* save current game status */ - DrawBackground(SX, SY, SXSIZE - 32, SYSIZE); - redraw_mask |= REDRAW_FIELD; - title_string = (ti->type == TREE_TYPE_LEVEL_DIR ? "Level Directories" : ti->type == TREE_TYPE_GRAPHICS_DIR ? "Custom Graphics" : @@ -1285,6 +1259,11 @@ static void drawChooseTreeList(int first_entry, int num_page_entries, /* force LEVELS font on artwork setup screen */ game_status = GAME_MODE_LEVELS; + /* clear tree list area, but not title or scrollbar */ + DrawBackground(mSX, mSY + MENU_SCREEN_START_YPOS * 32, + SXSIZE - 32 + menu.scrollbar_xoffset, + MAX_MENU_ENTRIES_ON_SCREEN * 32); + for(i=0; i 0) @@ -1674,27 +1665,24 @@ void HandleHallOfFame(int mx, int my, int dx, int dy, int button) first_entry = MAX(0, MAX_SCORE_ENTRIES - NUM_MENU_ENTRIES_ON_SCREEN); drawHallOfFameList(first_entry, highlight_position); - - return; } } - - if (button_released) + else if (button_released) { FadeSound(SND_BACKGROUND_SCORES); game_status = GAME_MODE_MAIN; DrawMainMenu(); } - BackToFront(); - - if (game_status == GAME_MODE_SCORES) - { - DoAnimation(); +#if 0 #if 1 + if (game_status == GAME_MODE_SCORES) PlaySound_Menu_Continue(SND_BACKGROUND_SCORES); #endif - } +#endif + + DoAnimation(); + BackToFront(); } @@ -1837,6 +1825,8 @@ static struct TokenInfo setup_info_editor[] = { TYPE_SWITCH, &setup.editor.el_dx_boulderdash,"DX Boulderd.:" }, { TYPE_SWITCH, &setup.editor.el_chars, "Characters:" }, { TYPE_SWITCH, &setup.editor.el_custom, "Custom:" }, + { TYPE_SWITCH, &setup.editor.el_custom_more, "More Custom:" }, + { TYPE_SWITCH, &setup.editor.el_headlines, "Headlines:" }, { TYPE_EMPTY, NULL, "" }, { TYPE_LEAVE_MENU, execSetupMain, "Back" }, { 0, NULL, NULL } @@ -1860,8 +1850,6 @@ static struct TokenInfo setup_info_graphics[] = static struct TokenInfo setup_info_sound[] = { - { TYPE_SWITCH, &setup.sound, "Sound:", }, - { TYPE_EMPTY, NULL, "" }, { TYPE_SWITCH, &setup.sound_simple, "Simple Sound:" }, { TYPE_SWITCH, &setup.sound_loops, "Sound Loops:" }, { TYPE_SWITCH, &setup.sound_music, "Game Music:" }, @@ -1940,8 +1928,8 @@ static Key getSetupKey() } } - BackToFront(); DoAnimation(); + BackToFront(); /* don't eat all CPU time */ Delay(10); @@ -1955,23 +1943,25 @@ static void drawSetupValue(int pos) int xpos = MENU_SCREEN_VALUE_XPOS; int ypos = MENU_SCREEN_START_YPOS + pos; int font_nr = FONT_VALUE_1; - char *value_string = getSetupValue(setup_info[pos].type & ~TYPE_GHOSTED, - setup_info[pos].value); + int type = setup_info[pos].type; + void *value = setup_info[pos].value; + char *value_string = (!(type & TYPE_GHOSTED) ? getSetupValue(type, value) : + "n/a"); if (value_string == NULL) return; - if (setup_info[pos].type & TYPE_KEY) + if (type & TYPE_KEY) { xpos = 3; - if (setup_info[pos].type & TYPE_QUERY) + if (type & TYPE_QUERY) { value_string = ""; font_nr = FONT_INPUT_1_ACTIVE; } } - else if (setup_info[pos].type & TYPE_STRING) + else if (type & TYPE_STRING) { int max_value_len = (SCR_FIELDX - 2) * 2; @@ -1981,10 +1971,9 @@ static void drawSetupValue(int pos) if (strlen(value_string) > max_value_len) value_string[max_value_len] = '\0'; } - else if (setup_info[pos].type & TYPE_BOOLEAN_STYLE) + else if (type & TYPE_BOOLEAN_STYLE) { - font_nr = (*(boolean *)(setup_info[pos].value) ? FONT_OPTION_ON : - FONT_OPTION_OFF); + font_nr = (*(boolean *)value ? FONT_OPTION_ON : FONT_OPTION_OFF); } DrawText(mSX + xpos * 32, mSY + ypos * 32, @@ -2070,10 +2059,10 @@ static void DrawSetupScreen_Generic() int font_nr = FONT_MENU_1; /* set some entries to "unchangeable" according to other variables */ - if ((value_ptr == &setup.sound && !audio.sound_available) || - (value_ptr == &setup.sound_loops && !audio.loops_available) || - (value_ptr == &setup.sound_music && !audio.music_available) || - (value_ptr == &setup.fullscreen && !video.fullscreen_available)) + if ((value_ptr == &setup.sound_simple && !audio.sound_available) || + (value_ptr == &setup.sound_loops && !audio.loops_available) || + (value_ptr == &setup.sound_music && !audio.music_available) || + (value_ptr == &setup.fullscreen && !video.fullscreen_available)) setup_info[i].type |= TYPE_GHOSTED; if (setup_info[i].type & TYPE_STRING) @@ -2189,10 +2178,12 @@ void HandleSetupScreen_Generic(int mx, int my, int dx, int dy, int button) } } +#if 0 BackToFront(); if (game_status == GAME_MODE_SETUP) DoAnimation(); +#endif } void DrawSetupScreen_Input() @@ -2369,7 +2360,11 @@ void HandleSetupScreen_Input(int mx, int my, int dx, int dy, int button) static unsigned long delay = 0; if (!DelayReached(&delay, GADGET_FRAME_DELAY)) +#if 1 + return; +#else goto out; +#endif player_nr = (player_nr + (x == 10 ? -1 : +1) + MAX_PLAYERS) % MAX_PLAYERS; @@ -2433,12 +2428,14 @@ void HandleSetupScreen_Input(int mx, int my, int dx, int dy, int button) } } +#if 0 BackToFront(); out: if (game_status == GAME_MODE_SETUP) DoAnimation(); +#endif } void CustomizeKeyboard(int player_nr) @@ -2556,8 +2553,8 @@ void CustomizeKeyboard(int player_nr) } } - BackToFront(); DoAnimation(); + BackToFront(); /* don't eat all CPU time */ Delay(10); @@ -2719,8 +2716,8 @@ static boolean CalibrateJoystickMain(int player_nr) } - BackToFront(); DoAnimation(); + BackToFront(); /* don't eat all CPU time */ Delay(10); @@ -2797,6 +2794,9 @@ void HandleSetupScreen(int mx, int my, int dx, int dy, int button) HandleChooseTree(mx, my, dx, dy, button, &artwork.mus_current); else HandleSetupScreen_Generic(mx, my, dx, dy, button); + + DoAnimation(); + BackToFront(); } void HandleGameActions() @@ -2935,6 +2935,7 @@ static void CreateScreenScrollbuttons() GDI_STATE, GD_BUTTON_UNPRESSED, GDI_DESIGN_UNPRESSED, gd_bitmap_unpressed, gd_x1, gd_y1, GDI_DESIGN_PRESSED, gd_bitmap_pressed, gd_x2, gd_y2, + GDI_DIRECT_DRAW, FALSE, GDI_EVENT_MASK, event_mask, GDI_CALLBACK_ACTION, HandleScreenGadgets, GDI_END); @@ -3011,6 +3012,7 @@ static void CreateScreenScrollbars() GDI_DESIGN_UNPRESSED, gd_bitmap_unpressed, gd_x1, gd_y1, GDI_DESIGN_PRESSED, gd_bitmap_pressed, gd_x2, gd_y2, GDI_BORDER_SIZE, SC_BORDER_SIZE, SC_BORDER_SIZE, + GDI_DIRECT_DRAW, FALSE, GDI_EVENT_MASK, event_mask, GDI_CALLBACK_ACTION, HandleScreenGadgets, GDI_END);