1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-06-20 07:14:07 +00:00

fixed FOV menu to automatically change its upper bound on high-fov modes

This commit is contained in:
Zeno Rogue 2024-01-07 09:08:44 +01:00
parent 7ad955dcff
commit fc808d448b

View File

@ -2521,14 +2521,7 @@ EX ld max_fov_angle() {
return acos(-p) * 2 / degree; return acos(-p) * 2 / degree;
} }
EX void add_edit_fov(char key IS('f')) { EX void edit_fov_screen() {
string sfov = fts(vid.fov) + "°";
if(get_stereo_param()) {
sfov += " / " + fts(max_fov_angle()) + "°";
}
dialog::addSelItem(XLAT("field of view"), sfov, key);
dialog::add_action([=] {
dialog::editNumber(vid.fov, 1, max_fov_angle(), 1, 90, "field of view", dialog::editNumber(vid.fov, 1, max_fov_angle(), 1, 90, "field of view",
XLAT( XLAT(
"Horizontal field of view, in angles. " "Horizontal field of view, in angles. "
@ -2542,12 +2535,23 @@ EX void add_edit_fov(char key IS('f')) {
dialog::bound_low(1e-8); dialog::bound_low(1e-8);
dialog::bound_up(max_fov_angle() - 0.01); dialog::bound_up(max_fov_angle() - 0.01);
dialog::get_di().extra_options = [] { dialog::get_di().extra_options = [] {
auto ptr = dynamic_cast<dialog::number_dialog*> (screens.back().target_base());
if(ptr && ptr->vmax != max_fov_angle()) { popScreen(); edit_fov_screen(); return; }
add_edit(vid.stereo_mode, 'M'); add_edit(vid.stereo_mode, 'M');
if(among(vid.stereo_mode, sPanini, sStereographic)) { if(among(vid.stereo_mode, sPanini, sStereographic)) {
add_edit(vid.stereo_param, 'P'); add_edit(vid.stereo_param, 'P');
} }
}; };
}); }
EX void add_edit_fov(char key IS('f')) {
string sfov = fts(vid.fov) + "°";
if(get_stereo_param()) {
sfov += " / " + fts(max_fov_angle()) + "°";
}
dialog::addSelItem(XLAT("field of view"), sfov, key);
dialog::add_action(edit_fov_screen);
} }
bool supported_ods() { bool supported_ods() {