diff options
| author | Somhairle H. Marisol <[email protected]> | 2026-09-21 12:07:13 +0800 |
|---|---|---|
| committer | Somhairle H. Marisol <[email protected]> | 2026-09-21 12:07:13 +0800 |
| commit | 506afd9e38cad2ab0752734b79ef02da0864db67 (patch) | |
| tree | 6006269927609e53bfd826df4f6307681f994a0a /src/LivingVillage.Desktop/Game.fs | |
| parent | 2851a030db0f0bc5892305fb189a41c97c13578d (diff) | |
| download | living-village-506afd9e38cad2ab0752734b79ef02da0864db67.tar.gz | |
fix(desktop): 键位页键名列统一宽度不叠印
Controls 页按键名列独立成列(ControlsKeyX/KeyWidth=120/ActionX),controlRowRects 纯函数返回键名与动作矩形,回归测试断言逐行矩形不相交、全部行键名列 x/宽度一致、列宽容纳最长键名 F1/F2/F3;面板上移至 ControlsPanelY 保证 14 行键位加页脚完整落入视口。
Diffstat (limited to 'src/LivingVillage.Desktop/Game.fs')
| -rw-r--r-- | src/LivingVillage.Desktop/Game.fs | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/LivingVillage.Desktop/Game.fs b/src/LivingVillage.Desktop/Game.fs index 7337129..25b8c48 100644 --- a/src/LivingVillage.Desktop/Game.fs +++ b/src/LivingVillage.Desktop/Game.fs @@ -547,6 +547,8 @@ type LivingVillageGame() as this = | LoadError -> 4 | Playing -> 0 let rowHeight = if menu.Page = Controls then 25 else layout.MenuLineHeight + let panelY = + if menu.Page = Controls then layout.ControlsPanelY else layout.PanelY let panelHeight = min (height - panelY - 16) (max layout.PanelHeight (120 + contentRows * rowHeight + 48)) @@ -622,7 +624,9 @@ type LivingVillageGame() as this = drawText innerX (layout.HeadingY) mutedColor (ChineseText.menuHeading ControlsHeading) MenuState.controlRows |> List.iteri (fun index row -> - drawText innerX (contentY + index * 25) textColor (sprintf "%s %s" row.Keys row.Action)) + let keyRect, actionRect = TitleScreen.controlRowRects layout index + PixelText.draw spriteBatch pixel cjkAtlas keyRect.X keyRect.Y textScale textColor row.Keys + PixelText.draw spriteBatch pixel cjkAtlas actionRect.X actionRect.Y textScale textColor row.Action) drawText innerX (panelY + panelHeight - 40) mutedColor "ESC 返回" | LoadError -> drawText innerX (layout.HeadingY) (Color(240, 130, 120)) "读取失败" |
