Merge branch 'NetHack-3.6.2'
This commit is contained in:
49
Files
49
Files
@@ -43,13 +43,15 @@ tribute wizhelp yendor.des
|
|||||||
doc:
|
doc:
|
||||||
(files for all versions)
|
(files for all versions)
|
||||||
Guidebook.mn Guidebook.tex Guidebook.txt config.nh dgn_comp.6
|
Guidebook.mn Guidebook.tex Guidebook.txt config.nh dgn_comp.6
|
||||||
dgn_comp.txt dlb.6 dlb.txt fixes22.0 fixes30.0
|
dgn_comp.txt dlb.6 dlb.txt fixes10.0 fixes14.f
|
||||||
fixes31.1 fixes31.2 fixes31.3 fixes32.0 fixes32.1
|
fixes22.0 fixes23.e fixes30.0 fixes30.pl01 fixes30.pl02
|
||||||
fixes32.2 fixes32.3 fixes33.0 fixes33.1 fixes34.0
|
fixes30.pl03 fixes30.pl04 fixes30.pl05 fixes30.pl06 fixes30.pl07
|
||||||
fixes34.1 fixes34.2 fixes34.3 fixes35.0 fixes36.0
|
fixes30.pl08 fixes30.pl09 fixes30.pl10 fixes31.1 fixes31.2
|
||||||
fixes36.1 fixes36.2 lev_comp.6 lev_comp.txt makedefs.6
|
fixes31.3 fixes32.0 fixes32.1 fixes32.2 fixes32.3
|
||||||
makedefs.txt nethack.6 nethack.txt recover.6 recover.txt
|
fixes33.0 fixes33.1 fixes34.0 fixes34.1 fixes34.2
|
||||||
tmac.n window.doc
|
fixes34.3 fixes35.0 fixes36.0 fixes36.1 fixes36.2
|
||||||
|
lev_comp.6 lev_comp.txt makedefs.6 makedefs.txt nethack.6
|
||||||
|
nethack.txt recover.6 recover.txt tmac.n window.doc
|
||||||
|
|
||||||
include:
|
include:
|
||||||
(files for GEM versions)
|
(files for GEM versions)
|
||||||
@@ -217,9 +219,10 @@ snd86unx.shr
|
|||||||
|
|
||||||
sys/unix/hints:
|
sys/unix/hints:
|
||||||
(files for configuring UNIX NetHack versions)
|
(files for configuring UNIX NetHack versions)
|
||||||
linux linux-chroot linux-qt4 linux-x11 macosx
|
linux linux-chroot linux-qt4 linux-qt5
|
||||||
macosx.sh macosx10.10 macosx10.5 macosx10.7 macosx10.8
|
linux-x11 macosx macosx.sh macosx10.10
|
||||||
unix
|
macosx10.10-qt macosx10.5 macosx10.7 macosx10.8
|
||||||
|
unix
|
||||||
|
|
||||||
sys/vms:
|
sys/vms:
|
||||||
(files for VMS version)
|
(files for VMS version)
|
||||||
@@ -376,6 +379,32 @@ dat:
|
|||||||
(file generated by dgn_comp at playground creation time)
|
(file generated by dgn_comp at playground creation time)
|
||||||
dungeon
|
dungeon
|
||||||
|
|
||||||
|
(files generated by lev_comp at playground creation time)
|
||||||
|
Arc-fila.lev Arc-filb.lev Arc-goal.lev Arc-loca.lev Arc-strt.lev
|
||||||
|
Bar-fila.lev Bar-filb.lev Bar-goal.lev Bar-loca.lev Bar-strt.lev
|
||||||
|
Cav-fila.lev Cav-filb.lev Cav-goal.lev Cav-loca.lev Cav-strt.lev
|
||||||
|
Hea-fila.lev Hea-filb.lev Hea-goal.lev Hea-loca.lev Hea-strt.lev
|
||||||
|
Kni-fila.lev Kni-filb.lev Kni-goal.lev Kni-loca.lev Kni-strt.lev
|
||||||
|
Mon-fila.lev Mon-filb.lev Mon-goal.lev Mon-loca.lev Mon-strt.lev
|
||||||
|
Pri-fila.lev Pri-filb.lev Pri-goal.lev Pri-loca.lev Pri-strt.lev
|
||||||
|
Ran-fila.lev Ran-filb.lev Ran-goal.lev Ran-loca.lev Ran-strt.lev
|
||||||
|
Rog-fila.lev Rog-filb.lev Rog-goal.lev Rog-loca.lev Rog-strt.lev
|
||||||
|
Sam-fila.lev Sam-filb.lev Sam-goal.lev Sam-loca.lev Sam-strt.lev
|
||||||
|
Tou-fila.lev Tou-filb.lev Tou-goal.lev Tou-loca.lev Tou-strt.lev
|
||||||
|
Val-fila.lev Val-filb.lev Val-goal.lev Val-loca.lev Val-strt.lev
|
||||||
|
Wiz-fila.lev Wiz-filb.lev Wiz-goal.lev Wiz-loca.lev Wiz-strt.lev
|
||||||
|
air.lev asmodeus.lev astral.lev baalz.lev bigrm-1.lev
|
||||||
|
bigrm-10.lev bigrm-2.lev bigrm-3.lev bigrm-4.lev bigrm-5.lev
|
||||||
|
bigrm-6.lev bigrm-7.lev bigrm-8.lev bigrm-9.lev castle.lev
|
||||||
|
earth.lev fakewiz1.lev fakewiz2.lev fire.lev juiblex.lev
|
||||||
|
knox.lev medusa-1.lev medusa-2.lev medusa-3.lev medusa-4.lev
|
||||||
|
minefill.lev minend-1.lev minend-2.lev minend-3.lev minetn-1.lev
|
||||||
|
minetn-2.lev minetn-3.lev minetn-4.lev minetn-5.lev minetn-6.lev
|
||||||
|
minetn-7.lev oracle.lev orcus.lev sanctum.lev soko1-1.lev
|
||||||
|
soko1-2.lev soko2-1.lev soko2-2.lev soko3-1.lev soko3-2.lev
|
||||||
|
soko4-1.lev soko4-2.lev tower1.lev tower2.lev tower3.lev
|
||||||
|
valley.lev water.lev wizard1.lev wizard2.lev wizard3.lev
|
||||||
|
|
||||||
(files generated by makedefs at playground creation time)
|
(files generated by makedefs at playground creation time)
|
||||||
data dungeon.pdf options oracles quest.dat rumors
|
data dungeon.pdf options oracles quest.dat rumors
|
||||||
|
|
||||||
|
|||||||
@@ -168,8 +168,9 @@ tty: turn off an optimization that is the suspected cause of Windows reported
|
|||||||
tty: ensure that current status fields are always copied to prior status
|
tty: ensure that current status fields are always copied to prior status
|
||||||
values so that comparisons are correct
|
values so that comparisons are correct
|
||||||
tty: fix an out of bounds error in tty_status_update() for BL_HUNGER case
|
tty: fix an out of bounds error in tty_status_update() for BL_HUNGER case
|
||||||
tty: fix leftover display artifact when last field on the row got smaller
|
tty: fix leftover display artifact when the last field on the row got placed
|
||||||
and optimize so only the right-most field requires the cleanup code
|
to the left of where it was previously due to it, or one of the fields
|
||||||
|
to its left, getting shorter
|
||||||
X11: its use of genl_status_update exposed a negative index use that could
|
X11: its use of genl_status_update exposed a negative index use that could
|
||||||
lead to a segfault
|
lead to a segfault
|
||||||
|
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ struct tty_status_fields {
|
|||||||
boolean valid;
|
boolean valid;
|
||||||
boolean dirty;
|
boolean dirty;
|
||||||
boolean redraw;
|
boolean redraw;
|
||||||
boolean padright;
|
boolean last_on_row;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -3541,7 +3541,8 @@ static enum statusfields fieldorder[2][MAX_PER_ROW] = { /* 2: two status lines *
|
|||||||
BL_CAP, BL_CONDITION, BL_FLUSH }
|
BL_CAP, BL_CONDITION, BL_FLUSH }
|
||||||
};
|
};
|
||||||
|
|
||||||
static int last_on_row[2];
|
static int last_on_row[2]; /* [rows] */
|
||||||
|
static int finalx[2][2]; /* [rows][NOW or BEFORE] */
|
||||||
static boolean setlast = FALSE;
|
static boolean setlast = FALSE;
|
||||||
static boolean windowdata_init = FALSE;
|
static boolean windowdata_init = FALSE;
|
||||||
static int cond_shrinklvl = 0, cond_width_at_shrink = 0;
|
static int cond_shrinklvl = 0, cond_width_at_shrink = 0;
|
||||||
@@ -3588,7 +3589,7 @@ tty_status_init()
|
|||||||
tty_status[NOW][i].valid = FALSE;
|
tty_status[NOW][i].valid = FALSE;
|
||||||
tty_status[NOW][i].dirty = FALSE;
|
tty_status[NOW][i].dirty = FALSE;
|
||||||
tty_status[NOW][i].redraw = FALSE;
|
tty_status[NOW][i].redraw = FALSE;
|
||||||
tty_status[NOW][i].padright = FALSE;
|
tty_status[NOW][i].last_on_row = FALSE;
|
||||||
tty_status[BEFORE][i] = tty_status[NOW][i];
|
tty_status[BEFORE][i] = tty_status[NOW][i];
|
||||||
}
|
}
|
||||||
tty_condition_bits = 0L;
|
tty_condition_bits = 0L;
|
||||||
@@ -3883,12 +3884,11 @@ int *topsz, *bottomsz;
|
|||||||
|
|
||||||
/* On a change to the field length, everything
|
/* On a change to the field length, everything
|
||||||
further to the right must be updated as well */
|
further to the right must be updated as well */
|
||||||
if (tty_status[NOW][idx].lth != tty_status[BEFORE][idx].lth) {
|
if (tty_status[NOW][idx].lth != tty_status[BEFORE][idx].lth)
|
||||||
update_right = TRUE;
|
update_right = TRUE;
|
||||||
if ((tty_status[NOW][idx].lth < tty_status[BEFORE][idx].lth) &&
|
|
||||||
idx == last_on_row[row])
|
if (idx == last_on_row[row])
|
||||||
tty_status[NOW][idx].padright = TRUE;
|
tty_status[NOW][idx].last_on_row = TRUE;
|
||||||
}
|
|
||||||
|
|
||||||
if (!update_right && !forcefields) {
|
if (!update_right && !forcefields) {
|
||||||
/*
|
/*
|
||||||
@@ -4176,22 +4176,22 @@ render_status(VOID_ARGS)
|
|||||||
for (row = 0; row < 2; ++row) {
|
for (row = 0; row < 2; ++row) {
|
||||||
curs(WIN_STATUS, 1, row);
|
curs(WIN_STATUS, 1, row);
|
||||||
for (i = 0; fieldorder[row][i] != BL_FLUSH; ++i) {
|
for (i = 0; fieldorder[row][i] != BL_FLUSH; ++i) {
|
||||||
int fldidx = fieldorder[row][i];
|
int idx = fieldorder[row][i];
|
||||||
|
|
||||||
if (!status_activefields[fldidx])
|
if (!status_activefields[idx])
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ((tty_status[NOW][fldidx].lth || fldidx == BL_CONDITION)
|
if ((tty_status[NOW][idx].lth || idx == BL_CONDITION)
|
||||||
&& (tty_status[NOW][fldidx].redraw || !do_field_opt)) {
|
&& (tty_status[NOW][idx].redraw || !do_field_opt)) {
|
||||||
int coloridx = tty_status[NOW][fldidx].color;
|
int coloridx = tty_status[NOW][idx].color;
|
||||||
int attridx = tty_status[NOW][fldidx].attr;
|
int attridx = tty_status[NOW][idx].attr;
|
||||||
int x = tty_status[NOW][fldidx].x;
|
int x = tty_status[NOW][idx].x;
|
||||||
int y = row;
|
int y = row;
|
||||||
char *text = status_vals[fldidx];
|
char *text = status_vals[idx];
|
||||||
boolean hitpointbar = (fldidx == BL_TITLE
|
boolean hitpointbar = (idx == BL_TITLE
|
||||||
&& iflags.wc2_hitpointbar);
|
&& iflags.wc2_hitpointbar);
|
||||||
|
|
||||||
if (fldidx == BL_CONDITION) {
|
if (idx == BL_CONDITION) {
|
||||||
/*
|
/*
|
||||||
* +-----------------+
|
* +-----------------+
|
||||||
* | Condition Codes |
|
* | Condition Codes |
|
||||||
@@ -4235,7 +4235,7 @@ render_status(VOID_ARGS)
|
|||||||
}
|
}
|
||||||
tty_curs(WIN_STATUS, x, y);
|
tty_curs(WIN_STATUS, x, y);
|
||||||
cl_end();
|
cl_end();
|
||||||
} else if (fldidx == BL_GOLD) {
|
} else if (idx == BL_GOLD) {
|
||||||
char buf[BUFSZ];
|
char buf[BUFSZ];
|
||||||
/*
|
/*
|
||||||
* +-----------+
|
* +-----------+
|
||||||
@@ -4312,7 +4312,7 @@ render_status(VOID_ARGS)
|
|||||||
}
|
}
|
||||||
tty_putstatusfield(nullfield, "]", x++, y);
|
tty_putstatusfield(nullfield, "]", x++, y);
|
||||||
} else {
|
} else {
|
||||||
tty_putstatusfield(&tty_status[NOW][fldidx],
|
tty_putstatusfield(&tty_status[NOW][idx],
|
||||||
(char *) 0, x, y);
|
(char *) 0, x, y);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -4332,34 +4332,41 @@ render_status(VOID_ARGS)
|
|||||||
if (coloridx != NO_COLOR && coloridx != CLR_MAX)
|
if (coloridx != NO_COLOR && coloridx != CLR_MAX)
|
||||||
term_start_color(coloridx);
|
term_start_color(coloridx);
|
||||||
}
|
}
|
||||||
tty_putstatusfield(&tty_status[NOW][fldidx],
|
tty_putstatusfield(&tty_status[NOW][idx],
|
||||||
text, x, y);
|
text, x, y);
|
||||||
if (iflags.hilite_delta) {
|
if (iflags.hilite_delta) {
|
||||||
if (coloridx != NO_COLOR && coloridx != CLR_MAX)
|
if (coloridx != NO_COLOR && coloridx != CLR_MAX)
|
||||||
term_end_color();
|
term_end_color();
|
||||||
End_Attr(attridx);
|
End_Attr(attridx);
|
||||||
}
|
}
|
||||||
if (tty_status[NOW][fldidx].padright) {
|
}
|
||||||
int cnt = tty_status[BEFORE][fldidx].lth
|
if (tty_status[NOW][idx].last_on_row) {
|
||||||
- tty_status[NOW][fldidx].lth;
|
int padright = 0;
|
||||||
|
|
||||||
x += (tty_status[NOW][fldidx].lth - 1);
|
x = tty_status[NOW][idx].x + tty_status[NOW][idx].lth;
|
||||||
while (cnt-- > 0)
|
finalx[row][NOW] = x - 1;
|
||||||
tty_putstatusfield(nullfield, " ", x++, y);
|
if (finalx[row][NOW] < finalx[row][BEFORE])
|
||||||
}
|
padright = finalx[row][BEFORE] - finalx[row][NOW];
|
||||||
|
while (padright-- > 0)
|
||||||
|
tty_putstatusfield(nullfield, " ", x++, y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* reset .redraw, .dirty, .padright now that they've been rendered */
|
/* reset .redraw, .dirty, .padright now that they've been rendered */
|
||||||
tty_status[NOW][fldidx].dirty = FALSE;
|
tty_status[NOW][idx].dirty = FALSE;
|
||||||
tty_status[NOW][fldidx].redraw = FALSE;
|
tty_status[NOW][idx].redraw = FALSE;
|
||||||
tty_status[NOW][fldidx].padright = FALSE;
|
tty_status[NOW][idx].last_on_row = FALSE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Make a copy of the entire tty_status struct for comparison
|
* For comparison of current and previous:
|
||||||
* of current and previous.
|
* - Copy the entire tty_status struct.
|
||||||
*/
|
*/
|
||||||
tty_status[BEFORE][fldidx] = tty_status[NOW][fldidx];
|
tty_status[BEFORE][idx] = tty_status[NOW][idx];
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
* For comparison of current and previous:
|
||||||
|
* - Copy the last written column number on the row.
|
||||||
|
*/
|
||||||
|
finalx[row][BEFORE] = finalx[row][NOW];
|
||||||
}
|
}
|
||||||
if (cond_disp_width[NOW] < cond_width_at_shrink) {
|
if (cond_disp_width[NOW] < cond_width_at_shrink) {
|
||||||
cond_shrinklvl = 0; /* reset */
|
cond_shrinklvl = 0; /* reset */
|
||||||
|
|||||||
Reference in New Issue
Block a user