mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2024-11-27 14:37:16 +00:00
RogueViz legend as HUD replacement, lists edge types too
This commit is contained in:
parent
44e26cee3e
commit
dd8e30e041
5
hud.cpp
5
hud.cpp
@ -335,11 +335,8 @@ void drawMobileArrow(cell *c, transmatrix V) {
|
||||
bool nofps = false;
|
||||
|
||||
void drawStats() {
|
||||
callhandlers(false, hooks_prestats);
|
||||
#if CAP_ROGUEVIZ
|
||||
if(rogueviz::on) return;
|
||||
#endif
|
||||
if(nohud || stereo::mode == stereo::sLR) return;
|
||||
if(callhandlers(false, hooks_prestats)) return;
|
||||
if(viewdists && sidescreen) {
|
||||
distcolors[0] = forecolor;
|
||||
dialog::init("");
|
||||
|
@ -949,7 +949,7 @@ namespace mapeditor {
|
||||
cmode = sm::DRAW;
|
||||
gamescreen(0);
|
||||
drawGrid();
|
||||
callhandlers(false, hooks_prestats);
|
||||
if(callhandlers(false, hooks_prestats)) return;
|
||||
|
||||
if(!mouseout()) getcstat = '-';
|
||||
|
||||
|
76
rogueviz.cpp
76
rogueviz.cpp
@ -1286,6 +1286,52 @@ vector<int> legend;
|
||||
|
||||
vector<cell*> named;
|
||||
|
||||
bool rogueviz_hud() {
|
||||
if(!rogueviz::on) return false;
|
||||
if(cmode & sm::DRAW) return false;
|
||||
if(legend.empty()) return true;
|
||||
|
||||
initquickqueue();
|
||||
int qet = isize(edgetypes);
|
||||
if(qet == 1) qet = 0;
|
||||
|
||||
int legit = qet + isize(legend);
|
||||
|
||||
int rad = vid.radius/10;
|
||||
ld x = vid.xres - rad;
|
||||
|
||||
for(int i=0; i<isize(legend); i++) {
|
||||
int k = legend[i];
|
||||
vertexdata& vd = vdata[k];
|
||||
|
||||
ld y = (vid.radius * (i+.5)) / legit * 2 - vid.radius + vid.yres/2;
|
||||
|
||||
transmatrix V = atscreenpos(x, y, vid.radius/4);
|
||||
|
||||
poly_outline = OUTLINE_NONE;
|
||||
queuedisk(V, vd.cp, true);
|
||||
poly_outline = OUTLINE_DEFAULT;
|
||||
queuestr(int(x-rad), int(y), 0, rad*(svg::in?5:3)/4, vd.name, forecolor, 0, 16);
|
||||
}
|
||||
|
||||
for(int i=0; i<qet; i++) {
|
||||
auto t = edgetypes[i];
|
||||
|
||||
ld y = (vid.radius * (i+isize(legend)+.5)) / legit * 2 - vid.radius + vid.yres/2;
|
||||
|
||||
transmatrix V = atscreenpos(x, y, vid.radius/8);
|
||||
|
||||
poly_outline = t->color | 0xFF;
|
||||
queuepolyat(V, shTriangle, 0, PPR_MONSTER_HEAD);
|
||||
|
||||
poly_outline = OUTLINE_DEFAULT;
|
||||
queuestr(int(x-rad), int(y), 0, rad*(svg::in?5:3)/4, t->name, forecolor, 0, 16);
|
||||
}
|
||||
|
||||
quickqueue();
|
||||
return true;
|
||||
}
|
||||
|
||||
void drawExtra() {
|
||||
|
||||
if(kind == kFullNet) {
|
||||
@ -1309,26 +1355,6 @@ void drawExtra() {
|
||||
|
||||
canmove = true; items[itOrbAether] = true;
|
||||
}
|
||||
|
||||
#if CAP_RUG
|
||||
if(!rug::rugged)
|
||||
#endif
|
||||
for(int i=0; i<isize(legend); i++) {
|
||||
int k = legend[i];
|
||||
vertexdata& vd = vdata[k];
|
||||
|
||||
int rad = vid.radius/10;
|
||||
|
||||
ld x = vid.xres - rad;
|
||||
ld y = (vid.radius * (i+.5)) / isize(legend) * 2 - vid.radius + vid.yres/2;
|
||||
|
||||
transmatrix V = atscreenpos(x, y, vid.radius/4);
|
||||
|
||||
poly_outline = OUTLINE_NONE;
|
||||
queuedisk(V, vd.cp, true);
|
||||
poly_outline = OUTLINE_DEFAULT;
|
||||
queuestr(int(x-rad), int(y), 0, rad*(svg::in?5:3)/4, vd.name, forecolor, 0, 16);
|
||||
}
|
||||
}
|
||||
|
||||
void readcolor(const string& cfname) {
|
||||
@ -1461,8 +1487,11 @@ void turn(int delta) {
|
||||
}
|
||||
|
||||
void fixparam() {
|
||||
if((svg::in || inHighQual) && isize(legend) && pngformat == 0) vid.xres = vid.xres * 22/16;
|
||||
if(isize(legend)) vid.xcenter = vid.ycenter;
|
||||
if(!legend.empty() && !nohud) {
|
||||
if((svg::in || inHighQual) && pngformat == 0)
|
||||
vid.xres = vid.xres * 22/16;
|
||||
vid.xcenter = vid.ycenter;
|
||||
}
|
||||
}
|
||||
|
||||
#if CAP_COMMANDLINE
|
||||
@ -2005,7 +2034,8 @@ auto hooks =
|
||||
addHook(hooks_args, 100, readArgs) +
|
||||
addHook(hooks_config, 0, [] () { tour::ss::list(rogueviz::rvtour::rvslides); }) +
|
||||
#endif
|
||||
addHook(clearmemory, 0, close);
|
||||
addHook(clearmemory, 0, close) +
|
||||
addHook(hooks_prestats, 100, rogueviz_hud);
|
||||
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user