status change followup (trunk only)
- Get the HD display working right when Upolyd. - add a couple of comments.
This commit is contained in:
@@ -356,14 +356,14 @@ status_enablefield(int fldindex, char fldname, char fieldfmt, boolean enable)
|
|||||||
BL_LEVELDESC, BL_EXP, BL_CONDITION
|
BL_LEVELDESC, BL_EXP, BL_CONDITION
|
||||||
-- There are MAXBLSTATS status fields (from botl.h)
|
-- There are MAXBLSTATS status fields (from botl.h)
|
||||||
status_update(int fldindex, genericptr_t ptr, int chg, int percentage)
|
status_update(int fldindex, genericptr_t ptr, int chg, int percentage)
|
||||||
-- update the value of a status field
|
-- update the value of a status field.
|
||||||
-- the fldindex identifies which field is changing and
|
-- the fldindex identifies which field is changing and
|
||||||
is an integer index value from botl.h
|
is an integer index value from botl.h
|
||||||
-- fldindex could be any one of the following from botl.h:
|
-- fldindex could be any one of the following from botl.h:
|
||||||
BL_TITLE, BL_STR, BL_DX, BL_CO, BL_IN, BL_WI, BL_CH,
|
BL_TITLE, BL_STR, BL_DX, BL_CO, BL_IN, BL_WI, BL_CH,
|
||||||
BL_ALIGN, BL_SCORE, BL_CAP, BL_GOLD, BL_ENE, BL_ENEMAX,
|
BL_ALIGN, BL_SCORE, BL_CAP, BL_GOLD, BL_ENE, BL_ENEMAX,
|
||||||
BL_XP, BL_AC, BL_HD, BL_TIME, BL_HUNGER, BL_HP, BL_HPMAX,
|
BL_XP, BL_AC, BL_HD, BL_TIME, BL_HUNGER, BL_HP, BL_HPMAX,
|
||||||
BL_LEVELDESC, BL_EXP, BL_CONDITION,
|
BL_LEVELDESC, BL_EXP, BL_CONDITION
|
||||||
-- fldindex could also be BL_FLUSH (-1), which is not really
|
-- fldindex could also be BL_FLUSH (-1), which is not really
|
||||||
a field index, but is a special trigger to tell the
|
a field index, but is a special trigger to tell the
|
||||||
windowport that it should redisplay all its status fields,
|
windowport that it should redisplay all its status fields,
|
||||||
@@ -378,6 +378,11 @@ status_update(int fldindex, genericptr_t ptr, int chg, int percentage)
|
|||||||
BL_MASK_HALLU 0x00000010L
|
BL_MASK_HALLU 0x00000010L
|
||||||
BL_MASK_STUNNED 0x00000020L
|
BL_MASK_STUNNED 0x00000020L
|
||||||
BL_MASK_SLIMED 0x00000040L
|
BL_MASK_SLIMED 0x00000040L
|
||||||
|
-- The value passed for BL_GOLD includes a leading
|
||||||
|
symbol for GOLD "$:nnn". If the window port needs to use
|
||||||
|
the textual gold amount without the leading "$:" the port
|
||||||
|
will have to add 2 to the passed "ptr" for the BL_GOLD case.
|
||||||
|
|
||||||
status_finish() -- called when it is time for the window port to tear down
|
status_finish() -- called when it is time for the window port to tear down
|
||||||
the status display and free allocated memory, etc.
|
the status display and free allocated memory, etc.
|
||||||
|
|
||||||
|
|||||||
25
src/botl.c
25
src/botl.c
@@ -316,7 +316,7 @@ struct istat_s {
|
|||||||
#define percentage(current, maximum) ((100 * current) / maximum)
|
#define percentage(current, maximum) ((100 * current) / maximum)
|
||||||
#define percentagel(current, maximum) ((int)((100L * current) / maximum))
|
#define percentagel(current, maximum) ((int)((100L * current) / maximum))
|
||||||
|
|
||||||
/* If entries are added to this, botl.h will required updating too */
|
/* If entries are added to this, botl.h will require updating too */
|
||||||
struct istat_s blstats[2][MAXBLSTATS] = {
|
struct istat_s blstats[2][MAXBLSTATS] = {
|
||||||
{
|
{
|
||||||
{ 0L, P_STR, (genericptr_t)0, (char *)0, 80, 0}, /* 0 BL_TITLE */
|
{ 0L, P_STR, (genericptr_t)0, (char *)0, 80, 0}, /* 0 BL_TITLE */
|
||||||
@@ -369,9 +369,11 @@ boolean reassessment; /* TRUE = just reassess fields w/o other initialization*/
|
|||||||
(*windowprocs.win_status_init)();
|
(*windowprocs.win_status_init)();
|
||||||
}
|
}
|
||||||
for (i = 0; i < MAXBLSTATS; ++i) {
|
for (i = 0; i < MAXBLSTATS; ++i) {
|
||||||
if ((i == BL_SCORE && !flags.showscore) ||
|
if ((i == BL_SCORE && !flags.showscore) ||
|
||||||
(i == BL_EXP && !flags.showexp) ||
|
(i == BL_EXP && !flags.showexp) ||
|
||||||
(i == BL_TIME && !flags.time))
|
(i == BL_TIME && !flags.time) ||
|
||||||
|
(i == BL_HD && !Upolyd) ||
|
||||||
|
((i == BL_XP || i == BL_EXP) && Upolyd))
|
||||||
status_enablefield(i, fieldnames[i], fieldfmts[i], FALSE);
|
status_enablefield(i, fieldnames[i], fieldfmts[i], FALSE);
|
||||||
else
|
else
|
||||||
status_enablefield(i, fieldnames[i], fieldfmts[i], TRUE);
|
status_enablefield(i, fieldnames[i], fieldfmts[i], TRUE);
|
||||||
@@ -535,6 +537,14 @@ bot()
|
|||||||
#else
|
#else
|
||||||
money_cnt(invent);
|
money_cnt(invent);
|
||||||
#endif
|
#endif
|
||||||
|
/*
|
||||||
|
* The tty port needs to display the current symbol for gold
|
||||||
|
* as a field header, so to accomodate that we pass gold with
|
||||||
|
* that already included. If a window port needs to use the text
|
||||||
|
* gold amount without the leading "$:" the port will have to
|
||||||
|
* add 2 to the value pointer it was passed in status_update()
|
||||||
|
* for the BL_GOLD case.
|
||||||
|
*/
|
||||||
Sprintf(blstats[idx][BL_GOLD].val, "%c:%ld",
|
Sprintf(blstats[idx][BL_GOLD].val, "%c:%ld",
|
||||||
oc_syms[COIN_CLASS], *(blstats[idx][BL_GOLD].ptr.a_lptr));
|
oc_syms[COIN_CLASS], *(blstats[idx][BL_GOLD].ptr.a_lptr));
|
||||||
valset[BL_GOLD] = TRUE; /* indicate val already set */
|
valset[BL_GOLD] = TRUE; /* indicate val already set */
|
||||||
@@ -612,7 +622,8 @@ bot()
|
|||||||
if (((i == BL_SCORE) && !flags.showscore) ||
|
if (((i == BL_SCORE) && !flags.showscore) ||
|
||||||
((i == BL_EXP) && !flags.showexp) ||
|
((i == BL_EXP) && !flags.showexp) ||
|
||||||
((i == BL_TIME) && !flags.time) ||
|
((i == BL_TIME) && !flags.time) ||
|
||||||
((i == BL_HD) && !Upolyd))
|
((i == BL_HD) && !Upolyd) ||
|
||||||
|
((i == BL_XP || i == BL_EXP) && Upolyd))
|
||||||
continue;
|
continue;
|
||||||
ptype = blstats[idx][i].ptype;
|
ptype = blstats[idx][i].ptype;
|
||||||
switch (ptype) {
|
switch (ptype) {
|
||||||
@@ -772,8 +783,8 @@ genericptr_t ptr;
|
|||||||
};
|
};
|
||||||
int fieldorder2[] = {
|
int fieldorder2[] = {
|
||||||
BL_LEVELDESC, BL_GOLD, BL_HP, BL_HPMAX,
|
BL_LEVELDESC, BL_GOLD, BL_HP, BL_HPMAX,
|
||||||
BL_ENE, BL_ENEMAX, BL_AC, BL_XP, BL_EXP, BL_TIME,
|
BL_ENE, BL_ENEMAX, BL_AC, BL_XP, BL_EXP, BL_HD,
|
||||||
BL_HUNGER,BL_CAP, BL_CONDITION, -1
|
BL_TIME, BL_HUNGER,BL_CAP, BL_CONDITION, -1
|
||||||
};
|
};
|
||||||
|
|
||||||
if (idx != BL_FLUSH) {
|
if (idx != BL_FLUSH) {
|
||||||
|
|||||||
@@ -24,6 +24,9 @@ void
|
|||||||
set_uasmon()
|
set_uasmon()
|
||||||
{
|
{
|
||||||
set_mon_data(&youmonst, &mons[u.umonnum], 0);
|
set_mon_data(&youmonst, &mons[u.umonnum], 0);
|
||||||
|
#ifdef STATUS_VIA_WINDOWPORT
|
||||||
|
status_initialize(TRUE); /* TRUE = reassess fields only */
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* make a (new) human out of the player */
|
/* make a (new) human out of the player */
|
||||||
|
|||||||
Reference in New Issue
Block a user