mapfontscale setting

This commit is contained in:
Zeno Rogue 2024-03-21 18:44:19 +01:00
parent 9430c26970
commit 04c15fc9c6
6 changed files with 44 additions and 34 deletions

View File

@ -1634,7 +1634,7 @@ void celldrawer::draw_features() {
if(numerical_minefield) {
if(mines) {
string label = its(mines);
queuestr(V, mines >= 10 ? .5 : 1, label, darkened(minecolors[mines]), 8);
queuestr(V, (mines >= 10 ? .5 : 1) * mapfontscale / 100, label, darkened(minecolors[mines]), 8);
}
}
else {
@ -2079,7 +2079,7 @@ void celldrawer::draw_cellstat() {
if(c->land == laMirrored || c->land == laMirrorWall2 || c->land == laMirrored2) {
string label = its(c->landparam);
queuestr(V, 1 * .2, label, 0xFFFFFFFF, 1);
queuestr(V, mapfontscale / 500, label, 0xFFFFFFFF, 1);
}
if(debug_tiles && mod_allowed()) {
@ -2105,22 +2105,22 @@ void celldrawer::draw_cellstat() {
#endif
else
label = its(shvid(c));
queuestr(V, .5, label, 0xFFFFFFFF, 1);
queuestr(V, mapfontscale / 200, label, 0xFFFFFFFF, 1);
for(int i=0; i<c->type; i++) {
queuestr(V * rgpushxto0(currentmap->get_corner(c, i, 4)), .2, its(i), 0xFFFFFFFF, 1);
queuestr(V * rgpushxto0(mid(currentmap->get_corner(c, i, 4), currentmap->get_corner(c, i+1, 5))), .2, its(i), 0xFFFFFFFF, 1);
queuestr(V * rgpushxto0(currentmap->get_corner(c, i, 4)), mapfontscale / 500, its(i), 0xFFFFFFFF, 1);
queuestr(V * rgpushxto0(mid(currentmap->get_corner(c, i, 4), currentmap->get_corner(c, i+1, 5))), mapfontscale / 500, its(i), 0xFFFFFFFF, 1);
}
}
if(debug_voronoi && ls::voronoi_structure() && mod_allowed()) {
auto p = get_voronoi_winner(c);
queuestr(V, .2, its(p.second), index_pointer_int(p.first) * 0x7F3015, 1);
queuestr(V, mapfontscale / 500, its(p.second), index_pointer_int(p.first) * 0x7F3015, 1);
}
if(cmode & sm::TORUSCONFIG) {
auto p = euc::coord_display(V, c);
if(p.second != "")
queuestr(V, p.first ? .2 : .6, p.second, p.first ? 0xFFFFFFD0 : 0xFFFF0040, 1);
queuestr(V, (p.first ? .2 : .6) * mapfontscale / 100, p.second, p.first ? 0xFFFFFFD0 : 0xFFFF0040, 1);
}
#if CAP_EDIT
@ -2135,13 +2135,13 @@ void celldrawer::draw_cellstat() {
string label = its(si.id & 255);
color_t col = forecolor ^ colorhash(si.id >> 8);
queuestr(V, .5, label, 0xFF000000 + col);
queuestr(V, mapfontscale / 200, label, 0xFF000000 + col);
}
#endif
if(debug_cellnames && pointer_indices.count(c)) {
shstream ss; print(ss, c);
queuestr(V, .5, ss.s, 0xFFFFFFFF);
queuestr(V, mapfontscale / 200, ss.s, 0xFFFFFFFF);
queuepoly(V * ddspin(c, 0), cgi.shAsymmetric, darkena(0x000000, 0, 0xC0));
}
}
@ -2962,7 +2962,7 @@ void celldrawer::draw() {
string s = s0+asciichar;
dynamicval<color_t> p(poly_outline, asciiborder << 8);
if(!wmascii3)
queuestrn(V, 1, s, darkenedby(asciicol, darken), 2);
queuestrn(V, mapfontscale / 100, s, darkenedby(asciicol, darken), 2);
else if(highwall(c) && conegraph(c)) {
const int layers = 1 << detaillevel;
string s1 = s0+asciichar1;
@ -2970,7 +2970,7 @@ void celldrawer::draw() {
for(int z=0; z<layers; z++)
queuestrn(orthogonal_move_fol(V, zgrad0(0, geom3::actual_wall_height(), z, layers)), 1. - z * .5 / layers, s1, darkenedby(gradient(bordcolor, asciicol1, -layers, z, layers), darken), 1);
poly_outline = asciiborder << 8;
queuestrn(orthogonal_move_fol(V, cgi.WALL), asciicol == asciicol1 && asciichar == asciichar1 ? .5 : 1, s, darkenedby(asciicol, darken), 2);
queuestrn(orthogonal_move_fol(V, cgi.WALL), (asciicol == asciicol1 && asciichar == asciichar1 ? .5 : 1) * mapfontscale / 100, s, darkenedby(asciicol, darken), 2);
}
else if(highwall(c)) {
const int layers = 1 << detaillevel;
@ -2979,15 +2979,15 @@ void celldrawer::draw() {
for(int z=0; z<layers; z++)
queuestrn(orthogonal_move_fol(V, zgrad0(0, geom3::actual_wall_height(), z, layers)), 1, s1, darkenedby(gradient(bordcolor, asciicol1, -layers, z, layers), darken), 1);
poly_outline = asciiborder << 8;
queuestrn(orthogonal_move_fol(V, cgi.WALL), 1, s, darkenedby(asciicol, darken), 2);
queuestrn(orthogonal_move_fol(V, cgi.WALL), mapfontscale / 100, s, darkenedby(asciicol, darken), 2);
}
else if((sl = snakelevel(c))) {
string s1 = s0+asciichar1;
poly_outline = bordcolor << 8;
for(int z=0; z<sl*4; z++) if(z%4 == 0)
queuestrn(orthogonal_move_fol(V, zgrad0(0, cgi.slev * sl, z, sl*4)), 1, s1, darkenedby(gradient(bordcolor, asciicol1, -sl, z, sl*4), darken), 1);
queuestrn(orthogonal_move_fol(V, zgrad0(0, cgi.slev * sl, z, sl*4)), mapfontscale / 100, s1, darkenedby(gradient(bordcolor, asciicol1, -sl, z, sl*4), darken), 1);
poly_outline = asciiborder << 8;
queuestrn(orthogonal_move_fol(V, cgi.SLEV[sl]), 1, s, darkenedby(asciicol, darken), 2);
queuestrn(orthogonal_move_fol(V, cgi.SLEV[sl]), mapfontscale / 100, s, darkenedby(asciicol, darken), 2);
}
// else if(c->wall == waChasm) {
// const int layers = 1 << detaillevel;
@ -2996,12 +2996,12 @@ void celldrawer::draw() {
else if(chasmgraph(c)) {
string s1 = s0+asciichar1;
poly_outline = bordcolor << 8;
queuestrn(orthogonal_move_fol(V, cgi.BOTTOM), 1, s1, darkenedby(gradient(bordcolor, asciicol1, 0, 0.3, 1), darken), 2);
queuestrn(orthogonal_move_fol(V, cgi.BOTTOM), mapfontscale / 100, s1, darkenedby(gradient(bordcolor, asciicol1, 0, 0.3, 1), darken), 2);
poly_outline = asciiborder << 8;
queuestrn(V, 1, s, darkenedby(asciicol, darken), 2);
queuestrn(V, mapfontscale / 100, s, darkenedby(asciicol, darken), 2);
}
else
queuestrn(V, 1, s, darkenedby(asciicol, darken), 2);
queuestrn(V, mapfontscale / 100, s, darkenedby(asciicol, darken), 2);
}
draw_grid();

View File

@ -1028,6 +1028,8 @@ EX void savecolortable(colortable& ct, string name) {
EX purehookset hooks_configfile;
EX ld mapfontscale = 100;
EX void initConfig() {
// basic config
@ -1080,6 +1082,13 @@ EX void initConfig() {
-> set_reaction(compute_fsize)
-> set_sets([] { dialog::bound_low(0); });
param_f(mapfontscale, "mapfontscale", 100)
-> editable(-400, 400, 10, "map font scale",
"This affects the size of the characters on the ASCII map. This includes ASCII walls/monster display mode, the minimap, minefield values, and various debug features.", 'B')
->set_extra([] {
dialog::get_di().extra_options = [] () { draw_radar(true); };
});
param_i(vid.abs_fsize, "fsize", 12)
-> editable(1, 72, 1, "font size", "", 'b')
-> set_reaction(compute_fsize)
@ -2236,6 +2245,7 @@ EX void showGraphConfig() {
add_edit(vid.fontscale);
else
add_edit(vid.abs_fsize);
add_edit(mapfontscale);
dialog::addSelItem(XLAT("vector settings"), XLAT("width") + " " + fts(vid.linewidth), 'w');
dialog::add_action_push(show_vector_settings);

View File

@ -655,7 +655,7 @@ void celldrawer::do_viewdist() {
if(!dist_label_colored) dc = dist_label_color;
if(label != "")
queuestr(V, (isize(label) > 1 ? .6 : 1), label, 0xFF000000 + dc, 1);
queuestr(V, (isize(label) > 1 ? .6 : 1) * mapfontscale / 100, label, 0xFF000000 + dc, 1);
}
EX void viewdist_configure_dialog() {

View File

@ -846,9 +846,9 @@ EX void draw_ascii(const shiftmatrix& V, char glyph, color_t col, ld size) {
string s = s0 + glyph;
int id = isize(ptds);
if(WDIM == 2 && GDIM == 3)
queuestrn(V * lzpush(cgi.FLOOR - cgi.scalefactor * size / 4), size, s, darkenedby(col, darken), 0);
queuestrn(V * lzpush(cgi.FLOOR - cgi.scalefactor * size / 4), size * mapfontscale / 100, s, darkenedby(col, darken), 0);
else
queuestrn(V, 1, s, darkenedby(col, darken), GDIM == 3 ? 0 : 2);
queuestrn(V, mapfontscale / 100, s, darkenedby(col, darken), GDIM == 3 ? 0 : 2);
while(id < isize(ptds)) ptds[id++]->prio = PPR::MONSTER_BODY;
}
@ -3103,15 +3103,15 @@ EX bool drawMonster(const shiftmatrix& Vparam, int ct, cell *c, color_t col, col
col = mirrorcolor(geometry == gElliptic ? det(Vs.T) < 0 : mirr);
if(!mouseout() && !nospins && GDIM == 2) {
shiftpoint P2 = Vs * inverse_shift(inmirrorcount ? ocwtV : cwtV, mouseh);
queuestr(P2, 10, "x", 0xFF00);
}
queuestr(P2, 10*mapfontscale/100, "x", 0xFF00);
}
if(!nospins && flipplayer) Vs = Vs * lpispin();
res = res && drawMonsterType(moMimic, c, Vs, col, footphase, asciicol);
drawPlayerEffects(Vs, Vparam, c, c->monst);
}
}
// illusions face randomly
else if(c->monst == moIllusion) {
@ -3235,7 +3235,7 @@ EX bool drawMonster(const shiftmatrix& Vparam, int ct, cell *c, color_t col, col
hyperpoint h = inverse_shift(ocwtV, mouseh);
if(flipplayer) h = lpispin() * h;
shiftpoint P2 = Vs * h;
queuestr(P2, 10, "x", 0xFF00);
queuestr(P2, mapfontscale / 10, "x", 0xFF00);
}
if(hide_player()) {
@ -3573,7 +3573,7 @@ void draw_movement_arrows(cell *c, const transmatrix& V, int df) {
transmatrix T = iso_inverse(Centered) * rgpushxto0(Centered * tC0(V)) * lrspintox(Centered*tC0(V)) * spin(-sd * M_PI/S7) * xpush(0.2);
if(vid.axes >= 5)
queuestr(shiftless(T), keysize, s0 + key, col >> 8, 1);
queuestr(shiftless(T), keysize * mapfontscale / 100, s0 + key, col >> 8, 1);
else
queuepoly(shiftless(T), cgi.shArrow, col);
@ -3581,7 +3581,7 @@ void draw_movement_arrows(cell *c, const transmatrix& V, int df) {
else if(!confusingGeometry()) break;
}
}
if(keylist != "") queuestr(shiftless(V), keysize, keylist, col >> 8, 1);
if(keylist != "") queuestr(shiftless(V), keysize * mapfontscale / 100, keylist, col >> 8, 1);
}
EX int celldistAltPlus(cell *c) { return 1000000 + celldistAlt(c); }
@ -4761,7 +4761,7 @@ EX void drawMarkers() {
#if CAP_QUEUE
if(haveMount())
for (const shiftmatrix& V : hr::span_at(current_display->all_drawn_copies, dragon::target)) {
queuestr(V, 1, "X",
queuestr(V, mapfontscale/100, "X",
gradient(0, iinf[itOrbDomination].color, -1, sintick(dragon::whichturn == turncount ? 75 : 150), 1));
}
#endif
@ -4994,12 +4994,12 @@ EX void draw_flash(struct flashdata& f, const shiftmatrix& V, bool& kill) {
int r = 2;
apply_neon(col, r);
if(GDIM == 3 || sphere)
queuestr(V, (1 - tim * 1. / f.size) * f.angle, f.text, col, r);
queuestr(V, (1 - tim * 1. / f.size) * f.angle * mapfontscale / 100, f.text, col, r);
else if(!kill) {
shiftpoint h = tC0(V);
if(hdist0(h) > .1) {
transmatrix V2 = rspintox(h.h) * xpush(hdist0(h.h) * (1 / (1 - tim * 1. / f.size)));
queuestr(shiftless(V2, h.shift), f.angle, f.text, col, r);
queuestr(shiftless(V2, h.shift), f.angle * mapfontscale / 100, f.text, col, r);
}
}
if(static_bubbles) {

View File

@ -2358,7 +2358,7 @@ EX namespace rots {
ptds.clear();
drawthemap();
drawqueue();
displaychr(current_display->xcenter, current_display->ycenter, 0, 24, '+', 0xFFFFFFFF);
displaychr(current_display->xcenter, current_display->ycenter, 0, 24 * mapfontscale / 100, '+', 0xFFFFFFFF);
glflush();
});
gmatrix = std::move(g);

View File

@ -146,7 +146,7 @@ EX void draw_radar(bool cornermode) {
auto compassdir = [&] (char dirname, hyperpoint h) {
h = NLP * h * .8;
queueline(sId*atscreenpos(cx+rad * h[0], cy - rad * h[2] * si + rad * h[1] * co, 0)*C0, sId*atscreenpos(cx+rad*h[0], cy - rad*h[2] * si, 0)*C0, 0xA0401040, -1);
displaychr(int(cx+rad * h[0]), int(cy - rad * h[2] * si + rad * h[1] * co), 0, 8, dirname, 0xA04010);
displaychr(int(cx+rad * h[0]), int(cy - rad * h[2] * si + rad * h[1] * co), 0, 8 * mapfontscale / 100, dirname, 0xA04010);
};
compassdir('E', point3(+1, 0, 0));
compassdir('N', point3(0, +1, 0));
@ -180,10 +180,10 @@ EX void draw_radar(bool cornermode) {
glflush();
for(auto& r: cd->radarpoints) {
if(d3) displaychr(int(cx + rad * r.h[0]), int(cy - rad * r.h[2] * si + rad * r.h[1] * co), 0, 8, r.glyph, r.color);
if(d3) displaychr(int(cx + rad * r.h[0]), int(cy - rad * r.h[2] * si + rad * r.h[1] * co), 0, 8 * mapfontscale / 100, r.glyph, r.color);
else {
hyperpoint h = locate(r.h);
displaychr(int(h[0]), int(h[1]), 0, int(h[2]) / divby, r.glyph, r.color);
displaychr(int(h[0]), int(h[1]), 0, int(h[2]) * mapfontscale / divby / 100, r.glyph, r.color);
}
}
#endif