{ "background.INFO[VERSION]", UNDEFINED_FILENAME },
{ "background.INFO[LEVELSET]", UNDEFINED_FILENAME },
{ "background.INFO[LEVEL]", UNDEFINED_FILENAME },
- { "background.INFO[STORY]", UNDEFINED_FILENAME },
+ { "background.STORY", UNDEFINED_FILENAME },
{ "background.SETUP", UNDEFINED_FILENAME },
{ "background.PLAYING", UNDEFINED_FILENAME },
{ "background.DOOR", UNDEFINED_FILENAME },
{ "menu.draw_yoffset.INFO[LEVELSET]", "0" },
{ "menu.draw_xoffset.INFO[LEVEL]", "0" },
{ "menu.draw_yoffset.INFO[LEVEL]", "0" },
- { "menu.draw_xoffset.INFO[STORY]", "0" },
- { "menu.draw_yoffset.INFO[STORY]", "0" },
+ { "menu.draw_xoffset.STORY", "0" },
+ { "menu.draw_yoffset.STORY", "0" },
{ "menu.draw_xoffset.SETUP", "0" },
{ "menu.draw_yoffset.SETUP", "0" },
{ "menu.draw_xoffset.SETUP[GAME]", "0" },
{ "menu.left_spacing.INFO[VERSION]", "16" },
{ "menu.left_spacing.INFO[LEVELSET]", "16" },
{ "menu.left_spacing.INFO[LEVEL]", "16" },
- { "menu.left_spacing.INFO[STORY]", "16" },
+ { "menu.left_spacing.STORY", "16" },
{ "menu.left_spacing.SETUP[INPUT]", "16" },
{ "menu.middle_spacing.SCOREINFO", "32" },
{ "menu.right_spacing.INFO[VERSION]", "16" },
{ "menu.right_spacing.INFO[LEVELSET]", "16" },
{ "menu.right_spacing.INFO[LEVEL]", "16" },
- { "menu.right_spacing.INFO[STORY]", "16" },
+ { "menu.right_spacing.STORY", "16" },
{ "menu.right_spacing.SETUP[INPUT]", "16" },
{ "menu.top_spacing.SCOREINFO", "96" },
{ "menu.top_spacing.INFO[VERSION]", "96" },
{ "menu.top_spacing.INFO[LEVELSET]", "96" },
{ "menu.top_spacing.INFO[LEVEL]", "96" },
- { "menu.top_spacing.INFO[STORY]", "96" },
+ { "menu.top_spacing.STORY", "96" },
{ "menu.top_spacing.SETUP[INPUT]", "96" },
{ "menu.bottom_spacing.SCOREINFO", "32" },
{ "menu.bottom_spacing.INFO[VERSION]", "32" },
{ "menu.bottom_spacing.INFO[LEVELSET]", "32" },
{ "menu.bottom_spacing.INFO[LEVEL]", "32" },
- { "menu.bottom_spacing.INFO[STORY]", "32" },
+ { "menu.bottom_spacing.STORY", "32" },
{ "menu.bottom_spacing.SETUP[INPUT]", "32" },
{ "menu.paragraph_spacing.SCOREINFO", "-2" },
{ "menu.paragraph_spacing.INFO[VERSION]", "-2" },
{ "menu.paragraph_spacing.INFO[LEVELSET]", "-3" },
{ "menu.paragraph_spacing.INFO[LEVEL]", "-3" },
- { "menu.paragraph_spacing.INFO[STORY]", "-3" },
+ { "menu.paragraph_spacing.STORY", "-3" },
{ "menu.paragraph_spacing.SETUP[INPUT]", "-1" },
{ "menu.headline1_spacing.SCOREINFO", "-2" },
{ "menu.headline1_spacing.INFO[VERSION]", "-2" },
{ "menu.headline1_spacing.INFO[LEVELSET]", "-2" },
{ "menu.headline1_spacing.INFO[LEVEL]", "-2" },
- { "menu.headline1_spacing.INFO[STORY]", "-2" },
+ { "menu.headline1_spacing.STORY", "-2" },
{ "menu.headline1_spacing.SETUP[INPUT]", "-2" },
{ "menu.headline2_spacing.SCOREINFO", "-1" },
{ "menu.headline2_spacing.INFO[VERSION]", "-1" },
{ "menu.headline2_spacing.INFO[LEVELSET]", "-1" },
{ "menu.headline2_spacing.INFO[LEVEL]", "-1" },
- { "menu.headline2_spacing.INFO[STORY]", "-1" },
+ { "menu.headline2_spacing.STORY", "-1" },
{ "menu.headline2_spacing.SETUP[INPUT]", "-1" },
{ "menu.line_spacing.SCOREINFO", "0" },
{ "menu.line_spacing.INFO[VERSION]", "0" },
{ "menu.line_spacing.INFO[LEVELSET]", "0" },
{ "menu.line_spacing.INFO[LEVEL]", "0" },
- { "menu.line_spacing.INFO[STORY]", "0" },
+ { "menu.line_spacing.STORY", "0" },
{ "menu.line_spacing.SETUP[INPUT]", "0" },
{ "menu.extra_spacing.SCOREINFO", "2" },
{ "menu.extra_spacing.INFO[VERSION]", "2" },
{ "menu.extra_spacing.INFO[LEVELSET]", "2" },
{ "menu.extra_spacing.INFO[LEVEL]", "2" },
- { "menu.extra_spacing.INFO[STORY]", "2" },
+ { "menu.extra_spacing.STORY", "2" },
{ "menu.extra_spacing.SETUP[INPUT]", "2" },
{ "menu.text.title.x", "-1" },
{ "background.INFO[VERSION]", UNDEFINED_FILENAME },
{ "background.INFO[LEVELSET]", UNDEFINED_FILENAME },
{ "background.INFO[LEVEL]", UNDEFINED_FILENAME },
- { "background.INFO[STORY]", UNDEFINED_FILENAME },
+ { "background.STORY", UNDEFINED_FILENAME },
{ "background.SETUP", UNDEFINED_FILENAME },
{ "background.titlescreen_initial_1", UNDEFINED_FILENAME },
{ "background.INFO[VERSION]", UNDEFINED_FILENAME },
{ "background.INFO[LEVELSET]", UNDEFINED_FILENAME },
{ "background.INFO[LEVEL]", UNDEFINED_FILENAME },
- { "background.INFO[STORY]", UNDEFINED_FILENAME },
+ { "background.STORY", UNDEFINED_FILENAME },
{ "background.SETUP", UNDEFINED_FILENAME },
{ "background.titlescreen_initial_1", UNDEFINED_FILENAME },
HandleInfoScreen(mx, my, 0, 0, button);
break;
+ case GAME_MODE_STORY:
+ HandleStoryScreen(mx, my, 0, 0, button);
+ break;
+
case GAME_MODE_SETUP:
HandleSetupScreen(mx, my, 0, 0, button);
break;
case GAME_MODE_LEVELNR:
case GAME_MODE_SETUP:
case GAME_MODE_INFO:
+ case GAME_MODE_STORY:
case GAME_MODE_SCORES:
case GAME_MODE_SCOREINFO:
HandleSetupScreen(0, 0, 0, 0, MB_MENU_CHOICE);
else if (game_status == GAME_MODE_INFO)
HandleInfoScreen(0, 0, 0, 0, (key == KSYM_space ? MB_MENU_CONTINUE : MB_MENU_CHOICE));
+ else if (game_status == GAME_MODE_STORY)
+ HandleStoryScreen(0, 0, 0, 0, (key == KSYM_space ? MB_MENU_CONTINUE : MB_MENU_CHOICE));
else if (game_status == GAME_MODE_SCORES)
HandleHallOfFame(0, 0, 0, 0, MB_MENU_CHOICE);
else if (game_status == GAME_MODE_SCOREINFO)
HandleSetupScreen(0, 0, 0, 0, MB_MENU_LEAVE);
else if (game_status == GAME_MODE_INFO)
HandleInfoScreen(0, 0, 0, 0, MB_MENU_LEAVE);
+ else if (game_status == GAME_MODE_STORY)
+ HandleStoryScreen(0, 0, 0, 0, MB_MENU_LEAVE);
else if (game_status == GAME_MODE_SCORES)
HandleHallOfFame(0, 0, 0, 0, MB_MENU_LEAVE);
else if (game_status == GAME_MODE_SCOREINFO)
HandleSetupScreen(0, 0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK);
else if (game_status == GAME_MODE_INFO)
HandleInfoScreen(0, 0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK);
+ else if (game_status == GAME_MODE_STORY)
+ HandleStoryScreen(0, 0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK);
else if (game_status == GAME_MODE_SCORES)
HandleHallOfFame(0, 0, 0, -1 * SCROLL_PAGE, MB_MENU_MARK);
else if (game_status == GAME_MODE_SCOREINFO)
HandleSetupScreen(0, 0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK);
else if (game_status == GAME_MODE_INFO)
HandleInfoScreen(0, 0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK);
+ else if (game_status == GAME_MODE_STORY)
+ HandleStoryScreen(0, 0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK);
else if (game_status == GAME_MODE_SCORES)
HandleHallOfFame(0, 0, 0, +1 * SCROLL_PAGE, MB_MENU_MARK);
else if (game_status == GAME_MODE_SCOREINFO)
case GAME_MODE_LEVELNR:
case GAME_MODE_SETUP:
case GAME_MODE_INFO:
+ case GAME_MODE_STORY:
case GAME_MODE_SCORES:
case GAME_MODE_SCOREINFO:
{
HandleSetupScreen(0,0,dx,dy, newbutton ? MB_MENU_CHOICE : MB_MENU_MARK);
else if (game_status == GAME_MODE_INFO)
HandleInfoScreen(0,0,dx,dy, newbutton ? MB_MENU_CHOICE : MB_MENU_MARK);
+ else if (game_status == GAME_MODE_STORY)
+ HandleStoryScreen(0,0,dx,dy, newbutton ? MB_MENU_CHOICE : MB_MENU_MARK);
else if (game_status == GAME_MODE_SCORES)
HandleHallOfFame(0,0,dx,dy, newbutton ? MB_MENU_CHOICE : MB_MENU_MARK);
else if (game_status == GAME_MODE_SCOREINFO)
int full_lev_fieldy = lev_fieldy + (BorderElement != EL_EMPTY ? 2 : 0);
int fade_mask = REDRAW_FIELD;
boolean restarting = (game_status == GAME_MODE_PLAYING);
- boolean level_info = (game_status == GAME_MODE_INFO);
+ boolean level_story = (game_status == GAME_MODE_STORY);
boolean emulate_bd = TRUE; // unless non-BOULDERDASH elements found
boolean emulate_sp = TRUE; // unless non-SUPAPLEX elements found
int initial_move_dir = MV_DOWN;
int i, j, x, y;
// show level info before starting the game (if any exists)
- if (!level_editor_test_game && !restarting && !level_info && !tape.playing)
- if (ShowInfoScreen_FromInitGame())
+ if (!level_editor_test_game && !restarting && !level_story && !tape.playing)
+ if (ShowStoryScreen_FromInitGame())
return;
// required to prevent handling game actions when moving doors (via "checkGameEnded()")
IMG_BACKGROUND_INFO_VERSION,
IMG_BACKGROUND_INFO_LEVELSET,
IMG_BACKGROUND_INFO_LEVEL,
- IMG_BACKGROUND_INFO_STORY,
+ IMG_BACKGROUND_STORY,
IMG_BACKGROUND_SETUP,
IMG_BACKGROUND_PLAYING,
IMG_BACKGROUND_DOOR,
{ ".SCOREINFO", GFX_SPECIAL_ARG_SCOREINFO, },
{ ".EDITOR", GFX_SPECIAL_ARG_EDITOR, },
{ ".INFO", GFX_SPECIAL_ARG_INFO, },
+ { ".STORY", GFX_SPECIAL_ARG_STORY, },
{ ".SETUP", GFX_SPECIAL_ARG_SETUP, },
{ ".PLAYING", GFX_SPECIAL_ARG_PLAYING, },
{ ".DOOR", GFX_SPECIAL_ARG_DOOR, },
GFX_SPECIAL_ARG_SCOREINFO,
GFX_SPECIAL_ARG_EDITOR,
GFX_SPECIAL_ARG_INFO,
+ GFX_SPECIAL_ARG_STORY,
GFX_SPECIAL_ARG_SETUP,
GFX_SPECIAL_ARG_PLAYING,
GFX_SPECIAL_ARG_DOOR,
#define GAME_MODE_SCOREINFO GFX_SPECIAL_ARG_SCOREINFO
#define GAME_MODE_EDITOR GFX_SPECIAL_ARG_EDITOR
#define GAME_MODE_INFO GFX_SPECIAL_ARG_INFO
+#define GAME_MODE_STORY GFX_SPECIAL_ARG_STORY
#define GAME_MODE_SETUP GFX_SPECIAL_ARG_SETUP
#define GAME_MODE_PLAYING GFX_SPECIAL_ARG_PLAYING
#define GAME_MODE_PSEUDO_DOOR GFX_SPECIAL_ARG_DOOR
info_mode == INFO_MODE_VERSION ? IMG_BACKGROUND_INFO_VERSION :
info_mode == INFO_MODE_LEVELSET ? IMG_BACKGROUND_INFO_LEVELSET :
info_mode == INFO_MODE_LEVEL ? IMG_BACKGROUND_INFO_LEVEL :
- info_mode == INFO_MODE_STORY ? IMG_BACKGROUND_INFO_STORY :
+ info_mode == INFO_MODE_STORY ? IMG_BACKGROUND_STORY :
IMG_BACKGROUND_INFO);
}
info_mode == INFO_MODE_VERSION ? SND_BACKGROUND_INFO_VERSION :
info_mode == INFO_MODE_LEVELSET ? SND_BACKGROUND_INFO_LEVELSET :
info_mode == INFO_MODE_LEVEL ? SND_BACKGROUND_INFO_LEVEL :
- info_mode == INFO_MODE_STORY ? SND_BACKGROUND_INFO_STORY :
+ info_mode == INFO_MODE_STORY ? SND_BACKGROUND_STORY :
SND_BACKGROUND_INFO);
}
info_mode == INFO_MODE_VERSION ? MUS_BACKGROUND_INFO_VERSION :
info_mode == INFO_MODE_LEVELSET ? MUS_BACKGROUND_INFO_LEVELSET :
info_mode == INFO_MODE_LEVEL ? MUS_BACKGROUND_INFO_LEVEL :
- info_mode == INFO_MODE_STORY ? MUS_BACKGROUND_INFO_STORY :
+ info_mode == INFO_MODE_STORY ? MUS_BACKGROUND_STORY :
MUS_BACKGROUND_INFO);
}
static void DrawInfoScreen_Generic(void)
{
- SetMainBackgroundImageIfDefined(getInfoScreenBackgroundImage_Generic());
+ if (info_mode == INFO_MODE_STORY)
+ {
+ SetMainBackgroundImage(IMG_BACKGROUND_STORY);
+ }
+ else
+ {
+ SetMainBackgroundImage(IMG_BACKGROUND_INFO);
+ SetMainBackgroundImageIfDefined(getInfoScreenBackgroundImage_Generic());
+ }
UnmapAllGadgets();
FadeInfoSoundsAndMusic();
CloseDoor(DOOR_CLOSE_2);
- SetGameStatus(GAME_MODE_INFO);
+ if (from_game_status == GAME_MODE_MAIN)
+ SetGameStatus(GAME_MODE_INFO);
+ else if (from_game_status == GAME_MODE_PLAYING)
+ SetGameStatus(GAME_MODE_STORY);
+ else
+ return;
info_mode = nr;
// needed if different viewport properties defined for info screen
ChangeViewportPropertiesIfNeeded();
- SetMainBackgroundImage(IMG_BACKGROUND_INFO);
-
DrawInfoScreen();
}
DrawInfoScreen_FromMainMenuOrInitGame(nr, GAME_MODE_PLAYING);
}
-boolean ShowInfoScreen_FromInitGame(void)
+boolean ShowStoryScreen_FromInitGame(void)
{
if (!hasLevelInfo())
return FALSE;
levelset.level_story_shown[level_nr] = TRUE;
+ // copy all ".STORY" settings to ".INFO[STORY]", which is internally used to show story
+ menu.draw_xoffset_info[INFO_MODE_STORY] = menu.draw_xoffset[GAME_MODE_STORY];
+ menu.draw_yoffset_info[INFO_MODE_STORY] = menu.draw_yoffset[GAME_MODE_STORY];
+ menu.left_spacing_info[INFO_MODE_STORY] = menu.left_spacing[GAME_MODE_STORY];
+ menu.right_spacing_info[INFO_MODE_STORY] = menu.right_spacing[GAME_MODE_STORY];
+ menu.top_spacing_info[INFO_MODE_STORY] = menu.top_spacing[GAME_MODE_STORY];
+ menu.bottom_spacing_info[INFO_MODE_STORY] = menu.bottom_spacing[GAME_MODE_STORY];
+ menu.paragraph_spacing_info[INFO_MODE_STORY] = menu.paragraph_spacing[GAME_MODE_STORY];
+ menu.headline1_spacing_info[INFO_MODE_STORY] = menu.headline1_spacing[GAME_MODE_STORY];
+ menu.headline2_spacing_info[INFO_MODE_STORY] = menu.headline2_spacing[GAME_MODE_STORY];
+ menu.line_spacing_info[INFO_MODE_STORY] = menu.line_spacing[GAME_MODE_STORY];
+ menu.extra_spacing_info[INFO_MODE_STORY] = menu.extra_spacing[GAME_MODE_STORY];
+
DrawInfoScreen_FromInitGame(INFO_MODE_STORY);
return TRUE;
HandleInfoScreen_Main(mx, my, dx, dy, button);
}
+void HandleStoryScreen(int mx, int my, int dx, int dy, int button)
+{
+ HandleInfoScreen(mx, my, dx, dy, button);
+}
+
// ============================================================================
// type name functions
HandleSetupScreen(0, 0, 0, -1 * SCROLL_LINE, MB_MENU_MARK);
else if (game_status == GAME_MODE_INFO)
HandleInfoScreen(0, 0, 0, -1 * SCROLL_LINE, MB_MENU_MARK);
+ else if (game_status == GAME_MODE_STORY)
+ HandleStoryScreen(0, 0, 0, -1 * SCROLL_LINE, MB_MENU_MARK);
else if (game_status == GAME_MODE_SCORES)
HandleHallOfFame(0, 0, 0, -1 * SCROLL_LINE, MB_MENU_MARK);
break;
HandleSetupScreen(0, 0, 0, +1 * SCROLL_LINE, MB_MENU_MARK);
else if (game_status == GAME_MODE_INFO)
HandleInfoScreen(0, 0, 0, +1 * SCROLL_LINE, MB_MENU_MARK);
+ else if (game_status == GAME_MODE_STORY)
+ HandleStoryScreen(0, 0, 0, +1 * SCROLL_LINE, MB_MENU_MARK);
else if (game_status == GAME_MODE_SCORES)
HandleHallOfFame(0, 0, 0, +1 * SCROLL_LINE, MB_MENU_MARK);
break;
HandleSetupScreen(0, 0, 999, gi->event.item_position, MB_MENU_INITIALIZE);
else if (game_status == GAME_MODE_INFO)
HandleInfoScreen(0, 0, 999, gi->event.item_position, MB_MENU_INITIALIZE);
+ else if (game_status == GAME_MODE_STORY)
+ HandleStoryScreen(0, 0, 999, gi->event.item_position, MB_MENU_INITIALIZE);
else if (game_status == GAME_MODE_SCORES)
HandleHallOfFame(0, 0, 999, gi->event.item_position, MB_MENU_INITIALIZE);
break;
void DrawScreenAfterAddingSet(char *, int);
void DrawInfoScreen_FromMainMenu(int);
void DrawInfoScreen_FromInitGame(int);
-boolean ShowInfoScreen_FromInitGame(void);
+boolean ShowStoryScreen_FromInitGame(void);
void RedrawSetupScreenAfterFullscreenToggle(void);
void RedrawSetupScreenAfterScreenRotation(int);
void HandleHallOfFame(int, int, int, int, int);
void HandleScoreInfo(int, int, int, int, int);
void HandleInfoScreen(int, int, int, int, int);
+void HandleStoryScreen(int, int, int, int, int);
void HandleSetupScreen(int, int, int, int, int);
void HandleTypeName(Key);
void HandleGameActions(void);