/* sub-screens on the setup screen (specific) */
#define SETUP_MODE_CHOOSE_GAME_SPEED 15
-#define SETUP_MODE_CHOOSE_SCREEN_MODE 16
-#define SETUP_MODE_CHOOSE_WINDOW_SIZE 17
-#define SETUP_MODE_CHOOSE_SCROLL_DELAY 18
-#define SETUP_MODE_CHOOSE_GRAPHICS 19
-#define SETUP_MODE_CHOOSE_SOUNDS 20
-#define SETUP_MODE_CHOOSE_MUSIC 21
-#define SETUP_MODE_CHOOSE_VOLUME_SIMPLE 22
-#define SETUP_MODE_CHOOSE_VOLUME_LOOPS 23
-#define SETUP_MODE_CHOOSE_VOLUME_MUSIC 24
-
-#define MAX_SETUP_MODES 25
+#define SETUP_MODE_CHOOSE_SCROLL_DELAY 16
+#define SETUP_MODE_CHOOSE_SCREEN_MODE 17
+#define SETUP_MODE_CHOOSE_WINDOW_SIZE 18
+#define SETUP_MODE_CHOOSE_SCALING_TYPE 19
+#define SETUP_MODE_CHOOSE_GRAPHICS 20
+#define SETUP_MODE_CHOOSE_SOUNDS 21
+#define SETUP_MODE_CHOOSE_MUSIC 22
+#define SETUP_MODE_CHOOSE_VOLUME_SIMPLE 23
+#define SETUP_MODE_CHOOSE_VOLUME_LOOPS 24
+#define SETUP_MODE_CHOOSE_VOLUME_MUSIC 25
+
+#define MAX_SETUP_MODES 26
/* for input setup functions */
#define SETUPINPUT_SCREEN_POS_START 0
#define MENU_SCREEN_MAX_XPOS (SCR_FIELDX - 1)
#define MENU_TITLE1_YPOS 8
#define MENU_TITLE2_YPOS 46
-#define MAX_INFO_ELEMENTS_ON_SCREEN 10
+#define MENU_SCREEN_INFO_XSTART 16
+#define MENU_SCREEN_INFO_YSTART1 100
+#define MENU_SCREEN_INFO_YSTART2 128
+#define MENU_SCREEN_INFO_YSTEP (TILEY + 4)
+#define MENU_SCREEN_INFO_YBOTTOM (SYSIZE - 20)
+#define MENU_SCREEN_INFO_YSIZE (MENU_SCREEN_INFO_YBOTTOM - \
+ MENU_SCREEN_INFO_YSTART2 - \
+ TILEY / 2)
+#define MAX_INFO_ELEMENTS_ON_SCREEN 128
+#if 1
+#define NUM_INFO_ELEMENTS_ON_SCREEN MIN(MENU_SCREEN_INFO_YSIZE / \
+ MENU_SCREEN_INFO_YSTEP, \
+ MAX_INFO_ELEMENTS_ON_SCREEN)
+#else
+#define NUM_INFO_ELEMENTS_ON_SCREEN 10
+#endif
#define MAX_MENU_ENTRIES_ON_SCREEN (SCR_FIELDY - MENU_SCREEN_START_YPOS)
#define MAX_MENU_TEXT_LENGTH_BIG (MENU_SCREEN_VALUE_XPOS - \
MENU_SCREEN_START_XPOS)
static TreeInfo *window_sizes = NULL;
static TreeInfo *window_size_current = NULL;
+static TreeInfo *scaling_types = NULL;
+static TreeInfo *scaling_type_current = NULL;
+
static TreeInfo *scroll_delays = NULL;
static TreeInfo *scroll_delay_current = NULL;
{ -1, NULL },
};
+static struct
+{
+ char *value;
+ char *text;
+} scaling_types_list[] =
+{
+ { SCALING_QUALITY_NEAREST, "None" },
+ { SCALING_QUALITY_LINEAR, "Linear" },
+ { SCALING_QUALITY_BEST, "Anisotropic" },
+
+ { NULL, NULL },
+};
+
static struct
{
int value;
static LevelDirTree *leveldir_last_valid = NULL;
boolean levelset_has_changed = FALSE;
+ LimitScreenUpdates(FALSE);
+
FadeSetLeaveScreen();
/* do not fade out here -- function may continue and fade on editor screen */
}
/* needed if last screen was the setup screen and fullscreen state changed */
- ToggleFullscreenIfNeeded();
+ // (moved to "execSetupGraphics()" to change fullscreen state directly)
+ // ToggleFullscreenOrChangeWindowScalingIfNeeded();
/* leveldir_current may be invalid (level group, parent link) */
if (!validLevelSeries(leveldir_current))
#if 1
FadeOut(fade_mask);
+#if 0
/* needed if last screen was the editor screen */
UndrawSpecialEditorDoor();
+#endif
+
#if 0
if (fade_mask == REDRAW_FIELD)
BackToFront();
ChangeViewportPropertiesIfNeeded();
#endif
+#if 1
+ /* needed if last screen was the editor screen */
+ UndrawSpecialEditorDoor();
+#endif
+
#if defined(TARGET_SDL)
SetDrawtoField(DRAW_BACKBUFFER);
#endif
MapTapeButtons();
MapScreenMenuGadgets(SCREEN_MASK_MAIN);
+#if 1
+ /* copy actual game door content to door double buffer for OpenDoor() */
+ BlitBitmap(drawto, bitmap_db_door_2, VX, VY, VXSIZE, VYSIZE, 0, 0);
+#endif
+
#if 1
if (fade_mask == REDRAW_ALL)
{
{
/* skipping levels is only allowed when trying to skip single level */
if (setup.skip_levels && step == 1 &&
- Request("Level still unsolved ! Skip despite handicap ?", REQ_ASK))
+ Request("Level still unsolved! Skip despite handicap?", REQ_ASK))
{
leveldir_current->handicap_level++;
SaveLevelSetup_SeriesInfo();
{
if (leveldir_current->readonly &&
!strEqual(setup.player_name, "Artsoft"))
- Request("This level is read only !", REQ_CONFIRM);
+ Request("This level is read only!", REQ_CONFIRM);
+
+ CloseDoor(DOOR_CLOSE_2);
game_status = GAME_MODE_EDITOR;
game_status = GAME_MODE_SETUP;
setup_mode = SETUP_MODE_MAIN;
+#if 1
+ ChangeViewportPropertiesIfNeeded();
+#endif
+
DrawSetupScreen();
}
else if (pos == MAIN_CONTROL_QUIT)
SaveLevelSetup_LastSeries();
SaveLevelSetup_SeriesInfo();
- if (Request("Do you really want to quit ?", REQ_ASK | REQ_STAY_CLOSED))
+ if (Request("Do you really want to quit?", REQ_ASK | REQ_STAY_CLOSED))
game_status = GAME_MODE_QUIT;
}
}
{
static int infoscreen_step[MAX_INFO_ELEMENTS_ON_SCREEN];
static int infoscreen_frame[MAX_INFO_ELEMENTS_ON_SCREEN];
- int xstart = mSX + 16;
- int ystart1 = mSY - SY + 100;
- int ystart2 = mSY + 64 + 2 * 32;
- int ybottom = mSY - SY + SYSIZE - 20;
- int ystep = TILEY + 4;
+ int xstart = mSX + MENU_SCREEN_INFO_XSTART;
+ int ystart1 = mSY - SY + MENU_SCREEN_INFO_YSTART1;
+ int ystart2 = mSY + MENU_SCREEN_INFO_YSTART2;
+ int ybottom = mSY - SY + MENU_SCREEN_INFO_YBOTTOM;
+ int ystep = MENU_SCREEN_INFO_YSTEP;
int element, action, direction;
int graphic;
int delay;
if (init)
{
- for (i = 0; i < MAX_INFO_ELEMENTS_ON_SCREEN; i++)
+ for (i = 0; i < NUM_INFO_ELEMENTS_ON_SCREEN; i++)
infoscreen_step[i] = infoscreen_frame[i] = 0;
ClearField();
i = j = 0;
while (helpanim_info[j].element != HELPANIM_LIST_END)
{
- if (i >= start + MAX_INFO_ELEMENTS_ON_SCREEN ||
+ if (i >= start + NUM_INFO_ELEMENTS_ON_SCREEN ||
i >= max_anims)
break;
else if (i < start)
static int num_anims;
static int num_pages;
static int page;
- int anims_per_page = MAX_INFO_ELEMENTS_ON_SCREEN;
+ int anims_per_page = NUM_INFO_ELEMENTS_ON_SCREEN;
int i;
if (button == MB_MENU_INITIALIZE)
}
else if (game_status == GAME_MODE_SETUP)
{
- if (setup_mode == SETUP_MODE_CHOOSE_GAME_SPEED)
+ if (setup_mode == SETUP_MODE_CHOOSE_GAME_SPEED ||
+ setup_mode == SETUP_MODE_CHOOSE_SCROLL_DELAY)
execSetupGame();
else if (setup_mode == SETUP_MODE_CHOOSE_SCREEN_MODE ||
setup_mode == SETUP_MODE_CHOOSE_WINDOW_SIZE ||
- setup_mode == SETUP_MODE_CHOOSE_SCROLL_DELAY)
+ setup_mode == SETUP_MODE_CHOOSE_SCALING_TYPE)
execSetupGraphics();
else if (setup_mode == SETUP_MODE_CHOOSE_VOLUME_SIMPLE ||
setup_mode == SETUP_MODE_CHOOSE_VOLUME_LOOPS ||
if (game_status == GAME_MODE_SETUP)
{
- if (setup_mode == SETUP_MODE_CHOOSE_GAME_SPEED)
+ if (setup_mode == SETUP_MODE_CHOOSE_GAME_SPEED ||
+ setup_mode == SETUP_MODE_CHOOSE_SCROLL_DELAY)
execSetupGame();
else if (setup_mode == SETUP_MODE_CHOOSE_SCREEN_MODE ||
setup_mode == SETUP_MODE_CHOOSE_WINDOW_SIZE ||
- setup_mode == SETUP_MODE_CHOOSE_SCROLL_DELAY)
+ setup_mode == SETUP_MODE_CHOOSE_SCALING_TYPE)
execSetupGraphics();
else if (setup_mode == SETUP_MODE_CHOOSE_VOLUME_SIMPLE ||
setup_mode == SETUP_MODE_CHOOSE_VOLUME_LOOPS ||
static void drawHallOfFameList(int first_entry, int highlight_position)
{
- int i;
+ int i, j;
SetMainBackgroundImage(IMG_BACKGROUND_SCORES);
ClearField();
int font_nr4 = (active ? FONT_TEXT_4_ACTIVE : FONT_TEXT_4);
int dx1 = 3 * getFontWidth(font_nr1);
int dx2 = dx1 + getFontWidth(font_nr1);
+#if 1
+ int dx3 = SXSIZE - 5 * getFontWidth(font_nr4);
+ int num_dots = (dx3 - dx2) / getFontWidth(font_nr3);
+#else
int dx3 = dx2 + 25 * getFontWidth(font_nr3);
+#endif
int sy = mSY + 64 + i * 32;
DrawText(mSX, sy, int2str(entry + 1, 3), font_nr1);
DrawText(mSX + dx1, sy, ".", font_nr1);
+#if 1
+ for (j = 0; j < num_dots; j++)
+ DrawText(mSX + dx2 + j * getFontWidth(font_nr3), sy, ".", font_nr3);
+#else
DrawText(mSX + dx2, sy, ".........................", font_nr3);
+#endif
if (!strEqual(highscore[entry].Name, EMPTY_PLAYER_NAME))
DrawText(mSX + dx2, sy, highscore[entry].Name, font_nr2);
static char *screen_mode_text;
static char *window_size_text;
+static char *scaling_type_text;
static char *scroll_delay_text;
static char *game_speed_text;
static char *graphics_set_name;
DrawSetupScreen();
}
-static void execSetupGame()
+static void execSetupGame_setGameSpeeds()
{
if (game_speeds == NULL)
{
/* needed for displaying game speed text instead of identifier */
game_speed_text = game_speed_current->name;
+}
+
+static void execSetupGame_setScrollDelays()
+{
+ if (scroll_delays == NULL)
+ {
+ int i;
+
+ for (i = 0; scroll_delays_list[i].value != -1; i++)
+ {
+ TreeInfo *ti = newTreeInfo_setDefaults(TREE_TYPE_UNDEFINED);
+ char identifier[32], name[32];
+ int value = scroll_delays_list[i].value;
+ char *text = scroll_delays_list[i].text;
+
+ ti->node_top = &scroll_delays;
+ ti->sort_priority = value;
+
+ sprintf(identifier, "%d", value);
+ sprintf(name, "%s", text);
+
+ setString(&ti->identifier, identifier);
+ setString(&ti->name, name);
+ setString(&ti->name_sorting, name);
+ setString(&ti->infotext, "Scaling Type");
+
+ pushTreeInfo(&scroll_delays, ti);
+ }
+
+ /* sort scaling type values to start with lowest scaling type value */
+ sortTreeInfo(&scroll_delays);
+
+ /* set current scaling type value to configured scaling type value */
+ scroll_delay_current =
+ getTreeInfoFromIdentifier(scroll_delays,i_to_a(setup.scroll_delay_value));
+
+ /* if that fails, set current scaling type to reliable default value */
+ if (scroll_delay_current == NULL)
+ scroll_delay_current =
+ getTreeInfoFromIdentifier(scroll_delays, i_to_a(STD_SCROLL_DELAY));
+
+ /* if that also fails, set current scaling type to first available value */
+ if (scroll_delay_current == NULL)
+ scroll_delay_current = scroll_delays;
+ }
+
+ setup.scroll_delay_value = atoi(scroll_delay_current->identifier);
+
+ /* needed for displaying scaling type text instead of identifier */
+ scroll_delay_text = scroll_delay_current->name;
+}
+
+static void execSetupGame()
+{
+ execSetupGame_setGameSpeeds();
+ execSetupGame_setScrollDelays();
setup_mode = SETUP_MODE_GAME;
DrawSetupScreen();
}
+static void execSetupChooseScrollDelay()
+{
+ setup_mode = SETUP_MODE_CHOOSE_SCROLL_DELAY;
+
+ DrawSetupScreen();
+}
+
static void execSetupEditor()
{
setup_mode = SETUP_MODE_EDITOR;
window_size_text = window_size_current->name;
}
+static void execSetupGraphics_setScalingTypes()
+{
+ if (scaling_types == NULL)
+ {
+ int i;
+
+ for (i = 0; scaling_types_list[i].value != NULL; i++)
+ {
+ TreeInfo *ti = newTreeInfo_setDefaults(TREE_TYPE_UNDEFINED);
+ char identifier[32], name[32];
+ char *value = scaling_types_list[i].value;
+ char *text = scaling_types_list[i].text;
+
+ ti->node_top = &scaling_types;
+ ti->sort_priority = i;
+
+ sprintf(identifier, "%s", value);
+ sprintf(name, "%s", text);
+
+ setString(&ti->identifier, identifier);
+ setString(&ti->name, name);
+ setString(&ti->name_sorting, name);
+ setString(&ti->infotext, "Anti-Aliasing");
+
+ pushTreeInfo(&scaling_types, ti);
+ }
+
+ /* sort scaling type values to start with lowest scaling type value */
+ sortTreeInfo(&scaling_types);
+
+ /* set current scaling type value to configured scaling type value */
+ scaling_type_current =
+ getTreeInfoFromIdentifier(scaling_types, setup.window_scaling_quality);
+
+ /* if that fails, set current scaling type to reliable default value */
+ if (scaling_type_current == NULL)
+ scaling_type_current =
+ getTreeInfoFromIdentifier(scaling_types, SCALING_QUALITY_DEFAULT);
+
+ /* if that also fails, set current scaling type to first available value */
+ if (scaling_type_current == NULL)
+ scaling_type_current = scaling_types;
+ }
+
+ setup.window_scaling_quality = scaling_type_current->identifier;
+
+ /* needed for displaying scaling type text instead of identifier */
+ scaling_type_text = scaling_type_current->name;
+}
+
static void execSetupGraphics_setScreenModes()
{
// if (screen_modes == NULL && video.fullscreen_available)
}
}
-static void execSetupGraphics_setScrollDelays()
+static void execSetupGraphics()
{
- if (scroll_delays == NULL)
+ if (setup_mode == SETUP_MODE_CHOOSE_WINDOW_SIZE)
{
- int i;
-
- for (i = 0; scroll_delays_list[i].value != -1; i++)
- {
- TreeInfo *ti = newTreeInfo_setDefaults(TREE_TYPE_UNDEFINED);
- char identifier[32], name[32];
- int value = scroll_delays_list[i].value;
- char *text = scroll_delays_list[i].text;
-
- ti->node_top = &scroll_delays;
- ti->sort_priority = value;
-
- sprintf(identifier, "%d", value);
- sprintf(name, "%s", text);
-
- setString(&ti->identifier, identifier);
- setString(&ti->name, name);
- setString(&ti->name_sorting, name);
- setString(&ti->infotext, "Scroll Delay");
-
- pushTreeInfo(&scroll_delays, ti);
- }
-
- /* sort scroll delay values to start with lowest scroll delay value */
- sortTreeInfo(&scroll_delays);
-
- /* set current scroll delay value to configured scroll delay value */
- scroll_delay_current =
- 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)
- scroll_delay_current =
- getTreeInfoFromIdentifier(scroll_delays, i_to_a(STD_SCROLL_DELAY));
-
- /* if that also fails, set current scroll delay to first available value */
- if (scroll_delay_current == NULL)
- scroll_delay_current = scroll_delays;
+ // update "setup.window_scaling_percent" from list selection
+ execSetupGraphics_setWindowSizes(FALSE);
+ }
+ else
+ {
+ // update list selection from "setup.window_scaling_percent"
+ execSetupGraphics_setWindowSizes(TRUE);
}
- setup.scroll_delay_value = atoi(scroll_delay_current->identifier);
-
- /* needed for displaying scroll delay text instead of identifier */
- scroll_delay_text = scroll_delay_current->name;
-}
-
-static void execSetupGraphics()
-{
- // update "setup.window_scaling_percent" from list selection
- execSetupGraphics_setWindowSizes(FALSE);
- // maybe remove non-preset value (if standard value was selected)
- execSetupGraphics_setWindowSizes(TRUE);
-
+ execSetupGraphics_setScalingTypes();
execSetupGraphics_setScreenModes();
- execSetupGraphics_setScrollDelays();
setup_mode = SETUP_MODE_GRAPHICS;
DrawSetupScreen();
+
+#if defined(TARGET_SDL2)
+ // window scaling may have changed at this point
+ ToggleFullscreenOrChangeWindowScalingIfNeeded();
+
+ // window scaling quality may have changed at this point
+ if (!strEqual(setup.window_scaling_quality, video.window_scaling_quality))
+ SDLSetWindowScalingQuality(setup.window_scaling_quality);
+#endif
}
#if !defined(PLATFORM_ANDROID)
DrawSetupScreen();
}
+
+static void execSetupChooseScalingType()
+{
+ setup_mode = SETUP_MODE_CHOOSE_SCALING_TYPE;
+
+ DrawSetupScreen();
+}
#else
static void execSetupChooseScreenMode()
{
#endif
#endif
-static void execSetupChooseScrollDelay()
-{
- setup_mode = SETUP_MODE_CHOOSE_SCROLL_DELAY;
-
- DrawSetupScreen();
-}
-
static void execSetupChooseVolumeSimple()
{
setup_mode = SETUP_MODE_CHOOSE_VOLUME_SIMPLE;
{ TYPE_SWITCH, &setup.autorecord, "Auto-Record Tapes:" },
{ TYPE_ENTER_LIST, execSetupChooseGameSpeed, "Game Speed:" },
{ TYPE_STRING, &game_speed_text, "" },
+#if 1
+ { TYPE_ENTER_LIST, execSetupChooseScrollDelay, "Scroll Delay:" },
+ { TYPE_STRING, &scroll_delay_text, "" },
+#endif
{ TYPE_EMPTY, NULL, "" },
{ TYPE_LEAVE_MENU, execSetupMain, "Back" },
#if defined(TARGET_SDL2)
{ TYPE_ENTER_LIST, execSetupChooseWindowSize, "Window Scaling:" },
{ TYPE_STRING, &window_size_text, "" },
+#if 1
+ { TYPE_ENTER_LIST, execSetupChooseScalingType, "Anti-Aliasing:" },
+ { TYPE_STRING, &scaling_type_text, "" },
+#endif
#else
{ TYPE_ENTER_LIST, execSetupChooseScreenMode, "Fullscreen Mode:" },
{ TYPE_STRING, &screen_mode_text, "" },
#if 0
{ TYPE_SWITCH, &setup.scroll_delay, "Scroll Delay:" },
#endif
+#if 0
{ TYPE_ENTER_LIST, execSetupChooseScrollDelay, "Scroll Delay Value:" },
{ TYPE_STRING, &scroll_delay_text, "" },
+#endif
#if 0
{ TYPE_SWITCH, &setup.soft_scrolling, "Soft Scrolling:" },
#endif
}
drawSetupValue(pos);
+
+ // fullscreen state may have changed at this point
+ if (setup_info[pos].value == &setup.fullscreen)
+ ToggleFullscreenOrChangeWindowScalingIfNeeded();
}
static void DrawCursorAndText_Setup(int pos, boolean active)
(value_ptr == &setup.sound_music && !audio.music_available) ||
(value_ptr == &setup.fullscreen && !video.fullscreen_available) ||
(value_ptr == &screen_mode_text && !video.fullscreen_available) ||
- (value_ptr == &window_size_text && !video.window_scaling_available))
+ (value_ptr == &window_size_text && !video.window_scaling_available) ||
+ (value_ptr == &scaling_type_text && !video.window_scaling_available))
setup_info[i].type |= TYPE_GHOSTED;
if (setup_info[i].type & (TYPE_ENTER_MENU|TYPE_ENTER_LIST))
{
PlaySound(SND_MENU_ITEM_SELECTING);
- for (y = 0; y < num_setup_info; y++)
+ // for (y = 0; y < num_setup_info; y++)
+ for (y = 0; setup_info[y].type != 0; y++)
{
if (setup_info[y].type & TYPE_LEAVE_MENU)
{
DrawSetupScreen_Input();
else if (setup_mode == SETUP_MODE_CHOOSE_GAME_SPEED)
DrawChooseTree(&game_speed_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_SCROLL_DELAY)
+ DrawChooseTree(&scroll_delay_current);
else if (setup_mode == SETUP_MODE_CHOOSE_SCREEN_MODE)
DrawChooseTree(&screen_mode_current);
else if (setup_mode == SETUP_MODE_CHOOSE_WINDOW_SIZE)
DrawChooseTree(&window_size_current);
- else if (setup_mode == SETUP_MODE_CHOOSE_SCROLL_DELAY)
- DrawChooseTree(&scroll_delay_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_SCALING_TYPE)
+ DrawChooseTree(&scaling_type_current);
else if (setup_mode == SETUP_MODE_CHOOSE_GRAPHICS)
DrawChooseTree(&artwork.gfx_current);
else if (setup_mode == SETUP_MODE_CHOOSE_SOUNDS)
if (setup_mode == SETUP_MODE_GRAPHICS ||
setup_mode == SETUP_MODE_CHOOSE_WINDOW_SIZE)
{
- // update "setup.window_scaling_percent" from list selection
+ // update list selection from "setup.window_scaling_percent"
execSetupGraphics_setWindowSizes(TRUE);
DrawSetupScreen();
HandleSetupScreen_Input(mx, my, dx, dy, button);
else if (setup_mode == SETUP_MODE_CHOOSE_GAME_SPEED)
HandleChooseTree(mx, my, dx, dy, button, &game_speed_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_SCROLL_DELAY)
+ HandleChooseTree(mx, my, dx, dy, button, &scroll_delay_current);
else if (setup_mode == SETUP_MODE_CHOOSE_SCREEN_MODE)
HandleChooseTree(mx, my, dx, dy, button, &screen_mode_current);
else if (setup_mode == SETUP_MODE_CHOOSE_WINDOW_SIZE)
HandleChooseTree(mx, my, dx, dy, button, &window_size_current);
- else if (setup_mode == SETUP_MODE_CHOOSE_SCROLL_DELAY)
- HandleChooseTree(mx, my, dx, dy, button, &scroll_delay_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_SCALING_TYPE)
+ HandleChooseTree(mx, my, dx, dy, button, &scaling_type_current);
else if (setup_mode == SETUP_MODE_CHOOSE_GRAPHICS)
HandleChooseTree(mx, my, dx, dy, button, &artwork.gfx_current);
else if (setup_mode == SETUP_MODE_CHOOSE_SOUNDS)
{
#if 1
case SCREEN_CTRL_ID_PREV_LEVEL:
- *x = mSX + menu.main.button.prev_level.x;
- *y = mSY + menu.main.button.prev_level.y;
+ *x = mSX + GDI_ACTIVE_POS(menu.main.button.prev_level.x);
+ *y = mSY + GDI_ACTIVE_POS(menu.main.button.prev_level.y);
break;
case SCREEN_CTRL_ID_NEXT_LEVEL:
- *x = mSX + menu.main.button.next_level.x;
- *y = mSY + menu.main.button.next_level.y;
+ *x = mSX + GDI_ACTIVE_POS(menu.main.button.next_level.x);
+ *y = mSY + GDI_ACTIVE_POS(menu.main.button.next_level.y);
break;
#else
case SCREEN_CTRL_ID_PREV_LEVEL: