#include "init.h"
#include "config.h"
-/* screens in the setup menu */
-#define SETUP_MODE_MAIN 0
-#define SETUP_MODE_GAME 1
-#define SETUP_MODE_CHOOSE_GAME_SPEED 2
-#define SETUP_MODE_EDITOR 3
-#define SETUP_MODE_INPUT 4
-#define SETUP_MODE_SHORTCUT_1 5
-#define SETUP_MODE_SHORTCUT_2 6
-#define SETUP_MODE_GRAPHICS 7
-#define SETUP_MODE_CHOOSE_SCREEN_MODE 8
-#define SETUP_MODE_CHOOSE_SCROLL_DELAY 9
-#define SETUP_MODE_SOUND 10
-#define SETUP_MODE_ARTWORK 11
-#define SETUP_MODE_CHOOSE_GRAPHICS 12
-#define SETUP_MODE_CHOOSE_SOUNDS 13
-#define SETUP_MODE_CHOOSE_MUSIC 14
-
-#define MAX_SETUP_MODES 15
-
-/* for input setup functions */
-#define SETUPINPUT_SCREEN_POS_START 0
-#define SETUPINPUT_SCREEN_POS_END (SCR_FIELDY - 4)
-#define SETUPINPUT_SCREEN_POS_EMPTY1 (SETUPINPUT_SCREEN_POS_START + 3)
-#define SETUPINPUT_SCREEN_POS_EMPTY2 (SETUPINPUT_SCREEN_POS_END - 1)
-
/* screens on the info screen */
#define INFO_MODE_MAIN 0
#define INFO_MODE_TITLE 1
#define MAX_INFO_MODES 8
+/* screens on the setup screen */
+#define SETUP_MODE_MAIN 0
+#define SETUP_MODE_GAME 1
+#define SETUP_MODE_EDITOR 2
+#define SETUP_MODE_GRAPHICS 3
+#define SETUP_MODE_SOUND 4
+#define SETUP_MODE_ARTWORK 5
+#define SETUP_MODE_INPUT 6
+#define SETUP_MODE_SHORTCUTS_1 7
+#define SETUP_MODE_SHORTCUTS_2 8
+
+/* sub-screens on the setup screen (generic) */
+#define SETUP_MODE_CHOOSE_ARTWORK 9
+#define SETUP_MODE_CHOOSE_OTHER 10
+
+/* sub-screens on the setup screen (specific) */
+#define SETUP_MODE_CHOOSE_GAME_SPEED 11
+#define SETUP_MODE_CHOOSE_SCREEN_MODE 12
+#define SETUP_MODE_CHOOSE_SCROLL_DELAY 13
+#define SETUP_MODE_CHOOSE_GRAPHICS 14
+#define SETUP_MODE_CHOOSE_SOUNDS 15
+#define SETUP_MODE_CHOOSE_MUSIC 16
+
+#define MAX_SETUP_MODES 17
+
+/* for input setup functions */
+#define SETUPINPUT_SCREEN_POS_START 0
+#define SETUPINPUT_SCREEN_POS_END (SCR_FIELDY - 4)
+#define SETUPINPUT_SCREEN_POS_EMPTY1 (SETUPINPUT_SCREEN_POS_START + 3)
+#define SETUPINPUT_SCREEN_POS_EMPTY2 (SETUPINPUT_SCREEN_POS_END - 1)
+
/* for various menu stuff */
#define MENU_SCREEN_START_XPOS 1
#define MENU_SCREEN_START_YPOS 2
#define SC_BORDER_SIZE 14
-/* other useful macro definitions */
-#define BUTTON_GRAPHIC_ACTIVE(g) \
- (g == IMG_MENU_BUTTON_LEFT ? IMG_MENU_BUTTON_LEFT_ACTIVE : \
- g == IMG_MENU_BUTTON_RIGHT ? IMG_MENU_BUTTON_RIGHT_ACTIVE : \
- g == IMG_MENU_BUTTON_UP ? IMG_MENU_BUTTON_UP_ACTIVE : \
- g == IMG_MENU_BUTTON_DOWN ? IMG_MENU_BUTTON_DOWN_ACTIVE : \
- g == IMG_MENU_BUTTON_LEAVE_MENU ? IMG_MENU_BUTTON_LEAVE_MENU_ACTIVE : \
- g == IMG_MENU_BUTTON_ENTER_MENU ? IMG_MENU_BUTTON_ENTER_MENU_ACTIVE : \
- g == IMG_MENU_BUTTON_PREV_LEVEL ? IMG_MENU_BUTTON_PREV_LEVEL_ACTIVE : \
- g == IMG_MENU_BUTTON_NEXT_LEVEL ? IMG_MENU_BUTTON_NEXT_LEVEL_ACTIVE : \
- IMG_MENU_BUTTON_ACTIVE)
-
/* forward declarations of internal functions */
static void HandleScreenGadgets(struct GadgetInfo *);
static struct GadgetInfo *screen_gadget[NUM_SCREEN_GADGETS];
-static int setup_mode = SETUP_MODE_MAIN;
static int info_mode = INFO_MODE_MAIN;
+static int setup_mode = SETUP_MODE_MAIN;
static TreeInfo *screen_modes = NULL;
static TreeInfo *screen_mode_current = NULL;
(s) == GAME_MODE_PSEUDO_TYPENAME ? \
GAME_MODE_MAIN : GAME_MODE_DEFAULT)
+/* (there are no draw offset definitions needed for INFO_MODE_TITLE) */
#define DRAW_MODE_INFO(i) ((i) >= INFO_MODE_ELEMENTS && \
(i) <= INFO_MODE_LEVELSET ? (i) : \
INFO_MODE_MAIN)
+#define DRAW_MODE_SETUP(i) ((i) >= SETUP_MODE_MAIN && \
+ (i) <= SETUP_MODE_SHORTCUTS_2 ? (i) : \
+ (i) >= SETUP_MODE_CHOOSE_GRAPHICS && \
+ (i) <= SETUP_MODE_CHOOSE_MUSIC ? \
+ SETUP_MODE_CHOOSE_ARTWORK : \
+ SETUP_MODE_CHOOSE_OTHER)
+
#define DRAW_XOFFSET_INFO(i) (DRAW_MODE_INFO(i) == INFO_MODE_MAIN ? \
menu.draw_xoffset[GAME_MODE_INFO] : \
menu.draw_xoffset_info[DRAW_MODE_INFO(i)])
menu.draw_yoffset[GAME_MODE_INFO] : \
menu.draw_yoffset_info[DRAW_MODE_INFO(i)])
+#define DRAW_XOFFSET_SETUP(i) (DRAW_MODE_SETUP(i) == SETUP_MODE_MAIN ? \
+ menu.draw_xoffset[GAME_MODE_SETUP] : \
+ menu.draw_xoffset_setup[DRAW_MODE_SETUP(i)])
+#define DRAW_YOFFSET_SETUP(i) (DRAW_MODE_SETUP(i) == SETUP_MODE_MAIN ? \
+ menu.draw_yoffset[GAME_MODE_SETUP] : \
+ menu.draw_yoffset_setup[DRAW_MODE_SETUP(i)])
+
#define DRAW_XOFFSET(s) ((s) == GAME_MODE_INFO ? \
DRAW_XOFFSET_INFO(info_mode) : \
+ (s) == GAME_MODE_SETUP ? \
+ DRAW_XOFFSET_SETUP(setup_mode) : \
menu.draw_xoffset[DRAW_MODE(s)])
#define DRAW_YOFFSET(s) ((s) == GAME_MODE_INFO ? \
DRAW_YOFFSET_INFO(info_mode) : \
+ (s) == GAME_MODE_SETUP ? \
+ DRAW_YOFFSET_SETUP(setup_mode) : \
menu.draw_yoffset[DRAW_MODE(s)])
#define mSX (SX + DRAW_XOFFSET(game_status))
{
{
MAIN_CONTROL_NAME,
- &menu.main.button.name, IMG_MENU_BUTTON,
+ &menu.main.button.name, IMG_MENU_BUTTON_NAME,
&menu.main.text.name, &main_text_name,
&menu.main.input.name, &setup.player_name,
},
{
MAIN_CONTROL_LEVELS,
- &menu.main.button.levels, IMG_MENU_BUTTON_ENTER_MENU,
+ &menu.main.button.levels, IMG_MENU_BUTTON_LEVELS,
&menu.main.text.levels, &main_text_levels,
NULL, NULL,
},
{
MAIN_CONTROL_SCORES,
- &menu.main.button.scores, IMG_MENU_BUTTON,
+ &menu.main.button.scores, IMG_MENU_BUTTON_SCORES,
&menu.main.text.scores, &main_text_scores,
NULL, NULL,
},
{
MAIN_CONTROL_EDITOR,
- &menu.main.button.editor, IMG_MENU_BUTTON,
+ &menu.main.button.editor, IMG_MENU_BUTTON_EDITOR,
&menu.main.text.editor, &main_text_editor,
NULL, NULL,
},
{
MAIN_CONTROL_INFO,
- &menu.main.button.info, IMG_MENU_BUTTON_ENTER_MENU,
+ &menu.main.button.info, IMG_MENU_BUTTON_INFO,
&menu.main.text.info, &main_text_info,
NULL, NULL,
},
{
MAIN_CONTROL_GAME,
- &menu.main.button.game, IMG_MENU_BUTTON,
+ &menu.main.button.game, IMG_MENU_BUTTON_GAME,
&menu.main.text.game, &main_text_game,
NULL, NULL,
},
{
MAIN_CONTROL_SETUP,
- &menu.main.button.setup, IMG_MENU_BUTTON_ENTER_MENU,
+ &menu.main.button.setup, IMG_MENU_BUTTON_SETUP,
&menu.main.text.setup, &main_text_setup,
NULL, NULL,
},
{
MAIN_CONTROL_QUIT,
- &menu.main.button.quit, IMG_MENU_BUTTON,
+ &menu.main.button.quit, IMG_MENU_BUTTON_QUIT,
&menu.main.text.quit, &main_text_quit,
NULL, NULL,
},
Bitmap *bitmap = graphic_info[graphic].bitmap;
int sort_priority = graphic_info[graphic].sort_priority;
+#if 0
+ /* skip images and messages (fonts!) when using forced custom graphics */
+ if (setup.override_level_graphics && !initial)
+ continue;
+#endif
+
if (bitmap != NULL)
InitializeTitleControlsExt_AddTitleInfo(TRUE, initial, i, sort_priority);
}
char *filename = getLevelSetTitleMessageFilename(i, initial);
int sort_priority = tmi->sort_priority;
+#if 0
+ /* skip images and messages (fonts!) when using forced custom graphics */
+ if (setup.override_level_graphics)
+ continue;
+#endif
+
if (filename != NULL)
InitializeTitleControlsExt_AddTitleInfo(FALSE, initial, i, sort_priority);
}
{
num_title_screens = 0;
+#if 1
+ /* 1st step: initialize title screens for game start (only when starting) */
if (show_title_initial)
InitializeTitleControls_CheckTitleInfo(TRUE);
+#endif
+ /* 2nd step: initialize title screens for current level set */
InitializeTitleControls_CheckTitleInfo(FALSE);
/* sort title screens according to sort_priority and title number */
/* set main control text values to dynamically determined values */
sprintf(main_text_name, "%s", local_team_mode ? "Team:" : "Name:");
- sprintf(main_text_first_level, "%03d", leveldir_current->first_level);
- sprintf(main_text_last_level, "%03d", leveldir_current->last_level);
- sprintf(main_text_level_number, "%s", int2str(level_nr, 3));
+
+ strcpy(main_text_first_level, int2str(leveldir_current->first_level,
+ menu.main.text.first_level.size));
+ strcpy(main_text_last_level, int2str(leveldir_current->last_level,
+ menu.main.text.last_level.size));
+ strcpy(main_text_level_number, int2str(level_nr,
+ menu.main.text.level_number.size));
main_text_level_year = leveldir_current->year;
main_text_level_imported_from = leveldir_current->imported_from;
if (active_text)
{
- button_graphic = BUTTON_GRAPHIC_ACTIVE(button_graphic);
+ button_graphic = BUTTON_ACTIVE(button_graphic);
font_text = FONT_ACTIVE(font_text);
}
}
if (active)
- graphic = BUTTON_GRAPHIC_ACTIVE(graphic);
+ graphic = BUTTON_ACTIVE(graphic);
DrawBackgroundForGraphic(x, y, TILEX, TILEY, graphic);
DrawGraphicThruMaskExt(drawto, x, y, graphic, 0);
{
int last_game_status = game_status; /* save current game status */
+#if 0
/* force LEVELS draw offset on artwork setup screen */
game_status = GAME_MODE_LEVELS;
+#endif
drawCursorExt(0, ypos, active, -1);
{
int graphic = getTitleScreenGraphic(nr, initial);
Bitmap *bitmap = graphic_info[graphic].bitmap;
-#if 1
int width = graphic_info[graphic].width;
int height = graphic_info[graphic].height;
int src_x = graphic_info[graphic].src_x;
int src_y = graphic_info[graphic].src_y;
-#else
- int width = graphic_info[graphic].src_image_width;
- int height = graphic_info[graphic].src_image_height;
- int src_x = 0, src_y = 0;
-#endif
int dst_x, dst_y;
if (bitmap == NULL)
ClearRectangleOnBackground(drawto, 0, 0, WIN_XSIZE, WIN_YSIZE);
if (DrawingOnBackground(dst_x, dst_y))
+ {
+ SetClipOrigin(bitmap, bitmap->stored_clip_gc, dst_x - src_x, dst_y - src_y);
BlitBitmapMasked(bitmap, drawto, src_x, src_y, width, height, dst_x, dst_y);
+ }
else
BlitBitmap(bitmap, drawto, src_x, src_y, width, height, dst_x, dst_y);
redraw_mask = REDRAW_ALL;
-
- /* reset fading control values to default config settings */
-#if 1
-
-#if 0
- title = getTitleFading(nr, initial, TRUE);
-#endif
-
-#else
-
- title.fade_delay_final = title.fade_delay;
- title.post_delay_final = title.post_delay;
- title.auto_delay_final = title.auto_delay;
-
- /* override default settings with image config settings, if defined */
- if (graphic_info[graphic].anim_mode != ANIM_DEFAULT)
- title.anim_mode = graphic_info[graphic].anim_mode;
- if (graphic_info[graphic].fade_delay > -1)
- title.fade_delay = graphic_info[graphic].fade_delay;
- if (graphic_info[graphic].post_delay > -1)
- title.post_delay = graphic_info[graphic].post_delay;
- if (graphic_info[graphic].auto_delay > -1)
- title.auto_delay = graphic_info[graphic].auto_delay;
-#endif
}
void DrawTitleScreenMessage(int nr, boolean initial)
{
char *filename = getLevelSetTitleMessageFilename(nr, initial);
struct TitleMessageInfo *tmi = getTitleMessageInfo(nr, initial);
-#if 0
- int font_nr = FONT_TEXT_1;
- int font_width;
- int font_height;
- int pad_x = 16 + 4;
- int pad_y = 32 + 14;
- int sx = pad_x;
- int sy = pad_y;
- int max_chars_per_line;
- int max_lines_per_screen;
-#endif
int last_game_status = game_status; /* save current game status */
if (filename == NULL)
ClearRectangleOnBackground(drawto, 0, 0, WIN_XSIZE, WIN_YSIZE);
-#if 0
- font_width = getFontWidth(font_nr);
- font_height = getFontHeight(font_nr);
- max_chars_per_line = (WIN_XSIZE - 2 * pad_x) / font_width;
- max_lines_per_screen = (WIN_YSIZE - pad_y) / font_height - 1;
-#endif
-
-#if 1
DrawTextFile(ALIGNED_TEXT_XPOS(tmi), ALIGNED_TEXT_YPOS(tmi),
filename, tmi->font, tmi->chars, -1, tmi->lines, -1,
tmi->autowrap, tmi->centered, tmi->parse_comments);
-#else
- DrawTextFile(sx, sy, filename, font_nr, max_chars_per_line, -1,
- max_lines_per_screen, -1, tmi->autowrap, tmi->centered,
- tmi->parse_comments);
-#endif
game_status = last_game_status; /* restore current game status */
}
return (show_titlescreen && num_title_screens > 0);
}
-void DrawMainMenuExt(int redraw_mask, boolean do_fading)
+void DrawMainMenuExt(int fade_mask, boolean do_fading)
{
static LevelDirTree *leveldir_last_valid = NULL;
boolean levelset_has_changed = FALSE;
-#if 0
- boolean local_team_mode = (!options.network && setup.team_mode);
- char *name_text = (local_team_mode ? "Team:" : "Name:");
- int name_width, level_width;
-#endif
-#if 0
- int i;
-#endif
-#if 0
- /* !!! CHANGE THIS !!! */
- title = title_default;
-#endif
+ FadeSetLeaveScreen();
-#if 0
- printf("::: %d, %d\n", fading.anim_mode == ANIM_CROSSFADE,
- redraw_mask == REDRAW_ALL);
-#endif
-
-#if 1
- FadeOut(redraw_mask);
-#endif
+ /* do not fade out here -- function may continue and fade on editor screen */
UnmapAllGadgets();
FadeSoundsAndMusic();
return;
}
- /* needed if last screen was the editor screen */
- UndrawSpecialEditorDoor();
-
/* needed if last screen was the setup screen and fullscreen state changed */
ToggleFullscreenIfNeeded();
/* needed if last screen (level choice) changed graphics, sounds or music */
ReloadCustomArtwork(0);
-#if defined(TARGET_SDL)
- SetDrawtoField(DRAW_BACKBUFFER);
-#endif
-
-#if 0
- if (levelset_has_changed)
- fading = title_default;
-#endif
+ if (redraw_mask & REDRAW_ALL)
+ fade_mask = REDRAW_ALL;
#if 1
- if (CheckTitleScreen(levelset_has_changed))
- {
- game_status = GAME_MODE_TITLE;
+ FadeOut(fade_mask);
- DrawTitleScreen();
-
- return;
- }
+ /* needed if last screen was the editor screen */
+ UndrawSpecialEditorDoor();
+#if 0
+ if (fade_mask == REDRAW_FIELD)
+ BackToFront();
+#endif
+#endif
-#else
+#if defined(TARGET_SDL)
+ SetDrawtoField(DRAW_BACKBUFFER);
+#endif
- if (setup.show_titlescreen &&
- ((levelset_has_changed &&
- (graphic_info[IMG_TITLESCREEN_1].bitmap != NULL ||
- getLevelSetMessageFilename(1, FALSE) != NULL)) ||
- (show_title_initial &&
- (graphic_info[IMG_TITLESCREEN_INITIAL_1].bitmap != NULL ||
- getLevelSetMessageFilename(1, TRUE) != NULL))))
+ if (CheckTitleScreen(levelset_has_changed))
{
game_status = GAME_MODE_TITLE;
return;
}
-#endif
/* level_nr may have been set to value over handicap with level editor */
if (setup.handicap && level_nr > leveldir_current->handicap_level)
level_nr = leveldir_current->handicap_level;
LoadLevel(level_nr);
+ LoadScore(level_nr);
SetMainBackgroundImage(IMG_BACKGROUND_MAIN);
-#if 0
- FadeOut(redraw_mask);
-#endif
-
#if 1
- if (redraw_mask == REDRAW_ALL)
+ if (fade_mask == REDRAW_ALL)
{
-#if 0
- int door_state = GetDoorState();
-#endif
+ // int door_state = GetDoorState();
RedrawBackground();
// OpenDoor(door_state | DOOR_NO_DELAY | DOOR_FORCE_REDRAW);
-
-#if 0
-#if 1
- OpenDoor(DOOR_NO_DELAY | DOOR_FORCE_REDRAW);
-#else
- OpenDoor(DOOR_CLOSE_1 | DOOR_CLOSE_2 | DOOR_NO_DELAY | DOOR_FORCE_REDRAW);
-#endif
-#endif
}
#endif
- ClearWindow();
+ ClearField();
-#if 1
InitializeMainControls();
-#if 1
DrawCursorAndText_Main(-1, FALSE);
-#else
- for (i = 0; main_controls[i].nr != -1; i++)
- {
- struct MenuPosInfo *pos_button = main_controls[i].pos_button;
- struct MenuPosInfo *pos_text = main_controls[i].pos_text;
- struct MenuPosInfo *pos_input = main_controls[i].pos_input;
- char *text = main_controls[i].text;
- char *input = main_controls[i].input;
- int button_graphic = main_controls[i].button_graphic;
- int font_text = main_controls[i].font_text;
- int font_input = main_controls[i].font_input;
-
- if (pos_button != NULL)
- DrawGraphicThruMaskExt(drawto, mSX + pos_button->x, mSY + pos_button->y,
- button_graphic, 0);
-
- if (pos_text != NULL && text != NULL)
- DrawText(mSX + pos_text->x, mSY + pos_text->y, text, font_text);
-
- if (pos_input != NULL && input != NULL)
- DrawText(mSX + pos_input->x, mSY + pos_input->y, input, font_input);
- }
-#endif
-
-#else
-
- DrawHeadline();
-
- DrawText(mSX + 32, mSY + 2 * 32, name_text, FONT_MENU_1);
- DrawText(mSX + 32, mSY + 3 * 32, "Levelset", FONT_MENU_1);
- DrawText(mSX + 32, mSY + 4 * 32, "Hall Of Fame", FONT_MENU_1);
- DrawText(mSX + 32, mSY + 5 * 32, "Level Creator", FONT_MENU_1);
- DrawText(mSX + 32, mSY + 6 * 32, "Info Screen", FONT_MENU_1);
- DrawText(mSX + 32, mSY + 7 * 32, "Start Game", FONT_MENU_1);
- DrawText(mSX + 32, mSY + 8 * 32, "Setup", FONT_MENU_1);
- DrawText(mSX + 32, mSY + 9 * 32, "Quit", FONT_MENU_1);
-
- /* calculated after (possible) reload of custom artwork */
- name_width = getTextWidth(name_text, FONT_MENU_1);
- level_width = 9 * 32;
-
- DrawText(mSX + 32 + name_width, mSY + 2 * 32, setup.player_name,
- FONT_INPUT_1);
-
- DrawText(mSX + getCurrentLevelTextPos() * 32, mSY + 3 * 32,
- int2str(level_nr, 3), FONT_VALUE_1);
-
- {
- int text_height = getFontHeight(FONT_TEXT_3);
- int xpos = getLevelRangeTextPos() * 32 + 8;
- int ypos2 = 3 * 32 + 16;
- int ypos1 = ypos2 - text_height;
-
- DrawTextF(mSX - SX + xpos, mSY - SY + ypos1, FONT_TEXT_3,
- "%03d", leveldir_current->first_level);
- DrawTextF(mSX - SX + xpos, mSY - SY + ypos2, FONT_TEXT_3,
- "%03d", leveldir_current->last_level);
- }
-
- for (i = 0; i < 8; i++)
- initCursor(i, (i == 1 || i == 4 || i == 6 ? IMG_MENU_BUTTON_ENTER_MENU :
- IMG_MENU_BUTTON));
-
- DrawTextSCentered(326, FONT_TITLE_2, PROGRAM_GAME_BY_STRING);
-#endif
-
DrawPreviewLevel(TRUE);
HandleMainMenu(0, 0, 0, 0, MB_MENU_INITIALIZE);
FreeScreenGadgets();
CreateScreenGadgets();
-#if 0
- BlitBitmap(drawto, window, VX, VY, VXSIZE, VYSIZE, VX, VY);
- Delay(3000);
-#endif
-
/* map gadgets for main menu screen */
MapTapeButtons();
MapScreenMenuGadgets(SCREEN_MASK_MAIN);
- DrawMaskedBorder(REDRAW_ALL);
-
#if 1
- if (redraw_mask == REDRAW_ALL)
+ if (fade_mask == REDRAW_ALL)
{
int door_state = GetDoorState();
+ // RedrawBackground();
+
OpenDoor(door_state | DOOR_NO_DELAY | DOOR_FORCE_REDRAW);
}
#endif
-#if 0
- {
- game_status = GAME_MODE_PSEUDO_PREVIEW;
-
- DrawText(20, 400, "text_3.PREVIEW", FONT_TEXT_3);
- DrawText(20, 420, "text_4.PREVIEW", FONT_TEXT_4);
-
- game_status = GAME_MODE_MAIN;
-
- DrawText(20, 440, "text_3.MAIN", FONT_TEXT_3);
- DrawText(20, 460, "text_4.MAIN", FONT_TEXT_4);
- }
-#endif
+ DrawMaskedBorder(REDRAW_ALL);
-#if 1
- FadeIn(redraw_mask);
-#else
-#if 1
- if (!do_fading)
- BackToFront();
- else if (fading.anim_mode == ANIM_CROSSFADE)
- FadeCross(redraw_mask);
- else
- FadeIn(redraw_mask);
-#else
- if (do_fading)
- FadeIn(redraw_mask);
- else
- BackToFront();
-#endif
-#endif
+ FadeIn(fade_mask);
+ FadeSetEnterMenu();
#if 1
- FadeSetEnterMenu();
-#else
- fading = title_default;
+ /* update screen area with special editor door */
+ redraw_mask |= REDRAW_ALL;
+ BackToFront();
#endif
SetMouseCursor(CURSOR_DEFAULT);
OpenDoor(DOOR_CLOSE_1 | DOOR_OPEN_2);
}
-void DrawAndFadeInMainMenu(int redraw_mask)
+void DrawAndFadeInMainMenu(int fade_mask)
{
- DrawMainMenuExt(redraw_mask, TRUE);
+ DrawMainMenuExt(fade_mask, TRUE);
}
void DrawMainMenu()
static int last_sound = -1, last_music = -1;
boolean return_to_main_menu = FALSE;
boolean use_fading_main_menu = TRUE;
-#if 0
-#if 1
- boolean use_cross_fading = FALSE;
-#else
- boolean use_cross_fading = !show_title_initial; /* default */
-#endif
-#endif
struct TitleControlInfo *tci;
struct TitleFadingInfo fading_default;
struct TitleFadingInfo fading_last = fading;
if (button == MB_MENU_INITIALIZE)
{
-#if 0
- boolean use_cross_fading = (fading.anim_mode == ANIM_CROSSFADE);
-#endif
-
-#if 0
- int last_game_status = game_status; /* save current game status */
-#endif
-
title_delay = 0;
title_screen_nr = 0;
tci = &title_controls[title_screen_nr];
last_sound = SND_UNDEFINED;
last_music = MUS_UNDEFINED;
-#if 0
- /* determine number of title screens to display (images and messages) */
- InitializeTitleControls();
-#endif
-
if (game_status == GAME_MODE_INFO)
{
if (num_title_screens == 0)
DrawInfoScreen_NotAvailable("Title screen information:",
"No title screen for this level set.");
-#if 0
- /* use default settings for fading, but always disable auto delay */
- fading = title_default;
- fading.auto_delay = -1;
-#endif
-
return;
}
SetMouseCursor(CURSOR_NONE);
- // printf("::: mode: %d, delay: %d\n", fading.fade_mode, fading.fade_delay);
-
#if 1
FadeIn(REDRAW_ALL);
#endif
}
else if (button == MB_MENU_CHOICE)
{
-#if 0
- boolean use_cross_fading = (fading.anim_mode == ANIM_CROSSFADE);
-#endif
-
if (game_status == GAME_MODE_INFO && num_title_screens == 0)
{
#if 0
FadeOut(REDRAW_FIELD);
#endif
- FadeSetStartItem();
+ FadeSetEnterScreen();
info_mode = INFO_MODE_MAIN;
DrawAndFadeInInfoScreen(REDRAW_FIELD);
if (title_screen_nr < num_title_screens)
{
-#if 1
-#if 0
- boolean use_cross_fading = (fading.anim_mode == ANIM_CROSSFADE);
-#endif
-#else
- int anim_mode;
-
- if (tci->is_image)
- anim_mode =
- graphic_info[getTitleScreenGraphic(tci->local_nr,
- tci->initial)].anim_mode;
- else
- anim_mode = ANIM_FADE; /* ??? */
-
- use_cross_fading = (anim_mode == ANIM_FADE ? FALSE :
- anim_mode == ANIM_CROSSFADE ? TRUE :
- use_cross_fading);
-#endif
-
sound = getTitleSound(tci);
music = getTitleMusic(tci);
last_music = music;
#endif
-#if 0
- printf("::: %d -> %d\n", fading.fade_mode, fading_next.fade_mode);
-#endif
-
#if 1
/* last screen already faded out, next screen has no animation */
if (!(fading.fade_mode & FADE_TYPE_TRANSFORM) &&
{
FadeSoundsAndMusic();
-#if 0
-#if 1
- {
-#if 0
- boolean use_cross_fading = (fading.anim_mode == ANIM_CROSSFADE);
-#endif
-
-#if 1
- FadeOut(REDRAW_ALL);
-#endif
- }
-#else
- FadeOut(REDRAW_ALL);
-#endif
-#endif
-
return_to_main_menu = TRUE;
}
}
level_nr = new_level_nr;
-#if 1
DrawText(mSX + mci->pos_text->x, mSY + mci->pos_text->y,
- int2str(level_nr, 3), mci->pos_text->font);
-#else
- DrawText(mSX + 11 * 32, mSY + 3 * 32, int2str(level_nr, 3), FONT_VALUE_1);
-#endif
+ int2str(level_nr, menu.main.text.level_number.size),
+ mci->pos_text->font);
LoadLevel(level_nr);
DrawPreviewLevel(TRUE);
}
}
-#if 1
-
void HandleMainMenu(int mx, int my, int dx, int dy, int button)
{
static int choice = MAIN_CONTROL_GAME;
game_status = GAME_MODE_EDITOR;
- FadeSetStartItem();
+ FadeSetEnterScreen();
DrawLevelEd();
}
game_status = GAME_MODE_INFO;
info_mode = INFO_MODE_MAIN;
-#if 0
- fading = menu.navigation;
-#endif
-
DrawInfoScreen();
}
else if (pos == MAIN_CONTROL_GAME)
{
- StartGameActions(options.network, setup.autorecord, NEW_RANDOMIZE);
+ StartGameActions(options.network, setup.autorecord, level.random_seed);
}
else if (pos == MAIN_CONTROL_SETUP)
{
}
}
-#else
-
-void HandleMainMenu(int mx, int my, int dx, int dy, int button)
-{
- static int choice = 5;
- int x = 0;
- int y = choice;
-
- if (button == MB_MENU_INITIALIZE)
- {
- drawCursor(choice, TRUE);
-
- return;
- }
-
- if (mx || my) /* mouse input */
- {
- x = (mx - mSX) / 32;
- y = (my - mSY) / 32 - MENU_SCREEN_START_YPOS;
- }
- else if (dx || dy) /* keyboard input */
- {
- if (dx && choice == 1)
- x = (dx < 0 ? 10 : 14);
- else if (dx > 0)
- {
- if (choice == 4 || choice == 6)
- button = MB_MENU_CHOICE;
- }
- else if (dy)
- y = choice + dy;
- }
-
- if (y == 1 && dx != 0 && button)
- {
- HandleMainMenu_SelectLevel(1, dx < 0 ? -1 : +1);
- }
- else if (IN_VIS_FIELD(x, y) &&
- y >= 0 && y <= 7 && (y != 1 || x < 10))
- {
- if (button)
- {
- if (y != choice)
- {
- drawCursor(choice, FALSE);
- drawCursor(y, TRUE);
-
- choice = y;
- }
- }
- else
- {
- if (y == 0)
- {
- game_status = GAME_MODE_PSEUDO_TYPENAME;
- HandleTypeName(strlen(setup.player_name), 0);
- }
- else if (y == 1)
- {
- if (leveldir_first)
- {
- game_status = GAME_MODE_LEVELS;
- SaveLevelSetup_LastSeries();
- SaveLevelSetup_SeriesInfo();
-
-#if 0
- gotoTopLevelDir();
-#endif
-
- DrawChooseLevel();
- }
- }
- else if (y == 2)
- {
- game_status = GAME_MODE_SCORES;
- DrawHallOfFame(-1);
- }
- else if (y == 3)
- {
- if (leveldir_current->readonly &&
- !strEqual(setup.player_name, "Artsoft"))
- Request("This level is read only !", REQ_CONFIRM);
- game_status = GAME_MODE_EDITOR;
- DrawLevelEd();
- }
- else if (y == 4)
- {
- game_status = GAME_MODE_INFO;
- info_mode = INFO_MODE_MAIN;
- DrawInfoScreen();
- }
- else if (y == 5)
- {
- StartGameActions(options.network, setup.autorecord, NEW_RANDOMIZE);
- }
- else if (y == 6)
- {
- game_status = GAME_MODE_SETUP;
- setup_mode = SETUP_MODE_MAIN;
-
- DrawSetupScreen();
- }
- else if (y == 7)
- {
- SaveLevelSetup_LastSeries();
- SaveLevelSetup_SeriesInfo();
-
- if (Request("Do you really want to quit ?", REQ_ASK | REQ_STAY_CLOSED))
- game_status = GAME_MODE_QUIT;
- }
- }
- }
-
- if (game_status == GAME_MODE_MAIN)
- {
- DrawPreviewLevel(FALSE);
- DoAnimation();
- }
-}
-
-#endif
-
/* ========================================================================= */
/* info screen functions */
static void execInfoTitleScreen()
{
-#if 0
- FadeSetStartItem();
-#endif
-
info_mode = INFO_MODE_TITLE;
+
DrawInfoScreen();
}
static void execInfoElements()
{
-#if 0
- FadeSetStartItem();
-#endif
-
info_mode = INFO_MODE_ELEMENTS;
+
DrawInfoScreen();
}
static void execInfoMusic()
{
-#if 0
- FadeSetStartItem();
-#endif
-
info_mode = INFO_MODE_MUSIC;
+
DrawInfoScreen();
}
static void execInfoCredits()
{
-#if 0
- FadeSetStartItem();
-#endif
-
info_mode = INFO_MODE_CREDITS;
+
DrawInfoScreen();
}
static void execInfoProgram()
{
-#if 0
- FadeSetStartItem();
-#endif
-
info_mode = INFO_MODE_PROGRAM;
+
DrawInfoScreen();
}
static void execInfoVersion()
{
-#if 0
- FadeSetStartItem();
-#endif
-
info_mode = INFO_MODE_VERSION;
+
DrawInfoScreen();
}
static void execInfoLevelSet()
{
-#if 0
- FadeSetStartItem();
-#endif
-
info_mode = INFO_MODE_LEVELSET;
+
DrawInfoScreen();
}
static void execExitInfo()
{
-#if 0
- FadeSetLeaveMenu();
-#endif
-
game_status = GAME_MODE_MAIN;
-#if 1
+
DrawMainMenuExt(REDRAW_FIELD, FALSE);
-#else
- DrawMainMenu();
-#endif
}
static struct TokenInfo info_info_main[] =
drawCursor(pos, active);
}
-static void DrawInfoScreen_Main(int redraw_mask, boolean do_fading)
+static void DrawInfoScreen_Main(int fade_mask, boolean do_fading)
{
int i;
/* (needed after displaying title screens which disable auto repeat) */
KeyboardAutoRepeatOn();
+ FadeSetLeaveScreen();
+
#if 1
- FadeOut(redraw_mask);
+ FadeOut(fade_mask);
#endif
#if 1
- if (redraw_mask == REDRAW_ALL)
+ if (fade_mask == REDRAW_ALL)
{
RedrawBackground();
+
OpenDoor(DOOR_CLOSE_1 | DOOR_CLOSE_2 | DOOR_NO_DELAY | DOOR_FORCE_REDRAW);
}
#endif
- ClearWindow();
+ ClearField();
DrawTextSCentered(mSY - SY + 16, FONT_TITLE_1, "Info Screen");
info_info = info_info_main;
num_info_info = 0;
+#if 1
+ for (i = 0; info_info[i].type != 0 && i < MAX_MENU_ENTRIES_ON_SCREEN; i++)
+#else
for (i = 0; info_info[i].type != 0 && i < NUM_MENU_ENTRIES_ON_SCREEN; i++)
- {
-#if 0
- int xpos = MENU_SCREEN_START_XPOS;
- int ypos = MENU_SCREEN_START_YPOS + i;
- int font_nr = FONT_MENU_1;
#endif
-
+ {
if (info_info[i].type & (TYPE_ENTER_MENU|TYPE_ENTER_LIST))
initCursor(i, IMG_MENU_BUTTON_ENTER_MENU);
else if (info_info[i].type & (TYPE_LEAVE_MENU|TYPE_LEAVE_LIST))
else if (info_info[i].type & ~TYPE_SKIP_ENTRY)
initCursor(i, IMG_MENU_BUTTON);
-#if 1
DrawCursorAndText_Info(i, FALSE);
-#else
- DrawText(mSX + xpos * 32, mSY + ypos * 32, info_info[i].text, font_nr);
-#endif
num_info_info++;
}
PlayMenuSound();
PlayMenuMusic();
- DrawMaskedBorder(redraw_mask);
+ DrawMaskedBorder(fade_mask);
-#if 1
- FadeIn(redraw_mask);
-#else
-#if 1
- if (!do_fading)
- BackToFront();
- else if (fading.anim_mode == ANIM_CROSSFADE)
- FadeCross(redraw_mask);
- else
- FadeIn(redraw_mask);
-#else
- if (do_fading)
- FadeIn(redraw_mask);
- else
- BackToFront();
-#endif
-#endif
+ FadeIn(fade_mask);
InitAnimation();
}
choice++;
choice_store[info_mode] = choice;
-#if 1
DrawCursorAndText_Info(choice, TRUE);
-#else
- drawCursor(choice, TRUE);
-#endif
return;
}
if (info_info[choice].type & menu_navigation_type ||
info_info[choice].type & TYPE_ENTER_SCREEN ||
- info_info[choice].type & TYPE_BOOLEAN_STYLE)
+ info_info[choice].type & TYPE_BOOLEAN_STYLE ||
+ info_info[choice].type & TYPE_YES_NO_AUTO)
button = MB_MENU_CHOICE;
}
else if (dy)
{
PlaySound(SND_MENU_ITEM_ACTIVATING);
-#if 1
DrawCursorAndText_Info(choice, FALSE);
DrawCursorAndText_Info(y, TRUE);
-#else
- drawCursor(choice, FALSE);
- drawCursor(y, TRUE);
-#endif
choice = choice_store[info_mode] = y;
}
void DrawInfoScreen_NotAvailable(char *text_title, char *text_error)
{
-#if 1
int ystart1 = mSY - SY + 100;
int ystart2 = mSY - SY + 150;
int ybottom = mSY - SY + SYSIZE - 20;
-#else
- int ystart1 = 100;
- int ystart2 = 150;
- int ybottom = SYSIZE - 20;
-#endif
SetMainBackgroundImageIfDefined(IMG_BACKGROUND_INFO_LEVELSET);
-#if 1
FadeOut(REDRAW_FIELD);
-#endif
- ClearWindow();
+ ClearField();
DrawHeadline();
DrawTextSCentered(ystart1, FONT_TEXT_1, text_title);
DrawTextSCentered(ybottom, FONT_TEXT_4,
"Press any key or button for info menu");
-#if 1
FadeIn(REDRAW_FIELD);
-#endif
}
void DrawInfoScreen_HelpAnim(int start, int max_anims, boolean init)
for (i = 0; i < MAX_INFO_ELEMENTS_ON_SCREEN; i++)
infoscreen_step[i] = infoscreen_frame[i] = 0;
- ClearWindow();
+ ClearField();
DrawHeadline();
DrawTextSCentered(ystart1, FONT_TEXT_1, "The Game Elements:");
void DrawInfoScreen_HelpText(int element, int action, int direction, int ypos)
{
-#if 1
int font_nr = FONT_INFO_ELEMENTS;
-#else
- int font_nr = FONT_LEVEL_NUMBER;
-#endif
int font_width = getFontWidth(font_nr);
int sx = mSX + MINI_TILEX + TILEX + MINI_TILEX;
int sy = mSY + 65 + 2 * 32 + 1;
if (strlen(text) <= max_chars_per_line) /* only one line of text */
sy += getFontHeight(font_nr) / 2;
-#if 1
DrawTextBuffer(sx, sy + ypos * ystep, text, font_nr,
max_chars_per_line, -1, max_lines_per_text, -1,
TRUE, FALSE, FALSE);
-#else
- DrawTextWrapped(sx, sy + ypos * ystep, text, font_nr,
- max_chars_per_line, max_lines_per_text);
-#endif
}
void DrawInfoScreen_TitleScreen()
{
SetMainBackgroundImageIfDefined(IMG_BACKGROUND_INFO_ELEMENTS);
-#if 1
FadeOut(REDRAW_FIELD);
-#endif
LoadHelpAnimInfo();
LoadHelpTextInfo();
HandleInfoScreen_Elements(MB_MENU_INITIALIZE);
-#if 1
FadeIn(REDRAW_FIELD);
-#endif
InitAnimation();
}
if (page >= num_pages)
{
- FadeSoundsAndMusic();
-
-#if 0
- FadeOut(REDRAW_FIELD);
-#endif
+ FadeSoundsAndMusic();
info_mode = INFO_MODE_MAIN;
DrawAndFadeInInfoScreen(REDRAW_FIELD);
return;
}
+#if 1
+ if (page > 0)
+ FadeSetNextScreen();
+#endif
+
if (button != MB_MENU_INITIALIZE)
- FadeCrossSaveBackbuffer();
+ FadeOut(REDRAW_FIELD);
DrawInfoScreen_HelpAnim(page * anims_per_page, num_anims, TRUE);
if (button != MB_MENU_INITIALIZE)
- FadeCross(REDRAW_FIELD);
+ FadeIn(REDRAW_FIELD);
}
else
{
FadeOut(REDRAW_FIELD);
#endif
- ClearWindow();
+ ClearField();
DrawHeadline();
LoadMusicInfo();
{
FadeSoundsAndMusic();
- ClearWindow();
+ ClearField();
DrawHeadline();
DrawTextSCentered(ystart1, FONT_TEXT_1,
{
FadeSoundsAndMusic();
-#if 0
- FadeOut(REDRAW_FIELD);
-#endif
-
info_mode = INFO_MODE_MAIN;
DrawAndFadeInInfoScreen(REDRAW_FIELD);
FadeSoundsAndMusic();
+#if 1
+ if (list != music_file_info)
+ FadeSetNextScreen();
+#endif
+
if (button != MB_MENU_INITIALIZE)
- FadeCrossSaveBackbuffer();
+ FadeOut(REDRAW_FIELD);
- ClearWindow();
+ ClearField();
DrawHeadline();
if (list->is_sound)
"Press any key or button for next page");
if (button != MB_MENU_INITIALIZE)
- FadeCross(REDRAW_FIELD);
+ FadeIn(REDRAW_FIELD);
}
if (list != NULL && list->is_sound && sound_info[list->music].loop)
PlaySoundLoop(list->music);
}
-static boolean DrawInfoScreen_CreditsScreen(int screen_nr)
+static void DrawInfoScreen_CreditsScreen(int screen_nr)
{
int ystart1 = mSY - SY + 100;
int ystart2 = mSY - SY + 150;
int ybottom = mSY - SY + SYSIZE - 20;
int ystep = 30;
- if (screen_nr > 8)
- return FALSE;
-
- ClearWindow();
+ ClearField();
DrawHeadline();
DrawTextSCentered(ystart1, FONT_TEXT_1, "Credits:");
"Thanks to");
DrawTextSCentered(ystart2 + 1 * ystep, FONT_TEXT_3,
"David Tritscher");
+#if 1
+ DrawTextSCentered(ystart2 + 2 * ystep, FONT_TEXT_2,
+ "for the code base used for the");
+ DrawTextSCentered(ystart2 + 3 * ystep, FONT_TEXT_2,
+ "native Emerald Mine engine");
+#else
DrawTextSCentered(ystart2 + 2 * ystep, FONT_TEXT_2,
"for the new Emerald Mine engine");
+#endif
}
else if (screen_nr == 7)
{
DrawTextSCentered(ystart2 + 4 * ystep, FONT_TEXT_3,
"since 1995");
}
-#if 0
- else
- {
- return FALSE;
- }
-#endif
DrawTextSCentered(ybottom, FONT_TEXT_4,
"Press any key or button for next page");
-
- return TRUE;
}
void DrawInfoScreen_Credits()
void HandleInfoScreen_Credits(int button)
{
static int screen_nr = 0;
+ int num_screens = 9;
if (button == MB_MENU_INITIALIZE)
{
screen_nr = 0;
- DrawInfoScreen_CreditsScreen(screen_nr);
+ // DrawInfoScreen_CreditsScreen(screen_nr);
}
- else if (button == MB_MENU_LEAVE)
+
+ if (button == MB_MENU_LEAVE)
{
PlaySound(SND_MENU_ITEM_SELECTING);
return;
}
- else if (button == MB_MENU_CHOICE)
+ else if (button == MB_MENU_CHOICE || button == MB_MENU_INITIALIZE)
{
- boolean show_screen;
-
- PlaySound(SND_MENU_ITEM_SELECTING);
-
- screen_nr++;
-
- FadeCrossSaveBackbuffer();
-
- show_screen = DrawInfoScreen_CreditsScreen(screen_nr);
-
- if (show_screen)
+ if (button != MB_MENU_INITIALIZE)
{
- FadeCross(REDRAW_FIELD);
+ PlaySound(SND_MENU_ITEM_SELECTING);
+
+ screen_nr++;
}
- else
+
+ if (screen_nr >= num_screens)
{
FadeSoundsAndMusic();
-#if 0
- FadeOut(REDRAW_FIELD);
-#endif
-
info_mode = INFO_MODE_MAIN;
DrawAndFadeInInfoScreen(REDRAW_FIELD);
+
+ return;
}
+
+#if 1
+ if (screen_nr > 0)
+ FadeSetNextScreen();
+#endif
+
+ if (button != MB_MENU_INITIALIZE)
+ FadeOut(REDRAW_FIELD);
+
+ DrawInfoScreen_CreditsScreen(screen_nr);
+
+ if (button != MB_MENU_INITIALIZE)
+ FadeIn(REDRAW_FIELD);
}
else
{
FadeOut(REDRAW_FIELD);
#endif
- ClearWindow();
+ ClearField();
DrawHeadline();
DrawTextSCentered(ystart1, FONT_TEXT_1, "Program Information:");
FadeOut(REDRAW_FIELD);
#endif
- ClearWindow();
+ ClearField();
DrawHeadline();
DrawTextSCentered(ystart1, FONT_TEXT_1, "Version Information:");
FadeOut(REDRAW_FIELD);
#endif
- ClearWindow();
+ ClearField();
DrawHeadline();
DrawTextCentered(mSY + 100, FONT_TEXT_1, "Level Set Information:");
}
}
-static void DrawInfoScreenExt(int redraw_mask, boolean do_fading)
+static void DrawInfoScreenExt(int fade_mask, boolean do_fading)
{
SetMainBackgroundImage(IMG_BACKGROUND_INFO);
else if (info_mode == INFO_MODE_LEVELSET)
DrawInfoScreen_LevelSet();
else
- DrawInfoScreen_Main(redraw_mask, do_fading);
+ DrawInfoScreen_Main(fade_mask, do_fading);
if (info_mode != INFO_MODE_MAIN &&
info_mode != INFO_MODE_TITLE &&
}
}
-void DrawAndFadeInInfoScreen(int redraw_mask)
+void DrawAndFadeInInfoScreen(int fade_mask)
{
- DrawInfoScreenExt(redraw_mask, TRUE);
+ DrawInfoScreenExt(fade_mask, TRUE);
}
void DrawInfoScreen()
{
static char last_player_name[MAX_PLAYER_NAME_LEN + 1];
struct MainControlInfo *mci = getMainControlInfo(MAIN_CONTROL_NAME);
-#if 1
struct TextPosInfo *pos = mci->pos_input;
int startx = mSX + ALIGNED_TEXT_XPOS(pos);
int starty = mSY + ALIGNED_TEXT_YPOS(pos);
-#endif
-#if 1
static int xpos = 0;
-#else
- static int xpos = 0, ypos = 2;
-#endif
int font_nr = pos->font;
int font_active_nr = FONT_ACTIVE(font_nr);
int font_width = getFontWidth(font_active_nr);
-#if 1
-#if 0
- int startx = mSX + mci->pos_input->x;
- int starty = mSY + mci->pos_input->y;
-#endif
-#else
- int name_width = getFontWidth(FONT_MENU_1) * strlen("Name:");
- int startx = mSX + 32 + name_width;
- int starty = mSY + ypos * 32;
-#endif
char key_char = getValidConfigValueChar(getCharFromKey(key));
boolean is_valid_key_char = (key_char != 0 && (key_char != ' ' || xpos > 0));
boolean is_active = TRUE;
strcpy(last_player_name, setup.player_name);
xpos = newxpos;
-
-#if 0
- /* add one character width for added cursor character */
- pos->width += font_width;
- startx = mSX + ALIGNED_TEXT_XPOS(pos);
-
- DrawText(startx, starty, setup.player_name, font_active_nr);
- DrawText(startx + xpos * font_width, starty, "_", font_active_nr);
-#endif
}
else if (is_valid_key_char && xpos < MAX_PLAYER_NAME_LEN)
{
setup.player_name[xpos + 1] = 0;
xpos++;
-
-#if 0
- /* add one character width for added name text character */
- pos->width += font_width;
- startx = mSX + ALIGNED_TEXT_XPOS(pos);
-
- DrawText(startx, starty, setup.player_name, font_active_nr);
- DrawText(startx + xpos * font_width, starty, "_", font_active_nr);
-#endif
}
else if ((key == KSYM_Delete || key == KSYM_BackSpace) && xpos > 0)
{
xpos--;
setup.player_name[xpos] = 0;
-
-#if 0
- /* remove one character width for removed name text character */
- pos->width -= font_width;
- startx = mSX + ALIGNED_TEXT_XPOS(pos);
-
- DrawText(startx, starty, setup.player_name, font_active_nr);
- DrawText(startx + xpos * font_width, starty, "_ ", font_active_nr);
-#endif
}
else if (key == KSYM_Return && xpos > 0)
{
-#if 0
- /* remove one character width for removed cursor text character */
- pos->width -= font_width;
- startx = mSX + ALIGNED_TEXT_XPOS(pos);
-
- DrawText(startx, starty, setup.player_name, font_nr);
- DrawText(startx + xpos * font_width, starty, " ", font_active_nr);
-#endif
-
SaveSetup();
is_active = FALSE;
FadeOut(REDRAW_FIELD);
#endif
- ClearWindow();
+ ClearField();
HandleChooseTree(0, 0, 0, 0, MB_MENU_INITIALIZE, ti_ptr);
MapScreenTreeGadgets(*ti_ptr);
DrawTextSCentered(mSY - SY + yoffset, FONT_TITLE_1, title_string);
+#if 0
/* force LEVELS font on artwork setup screen */
game_status = GAME_MODE_LEVELS;
+#endif
#if 1
/* clear tree list area, but not title or scrollbar */
int last_game_status = game_status; /* save current game status */
boolean position_set_by_scrollbar = (dx == 999);
+#if 0
/* force LEVELS draw offset on choose level and artwork setup screen */
game_status = GAME_MODE_LEVELS;
+#endif
if (num_entries <= NUM_MENU_ENTRIES_ON_SCREEN)
num_page_entries = num_entries;
else
{
game_status = GAME_MODE_MAIN;
-#if 1
+
DrawMainMenuExt(REDRAW_FIELD, FALSE);
-#else
- DrawMainMenu();
-#endif
}
return;
{
int last_game_status = game_status; /* save current game status */
+#if 0
/* force LEVELS draw offset on artwork setup screen */
game_status = GAME_MODE_LEVELS;
+#endif
x = (mx - mSX) / 32;
y = (my - mSY) / 32 - MENU_SCREEN_START_YPOS;
}
else
{
- FadeSetStartItem();
+ FadeSetEnterScreen();
node_cursor->cl_first = ti->cl_first;
node_cursor->cl_cursor = ti->cl_cursor;
if (highlight_position < 0)
LoadScore(level_nr);
- FadeSetStartItem();
+ FadeSetEnterScreen();
+
+ // printf("::: %d: %d\n", game_status, menu.enter_screen[game_status]);
#if 1
FadeOut(REDRAW_FIELD);
int i;
SetMainBackgroundImage(IMG_BACKGROUND_SCORES);
- ClearWindow();
+ ClearField();
DrawTextSCentered(MENU_TITLE1_YPOS, FONT_TITLE_1, "Hall Of Fame");
DrawTextFCentered(MENU_TITLE2_YPOS, FONT_TITLE_2,
static void execSetupMain()
{
-#if 0
- FadeSetLeaveMenu();
-#endif
-
setup_mode = SETUP_MODE_MAIN;
+
DrawSetupScreen();
}
static void execSetupGame()
{
-#if 0
- FadeSetEnterMenu();
-#endif
-
if (game_speeds == NULL)
{
int i;
game_speed_text = game_speed_current->name;
setup_mode = SETUP_MODE_GAME;
+
DrawSetupScreen();
}
static void execSetupChooseGameSpeed()
{
-#if 0
- FadeSetEnterMenu();
-#endif
-
setup_mode = SETUP_MODE_CHOOSE_GAME_SPEED;
+
DrawSetupScreen();
}
static void execSetupEditor()
{
-#if 0
- FadeSetEnterMenu();
-#endif
-
setup_mode = SETUP_MODE_EDITOR;
+
DrawSetupScreen();
}
static void execSetupGraphics()
{
-#if 0
- FadeSetEnterMenu();
-#endif
-
if (video.fullscreen_available && screen_modes == NULL)
{
int i;
static void execSetupChooseScreenMode()
{
-#if 0
- FadeSetEnterMenu();
-#endif
-
if (!video.fullscreen_available)
return;
setup_mode = SETUP_MODE_CHOOSE_SCREEN_MODE;
+
DrawSetupScreen();
}
static void execSetupChooseScrollDelay()
{
-#if 0
- FadeSetEnterMenu();
-#endif
-
setup_mode = SETUP_MODE_CHOOSE_SCROLL_DELAY;
+
DrawSetupScreen();
}
static void execSetupSound()
{
-#if 0
- FadeSetEnterMenu();
-#endif
-
setup_mode = SETUP_MODE_SOUND;
+
DrawSetupScreen();
}
static void execSetupArtwork()
{
#if 0
- FadeSetEnterMenu();
+ printf("::: '%s', '%s', '%s'\n",
+ artwork.gfx_current->subdir,
+ artwork.gfx_current->fullpath,
+ artwork.gfx_current->basepath);
#endif
setup.graphics_set = artwork.gfx_current->identifier;
music_set_name = artwork.mus_current->name;
setup_mode = SETUP_MODE_ARTWORK;
+
DrawSetupScreen();
}
static void execSetupChooseGraphics()
{
-#if 0
- FadeSetEnterMenu();
-#endif
-
setup_mode = SETUP_MODE_CHOOSE_GRAPHICS;
+
DrawSetupScreen();
}
static void execSetupChooseSounds()
{
-#if 0
- FadeSetEnterMenu();
-#endif
-
setup_mode = SETUP_MODE_CHOOSE_SOUNDS;
+
DrawSetupScreen();
}
static void execSetupChooseMusic()
{
-#if 0
- FadeSetEnterMenu();
-#endif
-
setup_mode = SETUP_MODE_CHOOSE_MUSIC;
+
DrawSetupScreen();
}
static void execSetupInput()
{
-#if 0
- FadeSetEnterMenu();
-#endif
-
setup_mode = SETUP_MODE_INPUT;
+
DrawSetupScreen();
}
-static void execSetupShortcut1()
+static void execSetupShortcuts1()
{
-#if 0
- FadeSetEnterMenu();
-#endif
+ setup_mode = SETUP_MODE_SHORTCUTS_1;
- setup_mode = SETUP_MODE_SHORTCUT_1;
DrawSetupScreen();
}
-static void execSetupShortcut2()
+static void execSetupShortcuts2()
{
-#if 0
- FadeSetEnterMenu();
-#endif
+ setup_mode = SETUP_MODE_SHORTCUTS_2;
- setup_mode = SETUP_MODE_SHORTCUT_2;
DrawSetupScreen();
}
static void execExitSetup()
{
-#if 0
- FadeSetLeaveMenu();
-#endif
-
game_status = GAME_MODE_MAIN;
-#if 1
+
DrawMainMenuExt(REDRAW_FIELD, FALSE);
-#else
- DrawMainMenu();
-#endif
}
static void execSaveAndExitSetup()
{ TYPE_ENTER_MENU, execSetupSound, "Sound & Music" },
{ TYPE_ENTER_MENU, execSetupArtwork, "Custom Artwork" },
{ TYPE_ENTER_MENU, execSetupInput, "Input Devices" },
- { TYPE_ENTER_MENU, execSetupShortcut1, "Key Shortcuts 1" },
- { TYPE_ENTER_MENU, execSetupShortcut2, "Key Shortcuts 2" },
+ { TYPE_ENTER_MENU, execSetupShortcuts1, "Key Shortcuts 1" },
+ { TYPE_ENTER_MENU, execSetupShortcuts2, "Key Shortcuts 2" },
{ TYPE_EMPTY, NULL, "" },
{ TYPE_LEAVE_MENU, execExitSetup, "Exit" },
{ TYPE_LEAVE_MENU, execSaveAndExitSetup, "Save and Exit" },
{ TYPE_STRING, &scroll_delay_text, "" },
#if 0
{ TYPE_SWITCH, &setup.soft_scrolling, "Soft Scrolling:" },
- { TYPE_SWITCH, &setup.double_buffering,"Double-Buffering:" },
#endif
{ TYPE_SWITCH, &setup.fade_screens, "Fade Screens:" },
{ TYPE_SWITCH, &setup.quick_switch, "Quick Player Focus Switch:" },
{ TYPE_SWITCH, &setup.show_titlescreen,"Show Title Screens:" },
{ TYPE_SWITCH, &setup.toons, "Show Toons:" },
{ TYPE_ECS_AGA, &setup.prefer_aga_graphics,"EMC graphics preference:" },
+ { TYPE_SWITCH, &setup.sp_show_border_elements,"Supaplex Border Elements:" },
{ TYPE_EMPTY, NULL, "" },
{ TYPE_LEAVE_MENU, execSetupMain, "Back" },
{ TYPE_STRING, &music_set_name, "" },
{ TYPE_EMPTY, NULL, "" },
#if 1
+#if 1
+ { TYPE_YES_NO_AUTO,&setup.override_level_graphics,"Override Level Graphics:"},
+ { TYPE_YES_NO_AUTO,&setup.override_level_sounds, "Override Level Sounds:" },
+ { TYPE_YES_NO_AUTO,&setup.override_level_music, "Override Level Music:" },
+#else
{ TYPE_YES_NO, &setup.override_level_graphics,"Override Level Graphics:" },
{ TYPE_YES_NO, &setup.override_level_sounds, "Override Level Sounds:" },
{ TYPE_YES_NO, &setup.override_level_music, "Override Level Music:" },
+ { TYPE_YES_NO, &setup.auto_override_artwork, "Auto-Override Non-CE Sets:" },
+#endif
#else
{ TYPE_STRING, NULL, "Override Level Artwork:"},
{ TYPE_YES_NO, &setup.override_level_graphics, "Graphics:" },
{ 0, NULL, NULL }
};
-static struct TokenInfo setup_info_shortcut_1[] =
+static struct TokenInfo setup_info_shortcuts_1[] =
{
{ TYPE_KEYTEXT, NULL, "Quick Save Game to Tape:", },
{ TYPE_KEY, &setup.shortcut.save_game, "" },
{ 0, NULL, NULL }
};
-static struct TokenInfo setup_info_shortcut_2[] =
+static struct TokenInfo setup_info_shortcuts_2[] =
{
{ TYPE_KEYTEXT, NULL, "Set Focus to Player 1:", },
{ TYPE_KEY, &setup.shortcut.focus_player[0], "" },
static int getSetupTextFont(int type)
{
- if (type & (TYPE_SWITCH |
- TYPE_YES_NO |
- TYPE_STRING |
- TYPE_ECS_AGA |
- TYPE_KEYTEXT |
+ if (type & (TYPE_SWITCH |
+ TYPE_YES_NO |
+ TYPE_YES_NO_AUTO |
+ TYPE_STRING |
+ TYPE_ECS_AGA |
+ TYPE_KEYTEXT |
TYPE_ENTER_LIST))
return FONT_MENU_2;
else
return FONT_VALUE_1;
else if (type & TYPE_BOOLEAN_STYLE)
return (*(boolean *)value ? FONT_OPTION_ON : FONT_OPTION_OFF);
+ else if (type & TYPE_YES_NO_AUTO)
+ return (*(int *)value == AUTO ? FONT_OPTION_ON :
+ *(int *)value == FALSE ? FONT_OPTION_OFF : FONT_OPTION_ON);
else
return FONT_VALUE_1;
}
int ypos = MENU_SCREEN_START_YPOS + pos;
int startx = mSX + xpos * 32;
int starty = mSY + ypos * 32;
- int font_nr, font_width;
+ int font_nr, font_width, font_height;
int type = setup_info[pos].type;
void *value = setup_info[pos].value;
char *value_string = getSetupValue(type, value);
+#if 1
int i;
+#endif
if (value_string == NULL)
return;
xpos = MENU_SCREEN_START_XPOS;
if (type & TYPE_QUERY)
- {
value_string = "<press key>";
- }
}
else if (type & TYPE_STRING)
{
if (strlen(value_string) > max_value_len)
value_string[max_value_len] = '\0';
}
+ else if (type & TYPE_YES_NO_AUTO)
+ {
+ xpos = MENU_SCREEN_VALUE_XPOS - 1;
+ }
startx = mSX + xpos * 32;
starty = mSY + ypos * 32;
font_nr = getSetupValueFont(type, value);
font_width = getFontWidth(font_nr);
+ font_height = getFontHeight(font_nr);
/* downward compatibility correction for Juergen Bonhagen's menu settings */
if (setup_mode != SETUP_MODE_INPUT)
}
}
+#if 0
+ DrawBackground(startx, starty, SX + SXSIZE - startx, font_height);
+#else
for (i = 0; i <= MENU_SCREEN_MAX_XPOS - xpos; i++)
DrawText(startx + i * font_width, starty, " ", font_nr);
+#endif
DrawText(startx, starty, value_string, font_nr);
getFontBitmapInfo(font_nr)->draw_xoffset = font_draw_xoffset_old;
}
-static void changeSetupValue(int pos)
+static void changeSetupValue(int pos, int dx)
{
if (setup_info[pos].type & TYPE_BOOLEAN_STYLE)
{
*(boolean *)setup_info[pos].value ^= TRUE;
}
+ else if (setup_info[pos].type & TYPE_YES_NO_AUTO)
+ {
+ *(int *)setup_info[pos].value =
+ (dx == -1 ?
+ (*(int *)setup_info[pos].value == AUTO ? TRUE :
+ *(int *)setup_info[pos].value == TRUE ? FALSE : AUTO) :
+ (*(int *)setup_info[pos].value == TRUE ? AUTO :
+ *(int *)setup_info[pos].value == AUTO ? FALSE : TRUE));
+ }
else if (setup_info[pos].type & TYPE_KEY)
{
Key key;
static void DrawSetupScreen_Generic()
{
+ boolean redraw_all = FALSE;
char *title_string = NULL;
int i;
UnmapAllGadgets();
CloseDoor(DOOR_CLOSE_2);
-#if 1
+ if (redraw_mask & REDRAW_ALL)
+ redraw_all = TRUE;
+
+#if 0
+ printf("::: %s\n", (redraw_mask & REDRAW_FIELD ? "REDRAW_FIELD" :
+ redraw_mask & REDRAW_ALL ? "REDRAW_ALL" :
+ int2str(0, redraw_mask)));
+#endif
+
+#if 0
+ /* !!! usually REDRAW_NONE => DOES NOT WORK (with fade) => CHECK THIS !!! */
+ FadeOut(redraw_mask);
+#else
FadeOut(REDRAW_FIELD);
#endif
- ClearWindow();
+ ClearField();
if (setup_mode == SETUP_MODE_MAIN)
{
setup_info = setup_info_artwork;
title_string = "Custom Artwork";
}
- else if (setup_mode == SETUP_MODE_SHORTCUT_1)
+ else if (setup_mode == SETUP_MODE_SHORTCUTS_1)
{
- setup_info = setup_info_shortcut_1;
+ setup_info = setup_info_shortcuts_1;
title_string = "Setup Shortcuts";
}
- else if (setup_mode == SETUP_MODE_SHORTCUT_2)
+ else if (setup_mode == SETUP_MODE_SHORTCUTS_2)
{
- setup_info = setup_info_shortcut_2;
+ setup_info = setup_info_shortcuts_2;
title_string = "Setup Shortcuts";
}
DrawTextSCentered(mSY - SY + 16, FONT_TITLE_1, title_string);
num_setup_info = 0;
- for (i = 0; setup_info[i].type != 0 && i < NUM_MENU_ENTRIES_ON_SCREEN; i++)
- {
- void *value_ptr = setup_info[i].value;
#if 1
+ for (i = 0; setup_info[i].type != 0 && i < MAX_MENU_ENTRIES_ON_SCREEN; i++)
#else
- int xpos = MENU_SCREEN_START_XPOS;
- int ypos = MENU_SCREEN_START_YPOS + i;
- int font_nr;
+ for (i = 0; setup_info[i].type != 0 && i < NUM_MENU_ENTRIES_ON_SCREEN; i++)
#endif
+ {
+ void *value_ptr = setup_info[i].value;
/* set some entries to "unchangeable" according to other variables */
if ((value_ptr == &setup.sound_simple && !audio.sound_available) ||
else if (setup_info[i].type & ~TYPE_SKIP_ENTRY)
initCursor(i, IMG_MENU_BUTTON);
-#if 1
DrawCursorAndText_Setup(i, FALSE);
-#else
- font_nr = getSetupTextFont(setup_info[i].type);
-
- DrawText(mSX + xpos * 32, mSY + ypos * 32, setup_info[i].text, font_nr);
-#endif
if (setup_info[i].type & TYPE_VALUE)
drawSetupValue(i);
HandleSetupScreen_Generic(0, 0, 0, 0, MB_MENU_INITIALIZE);
#endif
+ if (redraw_all)
+ redraw_mask = REDRAW_ALL;
+
#if 1
+ FadeIn(redraw_mask);
+#else
FadeIn(REDRAW_FIELD);
#endif
choice++;
choice_store[setup_mode] = choice;
-#if 1
DrawCursorAndText_Setup(choice, TRUE);
-#else
- drawCursor(choice, TRUE);
-#endif
return;
}
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)
+ setup_info[choice].type & TYPE_BOOLEAN_STYLE ||
+ setup_info[choice].type & TYPE_YES_NO_AUTO)
button = MB_MENU_CHOICE;
}
else if (dy)
{
PlaySound(SND_MENU_ITEM_ACTIVATING);
-#if 1
DrawCursorAndText_Setup(choice, FALSE);
DrawCursorAndText_Setup(y, TRUE);
-#else
- drawCursor(choice, FALSE);
- drawCursor(y, TRUE);
-#endif
choice = choice_store[setup_mode] = y;
}
else
{
if (setup_info[y].type & TYPE_VALUE)
- changeSetupValue(y);
+ changeSetupValue(y, dx);
}
}
}
void DrawSetupScreen_Input()
{
-#if 1
int i;
-#endif
#if 1
FadeOut(REDRAW_FIELD);
#endif
- ClearWindow();
+ ClearField();
#if 1
setup_info = setup_info_input;
DrawTextSCentered(mSY - SY + 16, FONT_TITLE_1, "Setup Input");
#if 1
+#if 1
+ DrawTextSCentered(SYSIZE - 20, FONT_TITLE_2,
+ "Joysticks deactivated on this screen");
+#else
+ DrawTextSCentered(SYSIZE - 20, FONT_TEXT_4,
+ "Joysticks deactivated on this screen");
+#endif
+#endif
+
+#if 1
+ for (i = 0; setup_info[i].type != 0 && i < MAX_MENU_ENTRIES_ON_SCREEN; i++)
+#else
for (i = 0; setup_info[i].type != 0 && i < NUM_MENU_ENTRIES_ON_SCREEN; i++)
+#endif
{
if (setup_info[i].type & (TYPE_ENTER_MENU|TYPE_ENTER_LIST))
initCursor(i, IMG_MENU_BUTTON_ENTER_MENU);
DrawCursorAndText_Setup(i, FALSE);
}
-#else
- initCursor(0, IMG_MENU_BUTTON);
- initCursor(1, IMG_MENU_BUTTON);
- initCursor(2, IMG_MENU_BUTTON_ENTER_MENU);
- initCursor(13, IMG_MENU_BUTTON_LEAVE_MENU);
-
- DrawText(mSX + 32, mSY + 2 * 32, "Player:", FONT_MENU_1);
- DrawText(mSX + 32, mSY + 3 * 32, "Device:", FONT_MENU_1);
- DrawText(mSX + 32, mSY + 15 * 32, "Back", FONT_MENU_1);
-#endif
#if 0
DeactivateJoystickForCalibration();
#endif
+
+#if 0
#if 1
+ DrawTextSCentered(SYSIZE - 20, FONT_TITLE_2,
+ "Joysticks deactivated on this screen");
+#else
DrawTextSCentered(SYSIZE - 20, FONT_TEXT_4,
"Joysticks deactivated on this screen");
+#endif
#endif
/* create gadgets for setup input menu screen */
{
drawPlayerSetupInputInfo(input_player_nr, (choice == 2));
-#if 1
DrawCursorAndText_Setup(choice, TRUE);
-#else
- drawCursor(choice, TRUE);
-#endif
return;
}
{
if (y != choice)
{
-#if 1
DrawCursorAndText_Setup(choice, FALSE);
DrawCursorAndText_Setup(y, TRUE);
drawPlayerSetupInputInfo(input_player_nr, (y == 2));
-#else
- drawCursor(choice, FALSE);
- drawCursor(y, TRUE);
-#endif
choice = y;
}
FadeSetEnterMenu();
FadeOut(REDRAW_FIELD);
- ClearWindow();
+ ClearField();
DrawTextSCentered(mSY - SY + 16, FONT_TITLE_1, "Keyboard Input");
FadeSetEnterMenu();
FadeOut(REDRAW_FIELD);
- ClearWindow();
+ ClearField();
for (y = 0; y < 3; y++)
{
DrawGraphic(xpos + last_x, ypos + last_y, IMG_MENU_CALIBRATE_RED, 0);
-#if 1
FadeIn(REDRAW_FIELD);
-#else
- BackToFront();
-#endif
while (Joystick(player_nr) & JOY_BUTTON); /* wait for released button */
InitAnimation();
int xpos = mSX - SX;
int ypos = mSY - SY;
- ClearWindow();
+ ClearField();
DrawTextF(xpos + 16, ypos + 6 * 32, FONT_TITLE_1, " JOYSTICK %d ", nr);
DrawTextF(xpos + 16, ypos + 7 * 32, FONT_TITLE_1, " NOT AVAILABLE! ");
CreateScreenMenubuttons();
+#if 0
/* force LEVELS draw offset for scrollbar / scrollbutton gadgets */
game_status = GAME_MODE_LEVELS;
+#endif
CreateScreenScrollbuttons();
CreateScreenScrollbars();