summaryrefslogtreecommitdiff
path: root/src/LivingVillage.Desktop/Game.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/Game.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/Game.fs')
-rw-r--r--src/LivingVillage.Desktop/Game.fs10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/LivingVillage.Desktop/Game.fs b/src/LivingVillage.Desktop/Game.fs
index 3a9a004..ea5272b 100644
--- a/src/LivingVillage.Desktop/Game.fs
+++ b/src/LivingVillage.Desktop/Game.fs
@@ -383,6 +383,16 @@ type LivingVillageGame() as this =
world <-
initialWorldForMode state
|> withStartTick
+ // §3 身份条目:带职业开局即写入年鉴,形成个人传记线
+ match state with
+ | Some occupationState ->
+ world <-
+ Sim.appendAnnal
+ { Tick = world.Tick
+ Kind = StoryAnnal
+ Summary = Occupation.Story.identitySummaryOf occupationState.Profile.Kind }
+ world
+ | None -> ()
this.ResetWorldView()
m5View <- { m5View with Task = state }
menu <- menu |> MenuState.setCurrentWorld true |> MenuState.enterGame