Merge branch 'NetHack-3.6.2'
This commit is contained in:
@@ -835,11 +835,15 @@ curses_init_options()
|
||||
iflags.wc2_windowborders = 3; /* Set to auto if not specified */
|
||||
}
|
||||
|
||||
if (!iflags.wc2_petattr) {
|
||||
iflags.wc2_petattr = A_REVERSE;
|
||||
} else { /* Pet attribute specified, so hilite_pet should be true */
|
||||
|
||||
/* fix up pet highlighting */
|
||||
if (iflags.wc2_petattr == -1) /* shouldn't happen */
|
||||
iflags.wc2_petattr = A_NORMAL;
|
||||
if (iflags.wc2_petattr != A_NORMAL) {
|
||||
/* Pet attribute specified, so hilite_pet should be true */
|
||||
iflags.hilite_pet = TRUE;
|
||||
} else if (iflags.hilite_pet) {
|
||||
/* pet highlighting specified, so don't leave petattr at A_NORMAL */
|
||||
iflags.wc2_petattr = A_REVERSE;
|
||||
}
|
||||
|
||||
#ifdef NCURSES_MOUSE_VERSION
|
||||
|
||||
@@ -47,7 +47,7 @@ curses_read_char()
|
||||
ch = curses_convert_keys(ch);
|
||||
|
||||
if (ch == 0) {
|
||||
ch = '\033'; /* map NUL to ESC since nethack doesn't expect NUL */
|
||||
ch = '\033'; /* map NUL to ESC since nethack doesn't expect NUL */
|
||||
}
|
||||
#if defined(ALT_0) && defined(ALT_9) /* PDCurses, maybe others */
|
||||
if ((ch >= ALT_0) && (ch <= ALT_9)) {
|
||||
@@ -66,11 +66,11 @@ curses_read_char()
|
||||
#ifdef KEY_RESIZE
|
||||
/* Handle resize events via get_nh_event, not this code */
|
||||
if (ch == KEY_RESIZE) {
|
||||
ch = '\033'; /* NetHack doesn't know what to do with KEY_RESIZE */
|
||||
ch = '\033'; /* NetHack doesn't know what to do with KEY_RESIZE */
|
||||
}
|
||||
#endif
|
||||
|
||||
if (counting && !isdigit(ch)) { /* Dismiss count window if necissary */
|
||||
if (counting && !isdigit(ch)) { /* Dismiss count window if necissary */
|
||||
curses_count_window(NULL);
|
||||
curses_refresh_nethack_windows();
|
||||
}
|
||||
@@ -249,7 +249,7 @@ curses_num_lines(const char *str, int width)
|
||||
if (last_space == 0) { /* No spaces found */
|
||||
last_space = count - 1;
|
||||
}
|
||||
for (count = (last_space + 1); (size_t) count < strlen(substr); count++) {
|
||||
for (count = (last_space + 1); count < (int) strlen(substr); count++) {
|
||||
tmpstr[count - (last_space + 1)] = substr[count];
|
||||
}
|
||||
tmpstr[count - (last_space + 1)] = '\0';
|
||||
@@ -389,7 +389,7 @@ curses_str_remainder(const char *str, int width, int line_num)
|
||||
if (substr[count] == '\0') {
|
||||
break;
|
||||
}
|
||||
for (count = (last_space + 1); (size_t) count < strlen(substr); count++) {
|
||||
for (count = (last_space + 1); count < (int) strlen(substr); count++) {
|
||||
tmpstr[count - (last_space + 1)] = substr[count];
|
||||
}
|
||||
tmpstr[count - (last_space + 1)] = '\0';
|
||||
@@ -682,44 +682,87 @@ curses_convert_attr(int attr)
|
||||
|
||||
|
||||
/* Map letter attributes from a string to bitmask. Return mask on
|
||||
success, or 0 if not found */
|
||||
success (might be 0), or -1 if not found. */
|
||||
|
||||
int
|
||||
curses_read_attrs(char *attrs)
|
||||
{
|
||||
int retattr = 0;
|
||||
|
||||
if (strchr(attrs, 'b') || strchr(attrs, 'B')) {
|
||||
retattr = retattr | A_BOLD;
|
||||
}
|
||||
if (strchr(attrs, 'i') || strchr(attrs, 'I')) {
|
||||
retattr = retattr | A_REVERSE;
|
||||
}
|
||||
if (strchr(attrs, 'u') || strchr(attrs, 'U')) {
|
||||
retattr = retattr | A_UNDERLINE;
|
||||
}
|
||||
if (strchr(attrs, 'k') || strchr(attrs, 'K')) {
|
||||
retattr = retattr | A_BLINK;
|
||||
}
|
||||
if (!attrs || !*attrs)
|
||||
return A_NORMAL;
|
||||
|
||||
if (strchr(attrs, 'b') || strchr(attrs, 'B'))
|
||||
retattr |= A_BOLD;
|
||||
if (strchr(attrs, 'i') || strchr(attrs, 'I')) /* inverse */
|
||||
retattr |= A_REVERSE;
|
||||
if (strchr(attrs, 'u') || strchr(attrs, 'U'))
|
||||
retattr |= A_UNDERLINE;
|
||||
if (strchr(attrs, 'k') || strchr(attrs, 'K'))
|
||||
retattr |= A_BLINK;
|
||||
if (strchr(attrs, 'd') || strchr(attrs, 'D'))
|
||||
retattr |= A_DIM;
|
||||
#ifdef A_ITALIC
|
||||
if (strchr(attrs, 't') || strchr(attrs, 'T')) {
|
||||
retattr = retattr | A_ITALIC;
|
||||
}
|
||||
#endif
|
||||
#ifdef A_RIGHTLINE
|
||||
if (strchr(attrs, 'r') || strchr(attrs, 'R')) {
|
||||
retattr = retattr | A_RIGHTLINE;
|
||||
}
|
||||
if (strchr(attrs, 't') || strchr(attrs, 'T'))
|
||||
retattr |= A_ITALIC;
|
||||
#endif
|
||||
#ifdef A_LEFTLINE
|
||||
if (strchr(attrs, 'l') || strchr(attrs, 'L')) {
|
||||
retattr = retattr | A_LEFTLINE;
|
||||
}
|
||||
if (strchr(attrs, 'l') || strchr(attrs, 'L'))
|
||||
retattr |= A_LEFTLINE;
|
||||
#endif
|
||||
|
||||
#ifdef A_RIGHTLINE
|
||||
if (strchr(attrs, 'r') || strchr(attrs, 'R'))
|
||||
retattr |= A_RIGHTLINE;
|
||||
#endif
|
||||
if (retattr == 0) {
|
||||
/* still default; check for none/normal */
|
||||
if (strchr(attrs, 'n') || strchr(attrs, 'N'))
|
||||
retattr = A_NORMAL;
|
||||
else
|
||||
retattr = -1; /* error */
|
||||
}
|
||||
return retattr;
|
||||
}
|
||||
|
||||
/* format iflags.wc2_petattr into "+a+b..." for set bits a, b, ...
|
||||
(used by core's 'O' command; return value points past leading '+') */
|
||||
char *
|
||||
curses_fmt_attrs(outbuf)
|
||||
char *outbuf;
|
||||
{
|
||||
int attr = iflags.wc2_petattr;
|
||||
|
||||
outbuf[0] = '\0';
|
||||
if (attr == A_NORMAL) {
|
||||
Strcpy(outbuf, "+N(None)");
|
||||
} else {
|
||||
if (attr & A_BOLD)
|
||||
Strcat(outbuf, "+B(Bold)");
|
||||
if (attr & A_REVERSE)
|
||||
Strcat(outbuf, "+I(Inverse)");
|
||||
if (attr & A_UNDERLINE)
|
||||
Strcat(outbuf, "+U(Underline)");
|
||||
if (attr & A_BLINK)
|
||||
Strcat(outbuf, "+K(blinK)");
|
||||
if (attr & A_DIM)
|
||||
Strcat(outbuf, "+D(Dim)");
|
||||
#ifdef A_ITALIC
|
||||
if (attr & A_ITALIC)
|
||||
Strcat(outbuf, "+T(iTalic)");
|
||||
#endif
|
||||
#ifdef A_LEFTLINE
|
||||
if (attr & A_LEFTLINE)
|
||||
Strcat(outbuf, "+L(Left line)");
|
||||
#endif
|
||||
#ifdef A_RIGHTLINE
|
||||
if (attr & A_RIGHTLINE)
|
||||
Strcat(outbuf, "+R(Right line)");
|
||||
#endif
|
||||
}
|
||||
if (!*outbuf)
|
||||
Sprintf(outbuf, "+unknown [%d]", attr);
|
||||
return &outbuf[1];
|
||||
}
|
||||
|
||||
/* Convert special keys into values that NetHack can understand.
|
||||
Currently this is limited to arrow keys, but this may be expanded. */
|
||||
@@ -827,7 +870,7 @@ curses_get_mouse(int *mousex, int *mousey, int *mod)
|
||||
#ifdef NCURSES_MOUSE_VERSION
|
||||
MEVENT event;
|
||||
|
||||
if (getmouse(&event) == OK) { /* When the user clicks left mouse button */
|
||||
if (getmouse(&event) == OK) { /* When the user clicks left mouse button */
|
||||
if (event.bstate & BUTTON1_CLICKED) {
|
||||
/* See if coords are in map window & convert coords */
|
||||
if (wmouse_trafo(mapwin, &event.y, &event.x, TRUE)) {
|
||||
|
||||
@@ -27,6 +27,7 @@ void curses_rtrim(char *str);
|
||||
int curses_get_count(int first_digit);
|
||||
int curses_convert_attr(int attr);
|
||||
int curses_read_attrs(char *attrs);
|
||||
char *curses_fmt_attrs(char *);
|
||||
int curses_convert_keys(int key);
|
||||
int curses_get_mouse(int *mousex, int *mousey, int *mod);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user