X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=de24626aa57757a6911d460bddcb3ee2125cf2e6;hb=0d4ace80d081e080a704ee15227e209d5953e325;hp=9fbd5b1b487ea80e54320890e3389d04a3043a19;hpb=59ee473b86e7cbc1d9b09a3c22b0bbd3a410f16f;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index 9fbd5b1b..de24626a 100644 --- a/src/screens.c +++ b/src/screens.c @@ -50,20 +50,21 @@ #define SETUP_MODE_SHORTCUTS_2 9 #define SETUP_MODE_SHORTCUTS_3 10 #define SETUP_MODE_SHORTCUTS_4 11 +#define SETUP_MODE_SHORTCUTS_5 12 /* sub-screens on the setup screen (generic) */ -#define SETUP_MODE_CHOOSE_ARTWORK 12 -#define SETUP_MODE_CHOOSE_OTHER 13 +#define SETUP_MODE_CHOOSE_ARTWORK 13 +#define SETUP_MODE_CHOOSE_OTHER 14 /* sub-screens on the setup screen (specific) */ -#define SETUP_MODE_CHOOSE_GAME_SPEED 14 -#define SETUP_MODE_CHOOSE_SCREEN_MODE 15 -#define SETUP_MODE_CHOOSE_SCROLL_DELAY 16 -#define SETUP_MODE_CHOOSE_GRAPHICS 17 -#define SETUP_MODE_CHOOSE_SOUNDS 18 -#define SETUP_MODE_CHOOSE_MUSIC 19 +#define SETUP_MODE_CHOOSE_GAME_SPEED 15 +#define SETUP_MODE_CHOOSE_SCREEN_MODE 16 +#define SETUP_MODE_CHOOSE_SCROLL_DELAY 17 +#define SETUP_MODE_CHOOSE_GRAPHICS 18 +#define SETUP_MODE_CHOOSE_SOUNDS 19 +#define SETUP_MODE_CHOOSE_MUSIC 20 -#define MAX_SETUP_MODES 20 +#define MAX_SETUP_MODES 21 /* for input setup functions */ #define SETUPINPUT_SCREEN_POS_START 0 @@ -235,7 +236,7 @@ static struct INFO_MODE_MAIN) #define DRAW_MODE_SETUP(i) ((i) >= SETUP_MODE_MAIN && \ - (i) <= SETUP_MODE_SHORTCUTS_4 ? (i) : \ + (i) <= SETUP_MODE_SHORTCUTS_5 ? (i) : \ (i) >= SETUP_MODE_CHOOSE_GRAPHICS && \ (i) <= SETUP_MODE_CHOOSE_MUSIC ? \ SETUP_MODE_CHOOSE_ARTWORK : \ @@ -1025,7 +1026,11 @@ static boolean insideTextPosRect(struct TextPosInfo *rect, int x, int y) static void drawCursorExt(int xpos, int ypos, boolean active, int graphic) { +#if 1 + static int cursor_array[MAX_LEV_FIELDY]; +#else static int cursor_array[SCR_FIELDY]; +#endif int x = mSX + TILEX * xpos; int y = mSY + TILEY * (MENU_SCREEN_START_YPOS + ypos); @@ -1186,7 +1191,7 @@ void DrawTitleScreenMessage(int nr, boolean initial) ClearRectangleOnBackground(drawto, 0, 0, WIN_XSIZE, WIN_YSIZE); DrawTextFile(ALIGNED_TEXT_XPOS(tmi), ALIGNED_TEXT_YPOS(tmi), - filename, tmi->font, tmi->chars, -1, tmi->lines, -1, + filename, tmi->font, tmi->chars, -1, tmi->lines, 0, -1, tmi->autowrap, tmi->centered, tmi->parse_comments); game_status = last_game_status; /* restore current game status */ @@ -1286,8 +1291,8 @@ void DrawMainMenuExt(int fade_mask, boolean do_fading) #endif #if 1 - /* needed if newly loaded custom artwork requires a different screen mode */ - ChangeScreenModeIfNeeded(); + /* needed if different viewport properties defined for menues */ + ChangeViewportPropertiesIfNeeded(); #endif #if defined(TARGET_SDL) @@ -1387,7 +1392,7 @@ void DrawMainMenu() DrawMainMenuExt(REDRAW_ALL, FALSE); } -#if 0 +#if defined(CREATE_SPECIAL_EDITION_RND_JUE) static void gotoTopLevelDir() { /* move upwards to top level directory */ @@ -1754,7 +1759,7 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) SaveLevelSetup_LastSeries(); SaveLevelSetup_SeriesInfo(); -#if 0 +#if defined(CREATE_SPECIAL_EDITION_RND_JUE) gotoTopLevelDir(); #endif @@ -1777,6 +1782,11 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) FadeSetEnterScreen(); +#if 0 + /* needed if different viewport properties defined for editor */ + ChangeViewportPropertiesIfNeeded(); +#endif + DrawLevelEd(); } else if (pos == MAIN_CONTROL_INFO) @@ -2247,7 +2257,7 @@ void DrawInfoScreen_HelpText(int element, int action, int direction, int ypos) sy += getFontHeight(font_nr) / 2; DrawTextBuffer(sx, sy + ypos * ystep, text, font_nr, - max_chars_per_line, -1, max_lines_per_text, -1, + max_chars_per_line, -1, max_lines_per_text, 0, -1, TRUE, FALSE, FALSE); } @@ -3051,7 +3061,7 @@ void DrawInfoScreen_LevelSet() if (filename != NULL) DrawTextFile(mSX + ALIGNED_TEXT_XPOS(tmi), mSY + ALIGNED_TEXT_YPOS(tmi), - filename, tmi->font, tmi->chars, -1, tmi->lines, -1, + filename, tmi->font, tmi->chars, -1, tmi->lines, 0, -1, tmi->autowrap, tmi->centered, tmi->parse_comments); else DrawTextCentered(mSY + ALIGNED_TEXT_YPOS(tmi), FONT_TEXT_2, @@ -4126,6 +4136,13 @@ static void execSetupShortcuts4() DrawSetupScreen(); } +static void execSetupShortcuts5() +{ + setup_mode = SETUP_MODE_SHORTCUTS_5; + + DrawSetupScreen(); +} + static void execExitSetup() { game_status = GAME_MODE_MAIN; @@ -4299,6 +4316,7 @@ static struct TokenInfo setup_info_shortcuts[] = { TYPE_ENTER_MENU, execSetupShortcuts2, "Player Focus" }, { TYPE_ENTER_MENU, execSetupShortcuts3, "Tape Buttons" }, { TYPE_ENTER_MENU, execSetupShortcuts4, "Sound & Music" }, + { TYPE_ENTER_MENU, execSetupShortcuts5, "TAS Snap Keys" }, { TYPE_EMPTY, NULL, "" }, { TYPE_LEAVE_MENU, execSetupMain, "Back" }, @@ -4372,6 +4390,22 @@ static struct TokenInfo setup_info_shortcuts_4[] = { 0, NULL, NULL } }; +static struct TokenInfo setup_info_shortcuts_5[] = +{ + { TYPE_KEYTEXT, NULL, "Snap Left:", }, + { TYPE_KEY, &setup.shortcut.snap_left, "" }, + { TYPE_KEYTEXT, NULL, "Snap Right:", }, + { TYPE_KEY, &setup.shortcut.snap_right, "" }, + { TYPE_KEYTEXT, NULL, "Snap Up:", }, + { TYPE_KEY, &setup.shortcut.snap_up, "" }, + { TYPE_KEYTEXT, NULL, "Snap Down:", }, + { TYPE_KEY, &setup.shortcut.snap_down, "" }, + { TYPE_EMPTY, NULL, "" }, + { TYPE_LEAVE_MENU, execSetupShortcuts, "Back" }, + + { 0, NULL, NULL } +}; + static Key getSetupKey() { Key key = KSYM_UNDEFINED; @@ -4675,6 +4709,11 @@ static void DrawSetupScreen_Generic() setup_info = setup_info_shortcuts_4; title_string = "Setup Shortcuts"; } + else if (setup_mode == SETUP_MODE_SHORTCUTS_5) + { + setup_info = setup_info_shortcuts_5; + title_string = "Setup Shortcuts"; + } DrawTextSCentered(mSY - SY + 16, FONT_TITLE_1, title_string); @@ -5673,13 +5712,21 @@ static struct { { IMG_MENU_BUTTON_UP, IMG_MENU_BUTTON_UP_ACTIVE, +#if 1 + -1, -1, /* these values are not constant, but can change at runtime */ +#else SC_SCROLL_UP_XPOS, SC_SCROLL_UP_YPOS, +#endif SCREEN_CTRL_ID_SCROLL_UP, "scroll up" }, { IMG_MENU_BUTTON_DOWN, IMG_MENU_BUTTON_DOWN_ACTIVE, +#if 1 + -1, -1, /* these values are not constant, but can change at runtime */ +#else SC_SCROLL_DOWN_XPOS, SC_SCROLL_DOWN_YPOS, +#endif SCREEN_CTRL_ID_SCROLL_DOWN, "scroll down" } @@ -5705,8 +5752,13 @@ static struct #else IMG_MENU_SCROLLBAR, IMG_MENU_SCROLLBAR_ACTIVE, #endif +#if 1 + -1, -1, /* these values are not constant, but can change at runtime */ + -1, -1, /* these values are not constant, but can change at runtime */ +#else SC_SCROLL_VERTICAL_XPOS, SC_SCROLL_VERTICAL_YPOS, SC_SCROLL_VERTICAL_XSIZE, SC_SCROLL_VERTICAL_YSIZE, +#endif GD_TYPE_SCROLLBAR_VERTICAL, SCREEN_CTRL_ID_SCROLL_VERTICAL, "scroll level series vertically" @@ -5772,6 +5824,12 @@ static void CreateScreenScrollbuttons() unsigned long event_mask; int i; + /* these values are not constant, but can change at runtime */ + scrollbutton_info[0].x = SC_SCROLL_UP_XPOS; + scrollbutton_info[0].y = SC_SCROLL_UP_YPOS; + scrollbutton_info[1].x = SC_SCROLL_DOWN_XPOS; + scrollbutton_info[1].y = SC_SCROLL_DOWN_YPOS; + for (i = 0; i < NUM_SCREEN_SCROLLBUTTONS; i++) { Bitmap *gd_bitmap_unpressed, *gd_bitmap_pressed; @@ -5827,6 +5885,12 @@ static void CreateScreenScrollbars() { int i; + /* these values are not constant, but can change at runtime */ + scrollbar_info[0].x = SC_SCROLL_VERTICAL_XPOS; + scrollbar_info[0].y = SC_SCROLL_VERTICAL_YPOS; + scrollbar_info[0].width = SC_SCROLL_VERTICAL_XSIZE; + scrollbar_info[0].height = SC_SCROLL_VERTICAL_YSIZE; + for (i = 0; i < NUM_SCREEN_SCROLLBARS; i++) { Bitmap *gd_bitmap_unpressed, *gd_bitmap_pressed;