+static int getChooseTreeEditXPosReal(int pos)
+{
+ int xpos = getChooseTreeEditXPos(pos);
+ int font_nr = getChooseTreeEditFont(FALSE);
+ int font_xoffset = getFontDrawOffsetX(font_nr);
+
+ return xpos + font_xoffset;
+}
+
static void drawChooseTreeEdit(int ypos_raw, boolean active)
{
int sx = getChooseTreeEditXPos(POS_LEFT);
static void drawChooseTreeEdit(int ypos_raw, boolean active)
{
int sx = getChooseTreeEditXPos(POS_LEFT);
// leveldir_current may be invalid (level group, parent link, node copy)
leveldir_current = getValidLevelSeries(leveldir_current, leveldir_last_valid);
// leveldir_current may be invalid (level group, parent link, node copy)
leveldir_current = getValidLevelSeries(leveldir_current, leveldir_last_valid);
{
// skipping levels is only allowed when trying to skip single level
if (setup.skip_levels && new_level_nr == old_level_nr + 1 &&
{
// skipping levels is only allowed when trying to skip single level
if (setup.skip_levels && new_level_nr == old_level_nr + 1 &&
{
char text[MAX_PLAYER_NAME_LEN + 2] = { 0 };
boolean multiple_users = (game_status == GAME_MODE_PSEUDO_TYPENAMES);
{
char text[MAX_PLAYER_NAME_LEN + 2] = { 0 };
boolean multiple_users = (game_status == GAME_MODE_PSEUDO_TYPENAMES);
int sy = (multiple_users ? amSY + pos->y : mSY + ALIGNED_TEXT_YPOS(pos));
int font_nr = (active ? FONT_ACTIVE(pos->font) : pos->font);
int font_width = getFontWidth(font_nr);
int sy = (multiple_users ? amSY + pos->y : mSY + ALIGNED_TEXT_YPOS(pos));
int font_nr = (active ? FONT_ACTIVE(pos->font) : pos->font);
int font_width = getFontWidth(font_nr);
- DrawBackgroundForFont(sx, sy, pos->width, pos->height, font_nr);
+ DrawBackgroundForFont(font_sx, font_sy, pos->width, pos->height, font_nr);
sprintf(text, "%s%c", name, (active ? '_' : '\0'));
sprintf(text, "%s%c", name, (active ? '_' : '\0'));
boolean has_scrollbar = screen_gadget[SCREEN_CTRL_ID_SCROLL_VERTICAL]->mapped;
int mx_scrollbar = screen_gadget[SCREEN_CTRL_ID_SCROLL_VERTICAL]->x;
int mx_right_border = (has_scrollbar ? mx_scrollbar : SX + SXSIZE);
boolean has_scrollbar = screen_gadget[SCREEN_CTRL_ID_SCROLL_VERTICAL]->mapped;
int mx_scrollbar = screen_gadget[SCREEN_CTRL_ID_SCROLL_VERTICAL]->x;
int mx_right_border = (has_scrollbar ? mx_scrollbar : SX + SXSIZE);
- int sx1_edit_name = getChooseTreeEditXPos(POS_LEFT);
- int sx2_edit_name = getChooseTreeEditXPos(POS_RIGHT);
+ int sx1_edit_name = getChooseTreeEditXPosReal(POS_LEFT);
+ int sx2_edit_name = getChooseTreeEditXPosReal(POS_RIGHT);
- if (mx || my) // mouse input
+#if defined(PLATFORM_ANDROID)
+ // touching the screen anywhere continues playing the next level
+ if ((mx || my) && scores.continue_playing)
+ {
+ mx = my = 0;
+ button = MB_MENU_CHOICE;
+ }
+#endif
+
+ // any mouse click or cursor key stops leaving scores by "Return" key
+ if ((mx || my || dx || dy) && scores.continue_on_return)
// move cursor instead of scrolling when already at start/end of list
if (dy == -1 * SCROLL_LINE && ti->cl_first == 0)
dy = -1;
// move cursor instead of scrolling when already at start/end of list
if (dy == -1 * SCROLL_LINE && ti->cl_first == 0)
dy = -1;
- if (setup.auto_play_next_level && setup.increment_levels &&
- scores.last_level_nr < leveldir_current->last_level &&
- scores.was_just_playing &&
- !network_playing)
+ if (scores.continue_playing && scores.continue_on_return)
- scores.last_level_nr = level_nr;
- scores.was_just_playing = (game_status_last_screen == GAME_MODE_PLAYING);
+ scores.last_level_nr = nr;
+ scores.continue_on_return = (game_status_last_screen == GAME_MODE_PLAYING);
int ystep_title = getMenuTextStep(spacing_title, font_title);
int ystep_para = getMenuTextStep(spacing_para, font_text);
int ystep_line = getMenuTextStep(spacing_line, font_text);
int ystep_title = getMenuTextStep(spacing_title, font_title);
int ystep_para = getMenuTextStep(spacing_para, font_text);
int ystep_line = getMenuTextStep(spacing_line, font_text);
int ystart = mSY - SY + menu.top_spacing[GAME_MODE_SCOREINFO];
int ybottom = mSY - SY + SYSIZE - menu.bottom_spacing[GAME_MODE_SCOREINFO];
int ystart = mSY - SY + menu.top_spacing[GAME_MODE_SCOREINFO];
int ybottom = mSY - SY + SYSIZE - menu.bottom_spacing[GAME_MODE_SCOREINFO];
int select_x = SX + xstart1;
int select_y1, select_y2;
int play_x, play_y;
int select_x = SX + xstart1;
int select_y1, select_y2;
int play_x, play_y;
int font_height = getFontHeight(font_text);
int tape_date_width = getTextWidth(tape_date, font_text);
int pad_left = xstart2;
int font_height = getFontHeight(font_text);
int tape_date_width = getTextWidth(tape_date, font_text);
int pad_left = xstart2;
{ TYPE_SWITCH, &setup.multiple_users, "Multiple Users/Teams:" },
{ TYPE_YES_NO, &setup.input_on_focus, "Only Move Focussed Player:" },
{ TYPE_SWITCH, &setup.time_limit, "Time Limit:" },
{ TYPE_SWITCH, &setup.multiple_users, "Multiple Users/Teams:" },
{ TYPE_YES_NO, &setup.input_on_focus, "Only Move Focussed Player:" },
{ TYPE_SWITCH, &setup.time_limit, "Time Limit:" },
- { TYPE_SWITCH, &setup.handicap, "Handicap:" },
- { TYPE_SWITCH, &setup.skip_levels, "Skip Unsolved Levels:" },
+ { TYPE_SWITCH, &setup.handicap, "Force Solving Levels:" },
+ { TYPE_SWITCH, &setup.skip_levels, "Allow Skipping Levels:" },
{ TYPE_SWITCH, &setup.increment_levels,"Increment Solved Levels:" },
{ TYPE_SWITCH, &setup.auto_play_next_level,"Auto-play Next Level:" },
{ TYPE_SWITCH, &setup.count_score_after_game,"Count Score After Game:" },
{ TYPE_SWITCH, &setup.increment_levels,"Increment Solved Levels:" },
{ TYPE_SWITCH, &setup.auto_play_next_level,"Auto-play Next Level:" },
{ TYPE_SWITCH, &setup.count_score_after_game,"Count Score After Game:" },