summaryrefslogtreecommitdiff
path: root/src/LivingVillage.Desktop/ChineseText.fs
diff options
context:
space:
mode:
authorSomhairle H. Marisol <[email protected]>2026-09-22 16:33:03 +0800
committerSomhairle H. Marisol <[email protected]>2026-09-22 16:33:03 +0800
commit9821b54ff2a77539898b62471d79dc4685b59cad (patch)
treeffd5fb63883dd05b80fca5729af74be41df3a04d /src/LivingVillage.Desktop/ChineseText.fs
parent0539bba17c260f6a4b51d3cefddac0ff448c19bc (diff)
downloadliving-village-9821b54ff2a77539898b62471d79dc4685b59cad.tar.gz
feat(kernel,desktop): P31 step3 story annals + identity entry + glyph atlas
- Sim.AnnalKind gains StoryAnnal (summary lives in the existing Summary field); WorldSave v3 serializes it with the new 'story' token. v1/v2 saves never contain the token and stay byte-identical; v3 save -> load -> save roundtrips byte-for-byte (tested). - Occupation.Story.identitySummaryOf: plain chronicle-style identity line written to the yearbook at game start (design section 3), e.g. yi-da-yu-wei-sheng. - Desktop: story summaries render in the chronicle panel; StartNewGame appends the identity annal; chooseIntent now routes responses through Occupation.biasResponse and advances the storyline (one stage per player dialogue) with the summary appended as a StoryAnnal. - M5View gains Seed (world seed source for the story start-day hash). - Chinese copy synced into requiredUiLabels; cjk-glyphs.txt + CjkGlyphAtlas.characterTable extended 238 -> 307 glyphs (384x480), atlas regenerated with the deterministic script. - 4 new kernel tests (115 -> 119); performance digest unchanged.
Diffstat (limited to 'src/LivingVillage.Desktop/ChineseText.fs')
-rw-r--r--src/LivingVillage.Desktop/ChineseText.fs36
1 files changed, 35 insertions, 1 deletions
diff --git a/src/LivingVillage.Desktop/ChineseText.fs b/src/LivingVillage.Desktop/ChineseText.fs
index 52e124d..9789ae7 100644
--- a/src/LivingVillage.Desktop/ChineseText.fs
+++ b/src/LivingVillage.Desktop/ChineseText.fs
@@ -217,7 +217,41 @@ module ChineseText =
"收货"
"转卖"
"观察记事"
- "论理" ]
+ "论理"
+ "剧情线"
+ "雨水与年成"
+ "水位与收成"
+ "新货的路子"
+ "庙前的争论"
+ "未开始"
+ "已接任务"
+ "走访中"
+ "已收束"
+ "耕田"
+ "打渔"
+ "贩货"
+ "读书"
+ "以耕田为生"
+ "以打渔为生"
+ "以贩货为生"
+ "以读书为生"
+ "接了件事:雨水与年成,得去村里多问问"
+ "接了件事:水位与收成,得去村里多问问"
+ "接了件事:新货的路子,得去村里多问问"
+ "接了件事:庙前的争论,得去村里多问问"
+ "走访了几户人家,改日再问"
+ "雨水与年成有了结果:乡邻都说雨水匀,今年差不了"
+ "雨水与年成有了结果:雨水尚可,年成将就,照旧耕作"
+ "雨水与年成有了结果:问不出准信,年成只能看天"
+ "水位与收成有了结果:乡邻说得真切,水位稳了,收成坏不了"
+ "水位与收成有了结果:众说平常,水位尚可,收成将就"
+ "水位与收成有了结果:问了几家都淡淡的,水情还得自己看"
+ "新货的路子有了结果:乡邻热心指路,新货不愁卖"
+ "新货的路子有了结果:说法平常,先小量试卖"
+ "新货的路子有了结果:各家都淡淡的,路子还得自己闯"
+ "庙前的争论有了结果:各说各理,事有分晓"
+ "庙前的争论有了结果:众说纷纭,暂无定论"
+ "庙前的争论有了结果:无人理会,先记在册上" ]
let layoutText (maxWidth: int) (supported: Set<char>) (text: string) : TextLayout =
let width = max 1 maxWidth