DrawTextSCentered(MENU_TITLE2_YPOS, FONT_TITLE_2, PROGRAM_COPYRIGHT_STRING);
}
-static void ToggleFullscreenIfNeeded()
-{
- if (setup.fullscreen != video.fullscreen_enabled)
- {
- /* save old door content */
- BlitBitmap(backbuffer, bitmap_db_door,
- DX, DY, DXSIZE, DYSIZE, DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY1);
-
- /* toggle fullscreen */
- ChangeVideoModeIfNeeded(setup.fullscreen);
- setup.fullscreen = video.fullscreen_enabled;
-
- /* redraw background to newly created backbuffer */
- BlitBitmap(graphic_info[IMG_GLOBAL_BORDER].bitmap, backbuffer,
- 0,0, WIN_XSIZE,WIN_YSIZE, 0,0);
-
- /* restore old door content */
- BlitBitmap(bitmap_db_door, backbuffer,
- DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY1, DXSIZE, DYSIZE, DX, DY);
-
- redraw_mask = REDRAW_ALL;
- }
-}
-
static int getLastLevelButtonPos()
{
return 10;
StopAnimation();
}
-static void DrawMainMenuExt(int fade_delay)
+void DrawMainMenuExt(int redraw_mask, boolean do_fading)
{
static LevelDirTree *leveldir_last_valid = NULL;
boolean levelset_has_changed = FALSE;
#endif
#endif
- DrawMicroLevel(MICROLEVEL_XPOS, MICROLEVEL_YPOS, TRUE);
+ DrawPreviewLevel(TRUE);
#if 1
#if 1
#if 1
- FadeIn(fade_delay);
+ if (do_fading)
+ FadeIn(redraw_mask);
+ else
+ BackToFront();
#else
BackToFront();
#endif
#endif
}
+void DrawAndFadeInMainMenu(int redraw_mask)
+{
+ DrawMainMenuExt(redraw_mask, TRUE);
+}
+
void DrawMainMenu()
{
- DrawMainMenuExt(0);
+ DrawMainMenuExt(REDRAW_ALL, FALSE);
}
#if 0
boolean return_to_main_menu = FALSE;
boolean use_fading_main_menu = TRUE;
boolean use_cross_fading = TRUE;
- int fade_delay = 500;
- int post_delay = fade_delay / 2;
if (button == MB_MENU_INITIALIZE)
{
FadeSoundsAndMusic();
- FadeOut(fade_delay, post_delay);
+ FadeOut(REDRAW_ALL);
}
/* force TITLE music on title info screen */
DrawTitleScreenImage(title_nr);
- FadeIn(fade_delay);
+ FadeIn(REDRAW_ALL);
return;
}
title_nr++;
if (!use_cross_fading)
- FadeOut(fade_delay, post_delay);
+ FadeOut(REDRAW_ALL);
if (title_nr < MAX_NUM_TITLE_SCREENS &&
graphic_info[IMG_TITLESCREEN_1 + title_nr].bitmap != NULL)
{
Bitmap *drawto_last = drawto;
+#if 1
if (use_cross_fading)
- drawto = bitmap_db_title;
-
+ FadeCrossSaveBackbuffer();
+#else
+ if (use_cross_fading)
+ drawto = bitmap_db_cross;
+#endif
DrawTitleScreenImage(title_nr);
drawto = drawto_last;
if (use_cross_fading)
- FadeCross(fade_delay);
+ FadeCross(REDRAW_ALL);
else
- FadeIn(fade_delay);
+ FadeIn(REDRAW_ALL);
}
else
{
FadeSoundsAndMusic();
- FadeOut(fade_delay, post_delay);
+ FadeOut(REDRAW_ALL);
return_to_main_menu = TRUE;
}
if (return_to_main_menu)
{
- int menu_fade_delay = (use_fading_main_menu ? fade_delay : 0);
-
RedrawBackground();
if (game_status == GAME_MODE_INFO)
OpenDoor(DOOR_CLOSE_1 | DOOR_CLOSE_2 | DOOR_NO_DELAY | DOOR_FORCE_REDRAW);
info_mode = INFO_MODE_MAIN;
- DrawInfoScreenExt(menu_fade_delay);
+ DrawInfoScreenExt(use_fading_main_menu);
}
else /* default: return to main menu */
{
OpenDoor(DOOR_CLOSE_1 | DOOR_OPEN_2 | DOOR_NO_DELAY | DOOR_FORCE_REDRAW);
game_status = GAME_MODE_MAIN;
- DrawMainMenuExt(menu_fade_delay);
+ DrawMainMenuExt(REDRAW_ALL, use_fading_main_menu);
}
}
}
DrawText(mSX + 11 * 32, mSY + 3 * 32, int2str(level_nr, 3), FONT_VALUE_1);
LoadLevel(level_nr);
- DrawMicroLevel(MICROLEVEL_XPOS, MICROLEVEL_YPOS, TRUE);
+ DrawPreviewLevel(TRUE);
TapeErase();
LoadTape(level_nr);
DrawCompleteVideoDisplay();
- /* needed because DrawMicroLevel() takes some time */
+ /* needed because DrawPreviewLevel() takes some time */
BackToFront();
SyncDisplay();
}
FONT_VALUE_1);
LoadLevel(level_nr);
- DrawMicroLevel(MICROLEVEL_XPOS, MICROLEVEL_YPOS, TRUE);
+ DrawPreviewLevel(TRUE);
TapeErase();
LoadTape(level_nr);
DrawCompleteVideoDisplay();
- /* needed because DrawMicroLevel() takes some time */
+ /* needed because DrawPreviewLevel() takes some time */
BackToFront();
SyncDisplay();
if (game_status == GAME_MODE_MAIN)
{
- DrawMicroLevel(MICROLEVEL_XPOS, MICROLEVEL_YPOS, FALSE);
+ DrawPreviewLevel(FALSE);
DoAnimation();
}
}
{ 0, NULL, NULL }
};
-static void DrawInfoScreen_Main(int fade_delay)
+static void DrawInfoScreen_Main(boolean do_fading)
{
int i;
PlayMenuSound();
PlayMenuMusic();
- FadeIn(fade_delay);
+ if (do_fading)
+ FadeIn(REDRAW_ALL);
+ else
+ BackToFront();
+
InitAnimation();
#else
{
if (dx)
{
- int menu_navigation_type = (dx < 0 ? TYPE_LEAVE_MENU : TYPE_ENTER_MENU);
+ int menu_navigation_type = (dx < 0 ? TYPE_LEAVE : TYPE_ENTER);
if (info_info[choice].type & menu_navigation_type ||
info_info[choice].type & TYPE_ENTER_SCREEN ||
if (button_released || button == MB_MENU_INITIALIZE)
{
+ Bitmap *drawto_last = drawto;
int y = 0;
if (button != MB_MENU_INITIALIZE)
FadeSoundsAndMusic();
+#if 1
+ if (button != MB_MENU_INITIALIZE)
+ FadeCrossSaveBackbuffer();
+#else
+ if (button != MB_MENU_INITIALIZE)
+ drawto = bitmap_db_cross;
+#endif
+
ClearWindow();
DrawHeadline();
DrawTextSCentered(ybottom, FONT_TEXT_4,
"Press any key or button for next page");
+
+ drawto = drawto_last;
+
+ if (button != MB_MENU_INITIALIZE)
+ FadeCross(REDRAW_FIELD);
}
if (list != NULL && list->is_sound && sound_info[list->music].loop)
}
else if (button == MB_MENU_CHOICE)
{
+ Bitmap *drawto_last = drawto;
+ boolean show_screen;
+
screen_nr++;
- if (!DrawInfoScreen_CreditsScreen(screen_nr))
+#if 1
+ FadeCrossSaveBackbuffer();
+#else
+ drawto = bitmap_db_cross;
+#endif
+
+ show_screen = DrawInfoScreen_CreditsScreen(screen_nr);
+
+ drawto = drawto_last;
+
+ if (show_screen)
+ {
+ FadeCross(REDRAW_FIELD);
+ }
+ else
{
FadeSoundsAndMusic();
DrawTextSCentered(ystart + 1 * ystep, FONT_TEXT_2,
"If you like it, send e-mail to:");
DrawTextSCentered(ystart + 2 * ystep, FONT_TEXT_3,
- "info@artsoft.org");
+ PROGRAM_EMAIL_STRING);
DrawTextSCentered(ystart + 3 * ystep, FONT_TEXT_2,
"or SnailMail to:");
DrawTextSCentered(ystart + 4 * ystep + 0, FONT_TEXT_3,
"33604 Bielefeld");
DrawTextSCentered(ystart + 4 * ystep + 60, FONT_TEXT_3,
"Germany");
-
DrawTextSCentered(ystart + 7 * ystep, FONT_TEXT_2,
+ "More information and levels:");
+ DrawTextSCentered(ystart + 8 * ystep, FONT_TEXT_3,
+ PROGRAM_WEBSITE_STRING);
+ DrawTextSCentered(ystart + 9 * ystep, FONT_TEXT_2,
"If you have created new levels,");
- DrawTextSCentered(ystart + 8 * ystep, FONT_TEXT_2,
+ DrawTextSCentered(ystart + 10 * ystep, FONT_TEXT_2,
"send them to me to include them!");
- DrawTextSCentered(ystart + 9 * ystep, FONT_TEXT_2,
+ DrawTextSCentered(ystart + 11 * ystep, FONT_TEXT_2,
":-)");
DrawTextSCentered(ybottom, FONT_TEXT_4,
}
}
-static void DrawInfoScreenExt(int fade_delay)
+static void DrawInfoScreenExt(boolean do_fading)
{
SetMainBackgroundImage(IMG_BACKGROUND_INFO);
else if (info_mode == INFO_MODE_LEVELSET)
DrawInfoScreen_LevelSet();
else
- DrawInfoScreen_Main(fade_delay);
+ DrawInfoScreen_Main(do_fading);
if (info_mode != INFO_MODE_MAIN &&
info_mode != INFO_MODE_TITLE &&
if (highlight_position < 0)
LoadScore(level_nr);
+ FadeOut(REDRAW_FIELD);
+
+#if 0
FadeToFront();
+#endif
InitAnimation();
PlayMenuSound();
PlayMenuMusic();
HandleHallOfFame(highlight_position, 0, 0, 0, MB_MENU_INITIALIZE);
+
+ FadeIn(REDRAW_FIELD);
}
static void drawHallOfFameList(int first_entry, int highlight_position)
static int first_entry = 0;
static int highlight_position = 0;
int step = (button == 1 ? 1 : button == 2 ? 5 : 10);
- int button_released = !button;
if (button == MB_MENU_INITIALIZE)
{
drawHallOfFameList(first_entry, highlight_position);
}
}
- else if (button_released)
+ else if (button == MB_MENU_LEAVE)
{
FadeSound(SND_BACKGROUND_SCORES);
+
game_status = GAME_MODE_MAIN;
+
DrawMainMenu();
}
+ else if (button == MB_MENU_CHOICE)
+ {
+ FadeSound(SND_BACKGROUND_SCORES);
+ FadeOut(REDRAW_FIELD);
+
+ game_status = GAME_MODE_MAIN;
+
+ DrawAndFadeInMainMenu(REDRAW_FIELD);
+ }
if (game_status == GAME_MODE_SCORES)
PlayMenuSoundIfLoop();
for (i = 0; video.fullscreen_modes[i].width != -1; i++)
{
TreeInfo *ti = newTreeInfo_setDefaults(TREE_TYPE_UNDEFINED);
- char identifier[20], name[20];
+ char identifier[32], name[32];
int x = video.fullscreen_modes[i].width;
int y = video.fullscreen_modes[i].height;
+ int xx, yy;
+
+ get_aspect_ratio_from_screen_mode(&video.fullscreen_modes[i], &xx, &yy);
ti->node_top = &screen_modes;
- ti->sort_priority = x * y;
+ ti->sort_priority = x * 10000 + y;
sprintf(identifier, "%dx%d", x, y);
- sprintf(name, "%d x %d", x, y);
+ sprintf(name, "%d x %d [%d:%d]", x, y, xx, yy);
setString(&ti->identifier, identifier);
setString(&ti->name, name);
pushTreeInfo(&screen_modes, ti);
}
+ /* sort fullscreen modes to start with lowest available screen resolution */
sortTreeInfo(&screen_modes);
- /* set current screen mode for fullscreen mode to reliable default value */
+ /* set current screen mode for fullscreen mode to configured setup value */
screen_mode_current = getTreeInfoFromIdentifier(screen_modes,
- DEFAULT_FULLSCREEN_MODE);
+ setup.fullscreen_mode);
+
+ /* if that fails, set current screen mode to reliable default value */
+ if (screen_mode_current == NULL)
+ screen_mode_current = getTreeInfoFromIdentifier(screen_modes,
+ DEFAULT_FULLSCREEN_MODE);
+
+ /* if that also fails, set current screen mode to first available mode */
if (screen_mode_current == NULL)
screen_mode_current = screen_modes;
#if 0
{ TYPE_SWITCH, &setup.soft_scrolling, "Soft Scrolling:" },
{ TYPE_SWITCH, &setup.double_buffering,"Double-Buffering:" },
- { TYPE_SWITCH, &setup.fading, "Fading:" },
#endif
+ { TYPE_SWITCH, &setup.fading, "Fading:" },
{ TYPE_SWITCH, &setup.quick_switch, "Quick Player Focus Switch:" },
{ TYPE_SWITCH, &setup.quick_doors, "Quick Menu Doors:" },
{ TYPE_SWITCH, &setup.show_titlescreen,"Show Title Screens:" },
choice_store[setup_mode] = choice;
drawCursor(choice, FC_RED);
+
return;
}
else if (button == MB_MENU_LEAVE)
void (*menu_callback_function)(void) = setup_info[y].value;
menu_callback_function();
+
break; /* absolutely needed because function changes 'setup_info'! */
}
}
{
if (dx)
{
- int menu_navigation_type = (dx < 0 ? TYPE_LEAVE_MENU : TYPE_ENTER_MENU);
+ int menu_navigation_type = (dx < 0 ? TYPE_LEAVE : TYPE_ENTER);
if (setup_info[choice].type & menu_navigation_type ||
setup_info[choice].type & TYPE_BOOLEAN_STYLE)
y += dy;
}
+#if 1
+ if (IN_VIS_FIELD(x, y) && y >= 0 && y < num_setup_info)
+ {
+ if (button)
+ {
+ if (y != choice && setup_info[y].type & ~TYPE_SKIP_ENTRY)
+ {
+ drawCursor(y, FC_RED);
+ drawCursor(choice, FC_BLUE);
+ choice = choice_store[setup_mode] = y;
+ }
+ }
+ else if (!(setup_info[y].type & TYPE_GHOSTED))
+ {
+ /* when selecting key headline, execute function for key value change */
+ if (setup_info[y].type & TYPE_KEYTEXT &&
+ setup_info[y + 1].type & TYPE_KEY)
+ y++;
+
+ /* when selecting string value, execute function for list selection */
+ if (setup_info[y].type & TYPE_STRING && y > 0 &&
+ setup_info[y - 1].type & TYPE_ENTER_LIST)
+ y--;
+
+ if (setup_info[y].type & TYPE_ENTER_OR_LEAVE)
+ {
+ void (*menu_callback_function)(void) = setup_info[y].value;
+
+ menu_callback_function();
+ }
+ else
+ {
+ if (setup_info[y].type & TYPE_VALUE)
+ changeSetupValue(y);
+ }
+ }
+ }
+#else
if (IN_VIS_FIELD(x, y) &&
y >= 0 && y < num_setup_info && setup_info[y].type & ~TYPE_SKIP_ENTRY)
{
}
}
}
+#endif
}
void DrawSetupScreen_Input()