diff --git a/lang/cs.lang b/lang/cs.lang index e821346..3cad155 100644 --- a/lang/cs.lang +++ b/lang/cs.lang @@ -264,6 +264,8 @@ val.medium = Střední val.high = Vysoká val.normal = Normální val.large = Velké +val.small = Malé +val.auto_plain = Automaticky # ---- key binding names key.cam_forward = Kamera vpřed diff --git a/lang/da.lang b/lang/da.lang index d1d0092..771790b 100644 --- a/lang/da.lang +++ b/lang/da.lang @@ -264,6 +264,8 @@ val.medium = Middel val.high = Høj val.normal = Normal val.large = Stor +val.small = Lille +val.auto_plain = Automatisk # ---- key binding names key.cam_forward = Kamera frem diff --git a/lang/de.lang b/lang/de.lang index c38395d..426acc3 100644 --- a/lang/de.lang +++ b/lang/de.lang @@ -263,6 +263,8 @@ val.medium = Mittel val.high = Hoch val.normal = Normal val.large = Groß +val.small = Klein +val.auto_plain = Automatisch # ---- Namen der Tastenbelegung key.cam_forward = Kamera vor diff --git a/lang/el.lang b/lang/el.lang index 2c9ab0d..37f3b95 100644 --- a/lang/el.lang +++ b/lang/el.lang @@ -264,6 +264,8 @@ val.medium = Μεσαία val.high = Υψηλή val.normal = Κανονικό val.large = Μεγάλο +val.small = Μικρό +val.auto_plain = Αυτόματο # ---- key binding names key.cam_forward = Κάμερα μπροστά diff --git a/lang/en.lang b/lang/en.lang index 70c7f88..1b372b6 100644 --- a/lang/en.lang +++ b/lang/en.lang @@ -264,6 +264,8 @@ val.medium = Medium val.high = High val.normal = Normal val.large = Large +val.small = Small +val.auto_plain = Auto # ---- key binding names key.cam_forward = Camera forward diff --git a/lang/es.lang b/lang/es.lang index 7cf43f4..7a7b638 100644 --- a/lang/es.lang +++ b/lang/es.lang @@ -264,6 +264,8 @@ val.medium = Medio val.high = Alto val.normal = Normal val.large = Grande +val.small = Pequeño +val.auto_plain = Automático # ---- key binding names key.cam_forward = Cámara adelante diff --git a/lang/fi.lang b/lang/fi.lang index 174e78d..f52b9f5 100644 --- a/lang/fi.lang +++ b/lang/fi.lang @@ -264,6 +264,8 @@ val.medium = Keski val.high = Korkea val.normal = Normaali val.large = Suuri +val.small = Pieni +val.auto_plain = Automaattinen # ---- key binding names key.cam_forward = Kamera eteen diff --git a/lang/hr.lang b/lang/hr.lang index 0eb88e2..23f998d 100644 --- a/lang/hr.lang +++ b/lang/hr.lang @@ -264,6 +264,8 @@ val.medium = Srednje val.high = Visoko val.normal = Normalno val.large = Veliko +val.small = Malo +val.auto_plain = Automatski # ---- key binding names key.cam_forward = Kamera naprijed diff --git a/lang/hu.lang b/lang/hu.lang index 450bc0a..2679006 100644 --- a/lang/hu.lang +++ b/lang/hu.lang @@ -264,6 +264,8 @@ val.medium = Közepes val.high = Magas val.normal = Normál val.large = Nagy +val.small = Kicsi +val.auto_plain = Automatikus # ---- key binding names key.cam_forward = Kamera előre diff --git a/lang/it.lang b/lang/it.lang index d1e1e83..0b490ad 100644 --- a/lang/it.lang +++ b/lang/it.lang @@ -264,6 +264,8 @@ val.medium = Media val.high = Alta val.normal = Normale val.large = Grande +val.small = Piccolo +val.auto_plain = Automatico # ---- key binding names key.cam_forward = Camera avanti diff --git a/lang/nl.lang b/lang/nl.lang index 972b970..6b79a8e 100644 --- a/lang/nl.lang +++ b/lang/nl.lang @@ -264,6 +264,8 @@ val.medium = Middel val.high = Hoog val.normal = Normaal val.large = Groot +val.small = Klein +val.auto_plain = Automatisch # ---- key binding names key.cam_forward = Camera vooruit diff --git a/lang/no.lang b/lang/no.lang index 68843c7..2e890fd 100644 --- a/lang/no.lang +++ b/lang/no.lang @@ -264,6 +264,8 @@ val.medium = Middels val.high = Høy val.normal = Normal val.large = Stor +val.small = Liten +val.auto_plain = Automatisk # ---- key binding names key.cam_forward = Kamera fram diff --git a/lang/pt.lang b/lang/pt.lang index 7e21f8a..efe6b95 100644 --- a/lang/pt.lang +++ b/lang/pt.lang @@ -264,6 +264,8 @@ val.medium = Médio val.high = Alto val.normal = Normal val.large = Grande +val.small = Pequeno +val.auto_plain = Automático # ---- key binding names key.cam_forward = Câmara p/ frente diff --git a/lang/ro.lang b/lang/ro.lang index 9daec65..2ab9793 100644 --- a/lang/ro.lang +++ b/lang/ro.lang @@ -264,6 +264,8 @@ val.medium = Mediu val.high = Înalt val.normal = Normal val.large = Mare +val.small = Mic +val.auto_plain = Automat # ---- key binding names key.cam_forward = Cameră înainte diff --git a/lang/ru.lang b/lang/ru.lang index e613a43..f9776d1 100644 --- a/lang/ru.lang +++ b/lang/ru.lang @@ -264,6 +264,8 @@ val.medium = Средне val.high = Высоко val.normal = Обычный val.large = Большой +val.small = Маленький +val.auto_plain = Авто # ---- key binding names key.cam_forward = Камера вперёд diff --git a/lang/sk.lang b/lang/sk.lang index a3c1021..182a279 100644 --- a/lang/sk.lang +++ b/lang/sk.lang @@ -264,6 +264,8 @@ val.medium = Stredná val.high = Vysoká val.normal = Normálna val.large = Veľká +val.small = Malá +val.auto_plain = Automaticky # ---- key binding names key.cam_forward = Kamera dopredu diff --git a/lang/sr.lang b/lang/sr.lang index 587c248..7ecab77 100644 --- a/lang/sr.lang +++ b/lang/sr.lang @@ -264,6 +264,8 @@ val.medium = Средње val.high = Високо val.normal = Нормално val.large = Велико +val.small = Мало +val.auto_plain = Аутоматски # ---- key binding names key.cam_forward = Камера напред diff --git a/lang/sv.lang b/lang/sv.lang index 1f7d87c..cce7558 100644 --- a/lang/sv.lang +++ b/lang/sv.lang @@ -264,6 +264,8 @@ val.medium = Medel val.high = Hög val.normal = Normal val.large = Stor +val.small = Liten +val.auto_plain = Automatisk # ---- key binding names key.cam_forward = Kamera framåt diff --git a/src/main.rs b/src/main.rs index 6949bb3..ce8c155 100644 --- a/src/main.rs +++ b/src/main.rs @@ -976,8 +976,12 @@ async fn main() { // 1080 device rows in landscape; a smaller screen draws in device pixels) let need: u32 = 900; // measured on the shorter side: upright (portrait) the width gets those pixels and the - // height grows with the screen, so the world and the menus keep their size - let short = rows * need.div_ceil(rows); + // height grows with the screen, so the world and the menus keep their size. The setting + // "interface size" picks the interface pixels per world pixel: large 2, medium 3, small 4 + let short = match app.settings.ui_factor { + k @ 2..=4 => rows * k as u32, + _ => rows * need.div_ceil(rows), + }; let (w, h) = (screen_width().max(1.0), screen_height().max(1.0)); let vrows = if h > w { (short as f32 * h / w).round() as u32 } else { short }; ui::set_virtual_rows(vrows); diff --git a/src/menu.rs b/src/menu.rs index 0b73294..7378a5a 100644 --- a/src/menu.rs +++ b/src/menu.rs @@ -141,13 +141,12 @@ fn item_value(it: Item, s: &Settings) -> String { _ => "val.medium", }), Item::Lights => s.max_lights.to_string(), - Item::UiScale => { - if s.ui_factor == 0 { - trf("val.auto", &[crate::ui::F().to_string()]) - } else { - format!("{}x", s.ui_factor) - } - } + Item::UiScale => tr(match s.ui_factor { + 2 => "val.large", + 3 => "val.medium", + 4 => "val.small", + _ => "val.auto_plain", + }), Item::DebugFps => onoff(s.debug_fps), Item::DebugFrameTime => onoff(s.debug_frame_time), Item::DebugPing => onoff(s.debug_ping), @@ -202,7 +201,7 @@ fn item_change(it: Item, s: &mut Settings, d: i32) { Item::Outlines => s.outlines = !s.outlines, Item::WallDetail => s.wall_detail = cycle(&[1u8, 2, 3], s.wall_detail, d), Item::Lights => s.max_lights = cycle(&[8u8, 16, 24], s.max_lights, d), - Item::UiScale => s.ui_factor = cycle(&[0u8, 1, 2, 3, 4], s.ui_factor, d), + Item::UiScale => s.ui_factor = cycle(&[0u8, 2, 3, 4], if [0, 2, 3, 4].contains(&s.ui_factor) { s.ui_factor } else { 0 }, d), Item::RenderScale => s.pixel_rows = cycle(&[270u16, 360, 480], if [270, 360, 480].contains(&s.pixel_rows) { s.pixel_rows } else { 360 }, d), Item::DebugFps => s.debug_fps = !s.debug_fps, Item::DebugFrameTime => s.debug_frame_time = !s.debug_frame_time, diff --git a/src/settings.rs b/src/settings.rs index aab29dd..8fec9ed 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -148,7 +148,7 @@ pub struct Settings { pub outlines: bool, pub wall_detail: u8, // 1 low, 2 medium, 3 high pub max_lights: u8, // 8, 16 or 24 - pub ui_factor: u8, // interface size: 0 = automatic, 1..4 = fixed integer factor + pub ui_factor: u8, // interface size: 0 = automatic, 2 large, 3 medium, 4 small (interface pixels per world pixel) pub render_scale: u8, // old pixel-look divisor (no longer used, kept for old settings files) pub pixel_rows: u16, // pixel look: rows of the world on every screen (270, 360, 480) pub touch_ui: u8, // touch interface: 0 = automatic (after the first touch), 1 = on, 2 = off