X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=347ae23c65af4f0d71ff06518854fb645f6a2a46;hb=5b0dc92b2f5aba6cebec2c334728a4d17a3d75df;hp=ed99fd4052445aab73157b8ad1abce93ea313670;hpb=5caf02865ba54b967aa085c4221040113a9e1976;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index ed99fd40..347ae23c 100644 --- a/src/screens.c +++ b/src/screens.c @@ -28,18 +28,18 @@ /* for DrawSetupScreen(), HandleSetupScreen() */ #define SETUP_SCREEN_POS_START 2 -#define SETUP_SCREEN_POS_END 16 +#define SETUP_SCREEN_POS_END (SCR_FIELDY - 1) #define SETUP_SCREEN_POS_EMPTY1 (SETUP_SCREEN_POS_END - 2) #define SETUP_SCREEN_POS_EMPTY2 (SETUP_SCREEN_POS_END - 2) /* for HandleSetupInputScreen() */ #define SETUPINPUT_SCREEN_POS_START 2 -#define SETUPINPUT_SCREEN_POS_END 15 +#define SETUPINPUT_SCREEN_POS_END (SCR_FIELDY - 2) #define SETUPINPUT_SCREEN_POS_EMPTY1 (SETUPINPUT_SCREEN_POS_START + 3) #define SETUPINPUT_SCREEN_POS_EMPTY2 (SETUPINPUT_SCREEN_POS_END - 1) /* for HandleChooseLevel() */ -#define MAX_LEVEL_SERIES_ON_SCREEN 15 +#define MAX_LEVEL_SERIES_ON_SCREEN (SCR_FIELDY - 2) #ifdef MSDOS extern unsigned char get_ascii(KeySym); @@ -107,8 +107,8 @@ void DrawMainMenu() for(i=2; i<10; i++) DrawGraphic(0, i, GFX_KUGEL_BLAU); - DrawGraphic(10, 3, GFX_PFEIL_L); - DrawGraphic(14, 3, GFX_PFEIL_R); + DrawGraphic(10, 3, GFX_PFEIL_LEFT); + DrawGraphic(14, 3, GFX_PFEIL_RIGHT); DrawText(SX + 56, SY + 326, "A Game by Artsoft Entertainment", FS_SMALL, FC_RED); @@ -380,10 +380,10 @@ static int helpscreen_action[] = GFX_MAMPFER2+1,1,1, GFX_MAMPFER2+0,1,1, HA_NEXT, GFX_ROBOT+0,4,1, GFX_ROBOT+3,1,1, GFX_ROBOT+2,1,1, GFX_ROBOT+1,1,1, GFX_ROBOT+0,1,1, HA_NEXT, - GFX_MAULWURF_DOWN,4,2, - GFX_MAULWURF_UP,4,2, - GFX_MAULWURF_LEFT,4,2, - GFX_MAULWURF_RIGHT,4,2, HA_NEXT, + GFX_MOLE_DOWN,4,2, + GFX_MOLE_UP,4,2, + GFX_MOLE_LEFT,4,2, + GFX_MOLE_RIGHT,4,2, HA_NEXT, GFX_PINGUIN_DOWN,4,2, GFX_PINGUIN_UP,4,2, GFX_PINGUIN_LEFT,4,2, @@ -461,7 +461,7 @@ static char *helpscreen_eltext[][2] = {"Cruncher: Eats diamonds and you,", "if you're not careful"}, {"Cruncher (BD style):", "Eats almost everything"}, {"Robot: Tries to kill the player", ""}, - {"The mole: You must guide him savely","to the exit; he will follow you"}, + {"The mole: Eats the amoeba and turns","empty space into normal sand"}, {"The penguin: Guide him to the exit,","but keep him away from monsters!"}, {"The Pig: Harmless, but eats all", "gems it can get"}, {"The Dragon: Breathes fire,", "especially to some monsters"}, @@ -820,7 +820,7 @@ static void drawChooseLevelList(int first_entry, int num_page_entries) for(i=0; i 0) - DrawGraphic(0, 1, GFX_PFEIL_O); + DrawGraphic(0, 1, GFX_PFEIL_UP); if (first_entry + num_page_entries < num_leveldirs) - DrawGraphic(0, MAX_LEVEL_SERIES_ON_SCREEN + 1, GFX_PFEIL_U); + DrawGraphic(0, MAX_LEVEL_SERIES_ON_SCREEN + 1, GFX_PFEIL_DOWN); } static void drawChooseLevelInfo(int leveldir_nr) @@ -839,9 +839,16 @@ static void drawChooseLevelInfo(int leveldir_nr) int x, last_redraw_mask = redraw_mask; XFillRectangle(display, drawto, gc, SX + 32, SY + 32, SXSIZE - 32, 32); + +#if 0 DrawTextFCentered(40, FC_RED, "%3d levels (%s)", leveldir[leveldir_nr].levels, leveldir[leveldir_nr].readonly ? "readonly" : "writable"); +#else + DrawTextFCentered(40, FC_RED, "%3d levels (%s)", + leveldir[leveldir_nr].levels, + leveldir[leveldir_nr].class_desc); +#endif /* let BackToFront() redraw only what is needed */ redraw_mask = last_redraw_mask | REDRAW_TILES; @@ -852,7 +859,7 @@ static void drawChooseLevelInfo(int leveldir_nr) void HandleChooseLevel(int mx, int my, int dx, int dy, int button) { static int choice = 3; - static int first_entry = 0; + static int first_entry = -1; static unsigned long choose_delay = 0; static int redraw = TRUE; int x = (mx + 32 - SX) / 32, y = (my + 32 - SY) / 32; @@ -866,17 +873,15 @@ void HandleChooseLevel(int mx, int my, int dx, int dy, int button) if (button == MB_MENU_INITIALIZE) { - redraw = TRUE; - choice = leveldir_nr + 3 - first_entry; - - if (choice > num_page_entries + 2) + if (first_entry == -1) { - choice = num_page_entries + 2; - first_entry = num_leveldirs - num_page_entries; + first_entry = MAX(0, leveldir_nr - num_page_entries + 1); + choice = leveldir_nr - first_entry + 3; } drawChooseLevelList(first_entry, num_page_entries); drawChooseLevelInfo(leveldir_nr); + redraw = TRUE; } if (redraw) @@ -896,7 +901,15 @@ void HandleChooseLevel(int mx, int my, int dx, int dy, int button) y = choice + dy; } else - x = y = 0; + x = y = 0; /* no action */ + + if (ABS(dy) == SCR_FIELDY) /* handle XK_Page_Up, XK_Page_Down */ + { + dy = SIGN(dy); + step = num_page_entries - 1; + x = 1; + y = (dy < 0 ? 2 : num_page_entries + 3); + } } if (x == 1 && y == 2) @@ -904,15 +917,12 @@ void HandleChooseLevel(int mx, int my, int dx, int dy, int button) if (first_entry > 0 && (dy || DelayReached(&choose_delay, GADGET_FRAME_DELAY))) { -#if 0 - first_entry--; -#else first_entry -= step; if (first_entry < 0) first_entry = 0; -#endif + drawChooseLevelList(first_entry, num_page_entries); - drawChooseLevelInfo(first_entry); + drawChooseLevelInfo(first_entry + choice - 3); DrawGraphic(0, choice - 1, GFX_KUGEL_ROT); return; } @@ -922,15 +932,12 @@ void HandleChooseLevel(int mx, int my, int dx, int dy, int button) if (first_entry + num_page_entries < num_leveldirs && (dy || DelayReached(&choose_delay, GADGET_FRAME_DELAY))) { -#if 0 - first_entry++; -#else first_entry += step; if (first_entry + num_page_entries > num_leveldirs) - first_entry = num_leveldirs - num_page_entries; -#endif + first_entry = MAX(0, num_leveldirs - num_page_entries); + drawChooseLevelList(first_entry, num_page_entries); - drawChooseLevelInfo(first_entry + num_page_entries - 1); + drawChooseLevelInfo(first_entry + choice - 3); DrawGraphic(0, choice - 1, GFX_KUGEL_ROT); return; } @@ -1293,8 +1300,8 @@ void DrawSetupInputScreen() DrawGraphic(0, 3, GFX_KUGEL_BLAU); DrawGraphic(0, 4, GFX_KUGEL_BLAU); DrawGraphic(0, 15, GFX_KUGEL_BLAU); - DrawGraphic(10, 2, GFX_PFEIL_L); - DrawGraphic(12, 2, GFX_PFEIL_R); + DrawGraphic(10, 2, GFX_PFEIL_LEFT); + DrawGraphic(12, 2, GFX_PFEIL_RIGHT); DrawText(SX+32, SY+2*32, "Player:", FS_BIG, FC_GREEN); DrawText(SX+32, SY+3*32, "Device:", FS_BIG, FC_GREEN); @@ -1374,10 +1381,10 @@ static void drawPlayerSetupInputInfo(int player_nr) } DrawText(SX+32, SY+5*32, "Actual Settings:", FS_BIG, FC_GREEN); - DrawGraphic(1, 6, GFX_PFEIL_L); - DrawGraphic(1, 7, GFX_PFEIL_R); - DrawGraphic(1, 8, GFX_PFEIL_O); - DrawGraphic(1, 9, GFX_PFEIL_U); + DrawGraphic(1, 6, GFX_PFEIL_LEFT); + DrawGraphic(1, 7, GFX_PFEIL_RIGHT); + DrawGraphic(1, 8, GFX_PFEIL_UP); + DrawGraphic(1, 9, GFX_PFEIL_DOWN); DrawText(SX+2*32, SY+6*32, ":", FS_BIG, FC_BLUE); DrawText(SX+2*32, SY+7*32, ":", FS_BIG, FC_BLUE); DrawText(SX+2*32, SY+8*32, ":", FS_BIG, FC_BLUE);