diff options
| author | Somhairle H. Marisol <[email protected]> | 2026-09-21 12:12:39 +0800 |
|---|---|---|
| committer | Somhairle H. Marisol <[email protected]> | 2026-09-21 12:12:39 +0800 |
| commit | d10942ba82837b201bb29d83b65ba6c6db3356bf (patch) | |
| tree | 57b6f9dc3ccb7fe85eaea12943f2c99df54701c2 /src/LivingVillage.Desktop/Game.fs | |
| parent | 506afd9e38cad2ab0752734b79ef02da0864db67 (diff) | |
| download | living-village-d10942ba82837b201bb29d83b65ba6c6db3356bf.tar.gz | |
fix(desktop): 键位页面板锚点与行列对齐
键位页内容行与标题改为相对 ControlsPanelY 锚定(标题=面板顶+20、首行=面板顶+60),controlRowRects 同步采用该锚点;实测末行与页脚不再重叠,逐行键名/动作列保持不相交。
Diffstat (limited to 'src/LivingVillage.Desktop/Game.fs')
| -rw-r--r-- | src/LivingVillage.Desktop/Game.fs | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/LivingVillage.Desktop/Game.fs b/src/LivingVillage.Desktop/Game.fs index 25b8c48..4720008 100644 --- a/src/LivingVillage.Desktop/Game.fs +++ b/src/LivingVillage.Desktop/Game.fs @@ -607,21 +607,22 @@ type LivingVillageGame() as this = // Menu panel floats over the lower half; translucent so the scene layers stay visible. spriteBatch.Draw(pixel, Rectangle(panelX, panelY, panelWidth, panelHeight), Color(11, 19, 27, 200)) spriteBatch.Draw(pixel, Rectangle(panelX, panelY, panelWidth, 4), Color(92, 180, 190)) - let contentY = layout.FirstItemY + let contentY = panelY + 60 + let headingY = panelY + 20 match menu.Page with | MainMenu -> - drawText innerX (layout.HeadingY) mutedColor (ChineseText.menuHeading MainMenuHeading) + drawText innerX headingY mutedColor (ChineseText.menuHeading MainMenuHeading) MenuState.items menu |> List.iteri (fun index item -> drawSelection index (MenuState.itemLabel item) (contentY + index * lineHeight)) drawText innerX (panelY + panelHeight - 40) mutedColor "UP DOWN 选择 ENTER 确认" | Settings -> - drawText innerX (layout.HeadingY) mutedColor (ChineseText.menuHeading SettingsHeading) + drawText innerX headingY mutedColor (ChineseText.menuHeading SettingsHeading) MenuState.settings |> List.iteri (fun index setting -> drawSelection index (MenuState.settingsLabel setting) (contentY + index * lineHeight)) drawText innerX (panelY + panelHeight - 72) mutedColor (sprintf "当前 %s" (M6Presentation.clockLabel menu.Settings)) drawText innerX (panelY + panelHeight - 40) mutedColor "ENTER 应用 ESC 返回" | Controls -> - drawText innerX (layout.HeadingY) mutedColor (ChineseText.menuHeading ControlsHeading) + drawText innerX headingY mutedColor (ChineseText.menuHeading ControlsHeading) MenuState.controlRows |> List.iteri (fun index row -> let keyRect, actionRect = TitleScreen.controlRowRects layout index @@ -629,7 +630,7 @@ type LivingVillageGame() as this = 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)) "读取失败" + drawText innerX headingY (Color(240, 130, 120)) "读取失败" let message = menu.Error |> Option.defaultValue "暂无存档" let visible = if message.Length > 24 then message.Substring(0, 24) else message drawText innerX contentY textColor visible |
