diff --git a/control.cpp b/control.cpp index c8884450..7769fb35 100644 --- a/control.cpp +++ b/control.cpp @@ -1125,7 +1125,13 @@ EX bool gmodekeys(int sym, int uni) { else if(NUMBERKEY == '3' && !rug::rugged) { pconf.alpha = 1; pconf.scale = 1; pconf.xposition = pconf.yposition = 0; } else if(NUMBERKEY == '4' && !rug::rugged) { pconf.alpha = 0; pconf.scale = 1; pconf.xposition = pconf.yposition = 0; } else if(NUMBERKEY == '5') { vid.wallmode += 60 + (shiftmul > 0 ? 1 : -1); vid.wallmode %= 7; } - else if(NUMBERKEY == '8') { vid.monmode += 60 + (shiftmul > 0 ? 1 : -1); vid.monmode %= 6; } + else if((NUMBERKEY == '8' && hiliteclick) || NUMBERKEY == 508) { + vid.highlightmode += 60 + (shiftmul > 0 ? 1 : -1); vid.highlightmode %= 3; + } + else if(NUMBERKEY == '8') { + vid.monmode += 60 + (shiftmul > 0 ? 1 : -1); vid.monmode %= 4; + } + else if(uni == '%') { if(vid.wallmode == 0) vid.wallmode = 6; vid.wallmode--; diff --git a/dialogs.cpp b/dialogs.cpp index 4d580f92..55f5349d 100644 --- a/dialogs.cpp +++ b/dialogs.cpp @@ -162,6 +162,7 @@ EX namespace dialog { if(k == 32) return "space"; if(k >= 1 && k <= 26) { string s = "Ctrl+"; s += (k+64); return s; } if(k < 128) { string s; s += k; return s; } + if(k == 508) return "Alt+8"; return "?"; } diff --git a/graph.cpp b/graph.cpp index 6f7eb690..745493f7 100644 --- a/graph.cpp +++ b/graph.cpp @@ -106,7 +106,7 @@ struct fallanim { map fallanims; EX bool doHighlight() { - return (hiliteclick && darken < 2) ? !mmhigh : mmhigh; + return mmhigh; } int dlit; @@ -4606,8 +4606,10 @@ EX void drawthemap() { mmitem = vid.monmode >= 1; mmmon = vid.monmode >= 2; - mmhigh = vid.monmode == 3 || vid.monmode == 5; - mmspatial = vid.monmode == 4 || vid.monmode == 5; + mmspatial = vid.monmode >= 3; + + mmhigh = vid.highlightmode >= 1; + if(hiliteclick) mmhigh = !mmhigh; spatial_graphics = wmspatial || mmspatial; spatial_graphics = spatial_graphics && GDIM == 2; @@ -5035,7 +5037,7 @@ EX void normalscreen() { if(GDIM == 3 || !outofmap(mouseh.h)) getcstat = '-'; cmode = sm::NORMAL | sm::DOTOUR | sm::CENTER; if(viewdists && show_distance_lists) cmode |= sm::SIDE | sm::MAYDARK; - gamescreen(hiliteclick && mmmon ? 1 : 0); drawStats(); + gamescreen((vid.highlightmode == (hiliteclick ? 0 : 2)) ? 1 : 0); drawStats(); if(nomenukey || ISMOBILE) ; #if CAP_TOUR diff --git a/hyper.h b/hyper.h index aeccd13b..21e437cd 100644 --- a/hyper.h +++ b/hyper.h @@ -306,7 +306,7 @@ struct videopar { int fsize; int flashtime; - int wallmode, monmode, axes; + int wallmode, monmode, axes, highlightmode; bool axes3; bool revcontrol; diff --git a/menus.cpp b/menus.cpp index b0c620df..81916704 100644 --- a/menus.cpp +++ b/menus.cpp @@ -349,10 +349,12 @@ EX void showGraphQuickKeys() { const char *wdmodes[7] = {"ASCII", "black", "plain", "Escher", "plain/3D", "Escher/3D", "ASCII/3D"}; dialog::addSelItem(XLAT("wall display mode"), XLAT(wdmodes[vid.wallmode]), '5'); - const char *mdmodes[6] = {"ASCII", "items only", "items and monsters", "high contrast", - "3D", "high contrast/3D"}; + const char *mdmodes[6] = {"ASCII", "items only", "items and monsters", "3D", "?", "?"}; dialog::addSelItem(XLAT("monster display mode"), XLAT(mdmodes[vid.monmode]), '8'); + const char *hlmodes[3] = {"press Alt", "highlight", "super-highlight"}; + dialog::addSelItem(XLAT("highlight stuff"), XLAT(hlmodes[vid.highlightmode]), 508); + dialog::addBoolItem(XLAT("draw the grid"), (vid.grid), '6'); dialog::addBoolItem(XLAT("mark heptagons"), (vid.darkhepta), '7');