From 7e197babfbb68d7f7d1866d6a0ca47cf17d3af23 Mon Sep 17 00:00:00 2001 From: "Somhairle H. Marisol" Date: Sun, 20 Sep 2026 14:20:54 +0800 Subject: feat(m5): 增加可交互对话、需求观察与编年史 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [变更性质] - 本提交新增 M5 用户能力,不是缺陷修复。 [新增功能] - 增加玩家六意图对话、需求面板、可见 NPC 观察、编年史与因果谣言冒烟验收。 [实现方案] - 在 Kernel 中扩展 Avatar Mind、对话结果、观察数据、Annals 和确定性谣言链。 - 在 Desktop 中加入键盘交互、像素文本面板和运行时状态展示,并补充 Headless 与测试覆盖。 [影响范围] - 覆盖 Kernel、Headless、Desktop 及测试工程;保留既有 M3/M4 确定性与交易、关系、谣言行为。 --- src/LivingVillage.Kernel.Tests/RelationTests.fs | 30 +++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) (limited to 'src/LivingVillage.Kernel.Tests/RelationTests.fs') diff --git a/src/LivingVillage.Kernel.Tests/RelationTests.fs b/src/LivingVillage.Kernel.Tests/RelationTests.fs index 20331ce..b98252d 100644 --- a/src/LivingVillage.Kernel.Tests/RelationTests.fs +++ b/src/LivingVillage.Kernel.Tests/RelationTests.fs @@ -32,11 +32,22 @@ module RelationHarness = { Tick = tick Time = 0.0 Rng = Rng.ofSeed 1UL - Avatar = { Pos = { X = 0.0f; Y = 0.0f } } + Avatar = + { Pos = { X = 0.0f; Y = 0.0f } + Mind = + { Needs = needs + Personality = personalityOfSeed 1UL + Action = Wander + Target = actionTarget Wander + ActionAge = 0L + EffectDone = false + HungerFlagged = false + Memory = [] } } NoHost = { Reserved = 0UL } Npcs = [| mkNpc 0 mem0; mkNpc 1 mem1 |] Events = [] - Rumors = [] } + Rumors = [] + Annals = [] } let chatted (tick: int64) (partner: int) : MemoryEvent = { Tick = tick; Kind = Chatted(NpcId partner); Valence = Sim.chatValence } @@ -182,11 +193,22 @@ type RelationTests () = { Tick = 1L Time = 0.0 Rng = Rng.ofSeed 55UL - Avatar = { Pos = plaza } + Avatar = + { Pos = plaza + Mind = + { Needs = needs + Personality = personality + Action = Wander + Target = actionTarget Wander + ActionAge = 0L + EffectDone = false + HungerFlagged = false + Memory = [] } } NoHost = { Reserved = 0UL } Npcs = [| self; nearest; alternate |] Events = [] - Rumors = [] } + Rumors = [] + Annals = [] } let next = Sim.step RelationHarness.zeroInput world match List.tryHead next.Npcs.[0].Mind.Memory with | Some entry -> -- cgit v1.2.3