{
{ TOUCH_CONTROL_VIRTUAL_BUTTONS, "Virtual Buttons" },
{ TOUCH_CONTROL_WIPE_GESTURES, "Wipe Gestures" },
+ { TOUCH_CONTROL_FOLLOW_FINGER, "Follow Finger" },
{ NULL, NULL },
};
y >= rect_y && y < rect_y + rect->height);
}
+static boolean insidePreviewRect(struct PreviewInfo *preview, int x, int y)
+{
+ int rect_width = preview->xsize * preview->tile_size;
+ int rect_height = preview->ysize * preview->tile_size;
+ int rect_x = ALIGNED_XPOS(preview->x, rect_width, preview->align);
+ int rect_y = ALIGNED_YPOS(preview->y, rect_height, preview->valign);
+
+ return (x >= rect_x && x < rect_x + rect_width &&
+ y >= rect_y && y < rect_y + rect_height);
+}
+
static void AdjustScrollbar(int id, int items_max, int items_visible,
int item_position)
{
/* do not fade out here -- function may continue and fade on editor screen */
UnmapAllGadgets();
- FadeSoundsAndMusic();
+ FadeMenuSoundsAndMusic();
ExpireSoundLoops(FALSE);
if (CheckTitleScreen(levelset_has_changed))
{
- game_status_last_screen = GAME_MODE_MAIN;
-
SetGameStatus(GAME_MODE_TITLE);
DrawTitleScreen();
LoadTape(level_nr);
DrawCompleteVideoDisplay();
- PlayMenuSound();
- PlayMenuMusic();
+ PlayMenuSoundsAndMusic();
/* create gadgets for main menu screen */
FreeScreenGadgets();
/* switch game mode from title screen mode back to info screen mode */
SetGameStatus(GAME_MODE_INFO);
+ /* store that last screen was info screen, not main menu screen */
+ game_status_last_screen = GAME_MODE_INFO;
+
DrawInfoScreen_NotAvailable("Title screen information:",
"No title screen for this level set.");
return;
}
- FadeSoundsAndMusic();
+ FadeMenuSoundsAndMusic();
}
FadeOut(REDRAW_ALL);
- /* only required to update logic for redrawing global border */
- ClearField();
-
/* title screens may have different window size */
ChangeViewportPropertiesIfNeeded();
+ /* only required to update logic for redrawing global border */
+ ClearField();
+
if (tci->is_image)
DrawTitleScreenImage(tci->local_nr, tci->initial);
else
}
else
{
- FadeSoundsAndMusic();
+ FadeMenuSoundsAndMusic();
return_to_main_menu = TRUE;
}
}
}
+ /* check if level preview was clicked */
+ if (insidePreviewRect(&preview, mx - SX, my - SY))
+ pos = MAIN_CONTROL_GAME;
+
// handle pressed/unpressed state for active/inactive menu buttons
// (if pos != -1, "i" contains index position corresponding to "pos")
if (button &&
pos = choice + dy;
}
- if (pos == MAIN_CONTROL_LEVELS && dx != 0 && button)
- {
- HandleMainMenu_SelectLevel(1, (dx < 0 ? -1 : +1), NO_DIRECT_LEVEL_SELECT);
- }
- else if (pos == MAIN_CONTROL_FIRST_LEVEL && !button)
+ if (pos == MAIN_CONTROL_FIRST_LEVEL && !button)
{
HandleMainMenu_SelectLevel(MAX_LEVELS, -1, NO_DIRECT_LEVEL_SELECT);
}
SetGameStatus(GAME_MODE_LEVELNR);
- ChangeViewportPropertiesIfNeeded();
-
DrawChooseLevelNr();
}
else if (pos >= MAIN_CONTROL_NAME && pos <= MAIN_CONTROL_QUIT)
choice = pos;
}
+ else if (dx != 0)
+ {
+ if (choice != MAIN_CONTROL_INFO &&
+ choice != MAIN_CONTROL_SETUP)
+ HandleMainMenu_SelectLevel(1, dx, NO_DIRECT_LEVEL_SELECT);
+ }
}
else
{
if (setup.internal.choose_from_top_leveldir)
gotoTopLevelDir();
- ChangeViewportPropertiesIfNeeded();
-
DrawChooseLevelSet();
}
}
info_mode = INFO_MODE_MAIN;
- ChangeViewportPropertiesIfNeeded();
-
DrawInfoScreen();
}
else if (pos == MAIN_CONTROL_GAME)
setup_mode = SETUP_MODE_MAIN;
- ChangeViewportPropertiesIfNeeded();
-
DrawSetupScreen();
}
else if (pos == MAIN_CONTROL_QUIT)
fade_mask = REDRAW_ALL;
UnmapAllGadgets();
- FadeSoundsAndMusic();
+ FadeMenuSoundsAndMusic();
FreeScreenGadgets();
CreateScreenGadgets();
FadeOut(fade_mask);
+ /* needed if different viewport properties defined for info screen */
ChangeViewportPropertiesIfNeeded();
+ SetMainBackgroundImage(IMG_BACKGROUND_INFO);
+
ClearField();
OpenDoor(GetDoorState() | DOOR_NO_DELAY | DOOR_FORCE_REDRAW);
MapScreenGadgets(max_info_info);
- PlayMenuSound();
- PlayMenuMusic();
+ PlayMenuSoundsAndMusic();
DrawMaskedBorder(fade_mask);
void DrawInfoScreen_TitleScreen()
{
- game_status_last_screen = GAME_MODE_INFO;
-
SetGameStatus(GAME_MODE_TITLE);
DrawTitleScreen();
if (page >= num_pages)
{
- FadeSoundsAndMusic();
+ FadeMenuSoundsAndMusic();
info_mode = INFO_MODE_MAIN;
DrawInfoScreen();
if (list == NULL)
{
- FadeSoundsAndMusic();
+ FadeMenuSoundsAndMusic();
ClearField();
DrawHeadline();
{
PlaySound(SND_MENU_ITEM_SELECTING);
- FadeSoundsAndMusic();
+ FadeMenuSoundsAndMusic();
info_mode = INFO_MODE_MAIN;
DrawInfoScreen();
if (list == NULL)
{
- FadeSoundsAndMusic();
+ FadeMenuSoundsAndMusic();
info_mode = INFO_MODE_MAIN;
DrawInfoScreen();
return;
}
- FadeSoundsAndMusic();
+ FadeMenuSoundsAndMusic();
if (list != music_file_info)
FadeSetNextScreen();
{
SetMainBackgroundImageIfDefined(IMG_BACKGROUND_INFO_CREDITS);
- FadeSoundsAndMusic();
+ FadeMenuSoundsAndMusic();
FadeOut(REDRAW_FIELD);
if (screen_nr >= num_screens)
{
- FadeSoundsAndMusic();
+ FadeMenuSoundsAndMusic();
info_mode = INFO_MODE_MAIN;
DrawInfoScreen();
{
PlaySound(SND_MENU_ITEM_SELECTING);
- FadeSoundsAndMusic();
+ FadeMenuSoundsAndMusic();
info_mode = INFO_MODE_MAIN;
DrawInfoScreen();
DrawTextF(xstart2, ystart2, font_text, TARGET_STRING);
ystart2 += ystep;
- DrawTextF(xstart1, ystart2, font_header, "Compile time");
- DrawTextF(xstart2, ystart2, font_text, getCompileDateString());
+ DrawTextF(xstart1, ystart2, font_header, "Source date");
+ DrawTextF(xstart2, ystart2, font_text, getSourceDateString());
ystart2 += 3 * ystep;
DrawTextF(xstart1, ystart2, font_header, "Library");
{
PlaySound(SND_MENU_ITEM_SELECTING);
- FadeSoundsAndMusic();
+ FadeMenuSoundsAndMusic();
info_mode = INFO_MODE_MAIN;
DrawInfoScreen();
{
PlaySound(SND_MENU_ITEM_SELECTING);
- FadeSoundsAndMusic();
+ FadeMenuSoundsAndMusic();
info_mode = INFO_MODE_MAIN;
DrawInfoScreen();
static void DrawInfoScreen()
{
- SetMainBackgroundImage(IMG_BACKGROUND_INFO);
-
if (info_mode == INFO_MODE_TITLE)
DrawInfoScreen_TitleScreen();
else if (info_mode == INFO_MODE_ELEMENTS)
if (info_mode != INFO_MODE_MAIN &&
info_mode != INFO_MODE_TITLE &&
info_mode != INFO_MODE_MUSIC)
- {
- PlayMenuSound();
- PlayMenuMusic();
- }
+ PlayMenuSoundsAndMusic();
}
void HandleInfoScreen(int mx, int my, int dx, int dy, int button)
xpos = newxpos;
-#if defined(TARGET_SDL2)
- SDL_StartTextInput();
-#endif
+ StartTextInput(startx, starty, pos->width, pos->height);
}
else if (is_valid_key_char && xpos < MAX_PLAYER_NAME_LEN)
{
DrawText(startx, starty, setup.player_name, font_nr);
-#if defined(TARGET_SDL2)
- SDL_StopTextInput();
-#endif
+ StopTextInput();
}
}
FadeOut(fade_mask);
+ /* needed if different viewport properties defined for choosing level (set) */
+ ChangeViewportPropertiesIfNeeded();
+
+ if (game_status == GAME_MODE_LEVELNR)
+ SetMainBackgroundImage(IMG_BACKGROUND_LEVELNR);
+ else if (game_status == GAME_MODE_LEVELS)
+ SetMainBackgroundImage(IMG_BACKGROUND_LEVELS);
+
ClearField();
OpenDoor(GetDoorState() | DOOR_NO_DELAY | DOOR_FORCE_REDRAW);
void DrawChooseLevelSet()
{
- FadeSoundsAndMusic();
-
- SetMainBackgroundImage(IMG_BACKGROUND_LEVELS);
+ FadeMenuSoundsAndMusic();
DrawChooseTree(&leveldir_current);
- PlayMenuSound();
- PlayMenuMusic();
+ PlayMenuSoundsAndMusic();
}
void HandleChooseLevelSet(int mx, int my, int dx, int dy, int button)
{
int i;
- FadeSoundsAndMusic();
+ FadeMenuSoundsAndMusic();
if (level_number != NULL)
{
if (level_number_current == NULL)
level_number_current = level_number;
- SetMainBackgroundImage(IMG_BACKGROUND_LEVELNR);
-
DrawChooseTree(&level_number_current);
- PlayMenuSound();
- PlayMenuMusic();
+ PlayMenuSoundsAndMusic();
}
void HandleChooseLevelNr(int mx, int my, int dx, int dy, int button)
fade_mask = REDRAW_ALL;
UnmapAllGadgets();
- FadeSoundsAndMusic();
+ FadeMenuSoundsAndMusic();
/* (this is needed when called from GameEnd() after winning a game) */
KeyboardAutoRepeatOn();
/* needed if different viewport properties defined for scores */
ChangeViewportPropertiesIfNeeded();
- PlayMenuSound();
- PlayMenuMusic();
+ PlayMenuSoundsAndMusic();
OpenDoor(GetDoorState() | DOOR_NO_DELAY | DOOR_FORCE_REDRAW);
int font_nr2 = (active ? FONT_TEXT_2_ACTIVE : FONT_TEXT_2);
int font_nr3 = (active ? FONT_TEXT_3_ACTIVE : FONT_TEXT_3);
int font_nr4 = (active ? FONT_TEXT_4_ACTIVE : FONT_TEXT_4);
+ int dxoff = getFontDrawOffsetX(font_nr1);
int dx1 = 3 * getFontWidth(font_nr1);
int dx2 = dx1 + getFontWidth(font_nr1);
- int dx3 = SXSIZE - 2 * (mSX - SX) - 5 * getFontWidth(font_nr4);
+ int dx3 = SXSIZE - 2 * (mSX - SX + dxoff) - 5 * getFontWidth(font_nr4);
int num_dots = (dx3 - dx2) / getFontWidth(font_nr3);
int sy = mSY + 64 + i * 32;
};
static struct TokenInfo setup_info_touch[] =
+{
+ { TYPE_ENTER_LIST, execSetupChooseTouchControls, "Touch Control Type:" },
+ { TYPE_STRING, &touch_controls_text, "" },
+ { TYPE_EMPTY, NULL, "" },
+ { TYPE_LEAVE_MENU, execSetupMain, "Back" },
+
+ { 0, NULL, NULL }
+};
+
+static struct TokenInfo setup_info_touch_wipe_gestures[] =
{
{ TYPE_ENTER_LIST, execSetupChooseTouchControls, "Touch Control Type:" },
{ TYPE_STRING, &touch_controls_text, "" },
fade_mask = REDRAW_ALL;
UnmapAllGadgets();
- FadeSoundsAndMusic();
+ FadeMenuSoundsAndMusic();
FreeScreenGadgets();
CreateScreenGadgets();
FadeOut(fade_mask);
+ /* needed if different viewport properties defined for setup screen */
+ ChangeViewportPropertiesIfNeeded();
+
+ SetMainBackgroundImage(IMG_BACKGROUND_SETUP);
+
ClearField();
OpenDoor(GetDoorState() | DOOR_NO_DELAY | DOOR_FORCE_REDRAW);
{
setup_info = setup_info_touch;
title_string = "Setup Touch Ctrls";
+
+ if (strEqual(setup.touch.control_type, TOUCH_CONTROL_WIPE_GESTURES))
+ setup_info = setup_info_touch_wipe_gestures;
}
else if (setup_mode == SETUP_MODE_SHORTCUTS)
{
{
DeactivateJoystick();
- SetMainBackgroundImage(IMG_BACKGROUND_SETUP);
-
if (setup_mode == SETUP_MODE_INPUT)
DrawSetupScreen_Input();
else if (setup_mode == SETUP_MODE_CHOOSE_GAME_SPEED)
else
DrawSetupScreen_Generic();
- PlayMenuSound();
- PlayMenuMusic();
+ PlayMenuSoundsAndMusic();
}
void RedrawSetupScreenAfterFullscreenToggle()