#define MENU_CHOOSE_TREE_FONT(x) (FONT_TEXT_1 + (x))
#define MENU_CHOOSE_TREE_COLOR(ti, a) TREE_COLOR(ti, a)
-#define TEXT_NEXT_PAGE "Press any key or button for next page"
-#define TEXT_INFO_MENU "Press any key or button for info menu"
#define TEXT_MAIN_MENU "Press any key or button for main menu"
+#define TEXT_INFO_MENU "Press any key or button for info menu"
+#define TEXT_NEXT_PAGE "Press any key or button for next page"
+#define TEXT_NEXT_MENU (info_screens_from_main ? \
+ TEXT_MAIN_MENU : TEXT_INFO_MENU)
// for input setup functions
#define SETUPINPUT_SCREEN_POS_START 0
#define SCREEN_CTRL_ID_NEXT_PLAYER 11
#define SCREEN_CTRL_ID_INSERT_SOLUTION 12
#define SCREEN_CTRL_ID_PLAY_SOLUTION 13
-#define SCREEN_CTRL_ID_SWITCH_ECS_AGA 14
-#define SCREEN_CTRL_ID_TOUCH_PREV_PAGE 15
-#define SCREEN_CTRL_ID_TOUCH_NEXT_PAGE 16
-#define SCREEN_CTRL_ID_TOUCH_PREV_PAGE2 17
-#define SCREEN_CTRL_ID_TOUCH_NEXT_PAGE2 18
+#define SCREEN_CTRL_ID_LEVELSET_INFO 14
+#define SCREEN_CTRL_ID_SWITCH_ECS_AGA 15
+#define SCREEN_CTRL_ID_TOUCH_PREV_PAGE 16
+#define SCREEN_CTRL_ID_TOUCH_NEXT_PAGE 17
+#define SCREEN_CTRL_ID_TOUCH_PREV_PAGE2 18
+#define SCREEN_CTRL_ID_TOUCH_NEXT_PAGE2 19
-#define NUM_SCREEN_MENUBUTTONS 19
+#define NUM_SCREEN_MENUBUTTONS 20
-#define SCREEN_CTRL_ID_SCROLL_UP 19
-#define SCREEN_CTRL_ID_SCROLL_DOWN 20
-#define SCREEN_CTRL_ID_SCROLL_VERTICAL 21
-#define SCREEN_CTRL_ID_NETWORK_SERVER 22
+#define SCREEN_CTRL_ID_SCROLL_UP 20
+#define SCREEN_CTRL_ID_SCROLL_DOWN 21
+#define SCREEN_CTRL_ID_SCROLL_VERTICAL 22
+#define SCREEN_CTRL_ID_NETWORK_SERVER 23
-#define NUM_SCREEN_GADGETS 23
+#define NUM_SCREEN_GADGETS 24
#define NUM_SCREEN_SCROLLBUTTONS 2
#define NUM_SCREEN_SCROLLBARS 1
#define SCREEN_MASK_MAIN (1 << 0)
#define SCREEN_MASK_MAIN_HAS_SOLUTION (1 << 1)
-#define SCREEN_MASK_INPUT (1 << 2)
-#define SCREEN_MASK_TOUCH (1 << 3)
-#define SCREEN_MASK_TOUCH2 (1 << 4)
-#define SCREEN_MASK_SCORES (1 << 5)
-#define SCREEN_MASK_SCORES_INFO (1 << 6)
+#define SCREEN_MASK_MAIN_HAS_SET_INFO (1 << 2)
+#define SCREEN_MASK_INPUT (1 << 3)
+#define SCREEN_MASK_TOUCH (1 << 4)
+#define SCREEN_MASK_TOUCH2 (1 << 5)
+#define SCREEN_MASK_SCORES (1 << 6)
+#define SCREEN_MASK_SCORES_INFO (1 << 7)
// graphic position and size values for buttons and scrollbars
#define SC_MENUBUTTON_XSIZE TILEX
};
+static boolean hasLevelSetInfo(void)
+{
+ return (getLevelSetInfoFilename(0) != NULL);
+}
+
static int getTitleScreenGraphic(int nr, boolean initial)
{
return (initial ? IMG_TITLESCREEN_INITIAL_1 : IMG_TITLESCREEN_1) + nr;
MapTapeButtons();
MapScreenMenuGadgets(SCREEN_MASK_MAIN);
UpdateScreenMenuGadgets(SCREEN_MASK_MAIN_HAS_SOLUTION, hasSolutionTape());
+ UpdateScreenMenuGadgets(SCREEN_MASK_MAIN_HAS_SET_INFO, hasLevelSetInfo());
// copy actual game door content to door double buffer for OpenDoor()
BlitBitmap(drawto, bitmap_db_door_1, DX, DY, DXSIZE, DYSIZE, 0, 0);
DrawTextSCentered(ystart1, font_title, text_title);
DrawTextSCentered(ystart2, font_error, text_error);
- DrawTextSCentered(ybottom, font_foot, TEXT_INFO_MENU);
+ DrawTextSCentered(ybottom, font_foot, TEXT_NEXT_MENU);
FadeIn(REDRAW_FIELD);
}
DrawHeadline();
DrawTextSCentered(ystart, font_title, "No music info for this level set.");
- DrawTextSCentered(ybottom, font_foot, TEXT_INFO_MENU);
+ DrawTextSCentered(ybottom, font_foot, TEXT_NEXT_MENU);
return;
}
DrawTextF(xstart2, ystart, font_text, "%s", setup.system.sdl_audiodriver);
DrawTextF(xstart3, ystart, font_text, "%s", driver_name);
- DrawTextSCentered(ybottom, font_foot, TEXT_INFO_MENU);
+ DrawTextSCentered(ybottom, font_foot, TEXT_NEXT_MENU);
FadeIn(REDRAW_FIELD);
}
}
boolean last_screen = (screen_nr == num_screens - 1);
- char *text_foot = (last_screen ? TEXT_INFO_MENU : TEXT_NEXT_PAGE);
+ char *text_foot = (last_screen ? TEXT_NEXT_MENU : TEXT_NEXT_PAGE);
DrawTextSCentered(ybottom, font_foot, text_foot);
}
DrawHeadline();
DrawTextSCentered(ystart, font_title, text_no_info);
- DrawTextSCentered(ybottom, font_foot, TEXT_INFO_MENU);
+ DrawTextSCentered(ybottom, font_foot, TEXT_NEXT_MENU);
return;
}
void DrawInfoScreen_FromMainMenu(int nr)
{
+ int fade_mask = REDRAW_FIELD;
+
if (nr < INFO_MODE_MAIN || nr >= MAX_INFO_MODES)
return;
info_mode = nr;
info_screens_from_main = TRUE;
+ if (redraw_mask & REDRAW_ALL)
+ fade_mask = REDRAW_ALL;
+
+ if (CheckFadeAll())
+ fade_mask = REDRAW_ALL;
+
+ UnmapAllGadgets();
+ FadeMenuSoundsAndMusic();
+
FadeSetEnterScreen();
+ FadeOut(fade_mask);
+
+ FadeSkipNextFadeOut();
+
+ // needed if different viewport properties defined for info screen
+ ChangeViewportPropertiesIfNeeded();
+
+ SetMainBackgroundImage(IMG_BACKGROUND_INFO);
+
DrawInfoScreen();
}
GD_EVENT_RELEASED,
FALSE, "play solution tape"
},
+ {
+ IMG_MENU_BUTTON_LEVELSET_INFO, IMG_MENU_BUTTON_LEVELSET_INFO_ACTIVE,
+ &menu.main.button.levelset_info, NULL,
+ SCREEN_CTRL_ID_LEVELSET_INFO,
+ SCREEN_MASK_MAIN_HAS_SET_INFO,
+ GD_EVENT_RELEASED,
+ FALSE, "show level set info"
+ },
{
IMG_MENU_BUTTON_SWITCH_ECS_AGA, IMG_MENU_BUTTON_SWITCH_ECS_AGA_ACTIVE,
&menu.main.button.switch_ecs_aga, &setup.prefer_aga_graphics,
id == SCREEN_CTRL_ID_NEXT_LEVEL2 ? mSY + MENU_TITLE1_YPOS : 0);
}
+ if (id == SCREEN_CTRL_ID_LEVELSET_INFO)
+ {
+ if (pos->x == -1 && pos->y == -1)
+ {
+ // use "SX" here to place button (ignore draw offsets)
+ x = SX + SXSIZE - 2 * TILESIZE;
+ y = SY + SYSIZE - 2 * TILESIZE;
+ }
+ }
+
gi = CreateGadget(GDI_CUSTOM_ID, id,
GDI_CUSTOM_TYPE_ID, i,
GDI_IMAGE_ID, gfx_unpressed,
PlaySolutionTape();
break;
+ case SCREEN_CTRL_ID_LEVELSET_INFO:
+ DrawInfoScreen_FromMainMenu(INFO_MODE_LEVELSET);
+ break;
+
case SCREEN_CTRL_ID_SWITCH_ECS_AGA:
setup.prefer_aga_graphics = !setup.prefer_aga_graphics;
DrawMainMenu();