projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rnd-19990807-1-src
[rocksndiamonds.git]
/
src
/
screens.c
diff --git
a/src/screens.c
b/src/screens.c
index d494e99a7c1f3ce3f92fc5c687ef7aeb0135523d..bd1a65f1002f60a94aeb7578c3d542e8f5e9767f 100644
(file)
--- a/
src/screens.c
+++ b/
src/screens.c
@@
-28,18
+28,18
@@
/* for DrawSetupScreen(), HandleSetupScreen() */
#define SETUP_SCREEN_POS_START 2
/* 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 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 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);
#ifdef MSDOS
extern unsigned char get_ascii(KeySym);
@@
-763,7
+763,7
@@
void HandleTypeName(int newxpos, KeySym key)
}
if (((key >= XK_A && key <= XK_Z) || (key >= XK_a && key <= XK_z)) &&
}
if (((key >= XK_A && key <= XK_Z) || (key >= XK_a && key <= XK_z)) &&
- xpos < MAX_
NAMELEN - 1
)
+ xpos < MAX_
PLAYER_NAME_LEN
)
{
char ascii;
{
char ascii;
@@
-820,7
+820,7
@@
static void drawChooseLevelList(int first_entry, int num_page_entries)
for(i=0; i<num_page_entries; i++)
{
for(i=0; i<num_page_entries; i++)
{
- strncpy(buffer, leveldir[first_entry + i].name , SCR_FIELDX - 1);
+ strncpy(buffer, leveldir[first_entry + i].name
_short
, SCR_FIELDX - 1);
buffer[SCR_FIELDX - 1] = '\0';
DrawText(SX + 32, SY + (i + 2) * 32, buffer,
FS_BIG, leveldir[first_entry + i].color);
buffer[SCR_FIELDX - 1] = '\0';
DrawText(SX + 32, SY + (i + 2) * 32, buffer,
FS_BIG, leveldir[first_entry + i].color);
@@
-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);
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");
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;
/* 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;
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;
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)
{
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);
}
drawChooseLevelList(first_entry, num_page_entries);
drawChooseLevelInfo(leveldir_nr);
+ redraw = TRUE;
}
if (redraw)
}
if (redraw)
@@
-896,7
+901,15
@@
void HandleChooseLevel(int mx, int my, int dx, int dy, int button)
y = choice + dy;
}
else
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)
}
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 (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;
first_entry -= step;
if (first_entry < 0)
first_entry = 0;
-#endif
+
drawChooseLevelList(first_entry, num_page_entries);
drawChooseLevelList(first_entry, num_page_entries);
- drawChooseLevelInfo(first_entry);
+ drawChooseLevelInfo(first_entry
+ choice - 3
);
DrawGraphic(0, choice - 1, GFX_KUGEL_ROT);
return;
}
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 (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 += 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);
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;
}
DrawGraphic(0, choice - 1, GFX_KUGEL_ROT);
return;
}