diff --git a/doc/fixes36.2 b/doc/fixes36.2 index ccaa24f4b..e34ec28fc 100644 --- a/doc/fixes36.2 +++ b/doc/fixes36.2 @@ -131,7 +131,8 @@ Platform- and/or Interface-Specific Fixes ----------------------------------------- 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 diff --git a/win/win32/mhstatus.c b/win/win32/mhstatus.c index 52d24621a..80799ad82 100644 --- a/win/win32/mhstatus.c +++ b/win/win32/mhstatus.c @@ -1,4 +1,4 @@ -/* 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. */ @@ -324,7 +324,7 @@ onWMPaint(HWND hWnd, WPARAM wParam, LPARAM lParam) 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; @@ -362,7 +362,8 @@ onWMPaint(HWND hWnd, WPARAM wParam, LPARAM lParam) 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); @@ -370,21 +371,22 @@ onWMPaint(HWND hWnd, WPARAM wParam, LPARAM lParam) /* 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) { diff --git a/win/win32/mswproc.c b/win/win32/mswproc.c index fb9ad0a94..feabf49b2 100644 --- a/win/win32/mswproc.c +++ b/win/win32/mswproc.c @@ -1,4 +1,4 @@ -/* 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. */ @@ -2899,10 +2899,21 @@ mswin_status_update(int idx, genericptr_t ptr, int chg, int percent, int color, 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; @@ -2965,18 +2976,18 @@ mswin_status_update(int idx, genericptr_t ptr, int chg, int percent, int color, 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); + } }