diff --git a/config.cpp b/config.cpp index cfde5749..c1eb9f97 100644 --- a/config.cpp +++ b/config.cpp @@ -1364,17 +1364,19 @@ void show3D() { dialog::addSelItem(XLAT("Level of water bottom"), fts3(lake_bottom), 'k'); dialog::addBreak(50); - dialog::addSelItem(XLAT("Y shift"), fts3(vid.yshift), 'y'); - dialog::addSelItem(XLAT("camera rotation"), fts3(vid.camera_angle), 's'); - dialog::addSelItem(XLAT("fixed facing"), vid.fixed_facing ? fts(vid.fixed_facing_dir) : XLAT("OFF"), 'f'); + dialog::addSelItem(XLAT(DIM == 2 ? "Y shift" : "third person perspective"), fts3(vid.yshift), 'y'); + if(DIM == 2) dialog::addSelItem(XLAT("camera rotation"), fts3(vid.camera_angle), 's'); + if(DIM == 2) dialog::addSelItem(XLAT("fixed facing"), vid.fixed_facing ? fts(vid.fixed_facing_dir) : XLAT("OFF"), 'f'); dialog::add_action([] () { vid.fixed_facing = !vid.fixed_facing; if(vid.fixed_facing) { dialog::editNumber(vid.fixed_facing_dir, 0, 360, 15, 90, "", ""); dialog::dialogflags |= sm::CENTER; } }); - dialog::addBreak(50); - dialog::addSelItem(XLAT("model used"), conformal::get_model_name(pmodel), 'M'); + if(DIM == 2) { + dialog::addBreak(50); + dialog::addSelItem(XLAT("model used"), conformal::get_model_name(pmodel), 'M'); + } dialog::addBreak(50); #if CAP_RUG diff --git a/control.cpp b/control.cpp index 8d264916..5e7684b0 100644 --- a/control.cpp +++ b/control.cpp @@ -952,17 +952,19 @@ void gmodekeys(int sym, int uni) { #if CAP_RUG if(rug::rugged) rug::handlekeys(sym, uni); #endif - if(NUMBERKEY == '1' && !rug::rugged) { vid.alpha = 999; vid.scale = 998; vid.xposition = vid.yposition = 0; } - if(NUMBERKEY == '2' && !rug::rugged) { vid.alpha = 1; vid.scale = 0.4; vid.xposition = vid.yposition = 0; } - if(NUMBERKEY == '3' && !rug::rugged) { vid.alpha = 1; vid.scale = 1; vid.xposition = vid.yposition = 0; } - if(NUMBERKEY == '4' && !rug::rugged) { vid.alpha = 0; vid.scale = 1; vid.xposition = vid.yposition = 0; } - if(NUMBERKEY == '5') { vid.wallmode += 60 + (shiftmul > 0 ? 1 : -1); vid.wallmode %= 6; } + if(DIM == 2) { + if(NUMBERKEY == '1' && !rug::rugged) { vid.alpha = 999; vid.scale = 998; vid.xposition = vid.yposition = 0; } + if(NUMBERKEY == '2' && !rug::rugged) { vid.alpha = 1; vid.scale = 0.4; vid.xposition = vid.yposition = 0; } + if(NUMBERKEY == '3' && !rug::rugged) { vid.alpha = 1; vid.scale = 1; vid.xposition = vid.yposition = 0; } + if(NUMBERKEY == '4' && !rug::rugged) { vid.alpha = 0; vid.scale = 1; vid.xposition = vid.yposition = 0; } + if(NUMBERKEY == '5') { vid.wallmode += 60 + (shiftmul > 0 ? 1 : -1); vid.wallmode %= 6; } + if(uni == '%') { + if(vid.wallmode == 0) vid.wallmode = 6; + vid.wallmode--; + } + } if(NUMBERKEY == '6') vid.grid = !vid.grid; if(NUMBERKEY == '7') { vid.darkhepta = !vid.darkhepta; } - if(uni == '%') { - if(vid.wallmode == 0) vid.wallmode = 6; - vid.wallmode--; - } } bool haveMobileCompass() { diff --git a/menus.cpp b/menus.cpp index a7e7d32f..7d29900b 100644 --- a/menus.cpp +++ b/menus.cpp @@ -334,10 +334,13 @@ void showDisplayMode() { const char *mdmodes[6] = {"ASCII", "items only", "items and monsters", "high contrast", "3D", "high contrast/3D"}; - dialog::addBoolItem(XLAT("orthogonal projection"), vid.alpha >= 500, '1'); - dialog::addBoolItem(XLAT(sphere ? "stereographic projection" : euclid ? "zoomed out" : "small Poincaré model"), vid.alpha == 1 && vid.scale < 1, '2'); - dialog::addBoolItem(XLAT(sphere ? "zoomed stereographic projection" : euclid ? "zoomed in" : "big Poincaré model"), vid.alpha == 1 && vid.scale >= 1, '3'); - dialog::addBoolItem(XLAT((sphere || euclid) ? "gnomonic projection" : "Klein-Beltrami model"), vid.alpha == 0, '4'); + if(DIM == 2) { + dialog::addBoolItem(XLAT("orthogonal projection"), vid.alpha >= 500, '1'); + dialog::addBoolItem(XLAT(sphere ? "stereographic projection" : euclid ? "zoomed out" : "small Poincaré model"), vid.alpha == 1 && vid.scale < 1, '2'); + dialog::addBoolItem(XLAT(sphere ? "zoomed stereographic projection" : euclid ? "zoomed in" : "big Poincaré model"), vid.alpha == 1 && vid.scale >= 1, '3'); + dialog::addBoolItem(XLAT((sphere || euclid) ? "gnomonic projection" : "Klein-Beltrami model"), vid.alpha == 0, '4'); + } + dialog::addSelItem(XLAT("wall display mode"), XLAT(wdmodes[vid.wallmode]), '5'); if(getcstat == '5') mouseovers = XLAT("also hold Alt during the game to toggle high contrast"); @@ -345,30 +348,37 @@ void showDisplayMode() { dialog::addBoolItem(XLAT("mark heptagons"), (vid.darkhepta), '7'); dialog::addSelItem(XLAT("3D configuration"), "", '9'); + if(DIM == 2) dialog::addSelItem(XLAT("scale factor"), fts(vid.scale), 'z'); dialog::addSelItem(XLAT("monster display mode"), XLAT(mdmodes[vid.monmode]), 'm'); dialog::addBreak(50); #if CAP_EDIT + if(DIM == 2) dialog::addBoolItem(XLAT("vector graphics editor"), (false), 'g'); #endif #if CAP_TEXTURE + if(DIM == 2) dialog::addBoolItem(XLAT("texture mode"), texture::config.tstate == texture::tsActive, 't'); #endif // display modes #if CAP_RUG + if(DIM == 2) dialog::addBoolItem(XLAT("hypersian rug mode"), (rug::rugged), 'u'); #endif #if CAP_MODEL + if(DIM == 2) dialog::addBoolItem(XLAT("paper model creator"), (false), 'n'); #endif + if(DIM == 2) dialog::addBoolItem(XLAT("models of hyperbolic geometry"), pmodel, 'a'); + if(DIM == 2) dialog::addBoolItem(XLAT("animations/history"), anims::any_on(), 'A'); // dialog::addBoolItem(XLAT("expansion"), viewdists, 'x');