-----------------------------------------
windows-gui: In nethackw, there could be conflicts between menu accelerators
and an extra choice accelerator to fix H7132.
-windows-gui: recognize new BL_RESET in status_update; behavior currently the same
+windows-gui: recognize new BL_RESET in status_update; no change in behavior yet
+windows-gui: align hpbar behavior at zero hit points with tty behavior
windows-tty: Specify both width and height when creating font for width testing
windows-tty: To counter lag problems that were occuring with the Win32 console
port, implement a console back buffer to reduce the number of calls
-/* NetHack 3.6 mhstatus.c $NHDT-Date: 1432512810 2015/05/25 00:13:30 $ $NHDT-Branch: master $:$NHDT-Revision: 1.22 $ */
+/* NetHack 3.6 mhstatus.c $NHDT-Date: 1536411224 2018/09/08 12:53:44 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.29 $ */
/* Copyright (C) 2001 by Alex Kompel */
/* NetHack may be freely redistributed. See license for details. */
LONG left = rt.left;
LONG cy = 0;
int vlen;
- for (f = *fop; *f != -1; f++) {
+ for (f = *fop; *f != BL_FLUSH; f++) {
int clr, atr;
int fntatr = ATR_NONE;
HGDIOBJ fnt;
SelectObject(hdc, fnt);
SetBkMode(hdc, OPAQUE);
SetBkColor(hdc, status_bg_color);
- SetTextColor(hdc, nhcolor_to_RGB(hpbar_color));
+ /* SetTextColor(hdc, nhcolor_to_RGB(hpbar_color)); */
+ SetTextColor(hdc, status_fg_color);
/* get bounding rectangle */
GetTextExtentPoint32(hdc, wbuf, vlen, &sz);
/* first draw title normally */
DrawText(hdc, wbuf, vlen, &rt, DT_LEFT);
- /* calc bar length */
- barrect.left = rt.left;
- barrect.top = rt.top;
- barrect.bottom = sz.cy;
- if (hpbar_percent > 0)
- barrect.right = (int)((hpbar_percent * sz.cx) / 100);
- else
- barrect.right = sz.cx;
-
- /* then draw hpbar on top of title */
- FillRect(hdc, &barrect, back_brush);
- SetBkMode(hdc, TRANSPARENT);
- SetTextColor(hdc, nBg);
- DrawText(hdc, wbuf, vlen, &barrect, DT_LEFT);
-
+ if (hpbar_percent > 0) {
+ /* calc bar length */
+ barrect.left = rt.left;
+ barrect.top = rt.top;
+ barrect.bottom = sz.cy;
+ if (hpbar_percent > 0)
+ barrect.right = (int)((hpbar_percent * sz.cx) / 100);
+ /* else
+ barrect.right = sz.cx; */
+
+ /* then draw hpbar on top of title */
+ FillRect(hdc, &barrect, back_brush);
+ SetBkMode(hdc, TRANSPARENT);
+ SetTextColor(hdc, nBg);
+ DrawText(hdc, wbuf, vlen, &barrect, DT_LEFT);
+ }
DeleteObject(back_brush);
} else {
if (atr & HL_INVERSE) {
-/* NetHack 3.6 mswproc.c $NHDT-Date: 1451611595 2016/01/01 01:26:35 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.98 $ */
+/* NetHack 3.6 mswproc.c $NHDT-Date: 1536411259 2018/09/08 12:54:19 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.118 $ */
/* Copyright (C) 2001 by Alex Kompel */
/* NetHack may be freely redistributed. See license for details. */
int ocolor, ochar;
unsigned ospecial;
long value = -1;
+ boolean reset_state = FALSE;
logDebug("mswin_status_update(%d, %p, %d, %d, %x, %p)\n", idx, ptr, chg, percent, color, colormasks);
- if (idx != BL_FLUSH && idx != BL_RESET) {
+ switch (idx) {
+ case BL_RESET:
+ reset_state = TRUE;
+ /* FALLTHRU */
+ case BL_FLUSH:
+ /* FALLTHRU */
+ default:
+ break;
+ }
+
+ if (idx >= 0) {
if (!_status_activefields[idx])
return;
_status_percents[idx] = percent;
text);
} break;
}
- }
- _status_colors[idx] = color;
+ _status_colors[idx] = color;
- /* send command to status window */
- ZeroMemory(&update_cmd_data, sizeof(update_cmd_data));
- update_cmd_data.n_fields = MAXBLSTATS;
- update_cmd_data.vals = _status_vals;
- update_cmd_data.activefields = _status_activefields;
- update_cmd_data.percents = _status_percents;
- update_cmd_data.colors = _status_colors;
- SendMessage(mswin_hwnd_from_winid(WIN_STATUS), WM_MSNH_COMMAND,
+ /* send command to status window */
+ ZeroMemory(&update_cmd_data, sizeof(update_cmd_data));
+ update_cmd_data.n_fields = MAXBLSTATS;
+ update_cmd_data.vals = _status_vals;
+ update_cmd_data.activefields = _status_activefields;
+ update_cmd_data.percents = _status_percents;
+ update_cmd_data.colors = _status_colors;
+ SendMessage(mswin_hwnd_from_winid(WIN_STATUS), WM_MSNH_COMMAND,
(WPARAM) MSNH_MSG_UPDATE_STATUS, (LPARAM) &update_cmd_data);
+ }
}