summaryrefslogtreecommitdiff
path: root/src/LivingVillage.Desktop/Interaction.fs
Commit message (Collapse)AuthorAgeFilesLines
* feat(desktop): P31 step4 story progress display + evidence shotsSomhairle H. Marisol12 days1-1/+5
| | | | | | | | | | | | | | | | - Task panel (T key): a storyline row per occupation, e.g. ju-qing-xian: shui-wei-yu-shou-cheng, zou-fang-zhong (line name + stage name); absent for occupation-free saves. - Occupation select page: minimal hint line showing the selected occupation's storyline name. - Evidence hook LV_STORY_SHOT=1 (+LV_STORY_OCCUPATION, LV_STORY_STAGE): boots a real world through the standard bootstrap, advances the story via the real dialogue pipeline (chooseDialogueWith bias + Story.onDialogue + StoryAnnal append), opens the task panel and saves one back-buffer frame, then exits. 4 Xvfb shots (farmer/fisher/peddler/scholar) captured under art/ (gitignored, not committed). - 4 new desktop tests (156 -> 160): panel storyline lines, bias + story advance through M5Interaction, no-occupation path stays story-free.
* feat(kernel,desktop): P31 step3 story annals + identity entry + glyph atlasSomhairle H. Marisol12 days1-6/+30
| | | | | | | | | | | | | | | | | | - 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.
* feat(desktop): P16 HUD ↵Somhairle H. Marisol13 days1-5/+4
| | | | 顶部窄信息条(时段/时间/倍速/体力/钱币)+ 冬夜冷色 + 面板/提示渐变重绘
* fix(desktop): 灯笼光晕按自身 alpha ↵Somhairle H. Marisol13 days1-0/+3
| | | | | | | | | | | | | 预乘并改径向层叠,消除夜间纯白方块 - 新增 VillageArt.premultiply:MonoGame SpriteBatch 默认预乘混合,直传 Color(r,g,b,a) 会直接加 rgb 导致多层暖色饱和成 75x75 纯白块 - lanternGlowLayers 用同心圆 pixel run 做径向衰减,逐层预乘,只在 RiverLantern 实体处绘制 - 水面相位改 waterFrameTickAt=(tick/32+x+2y)%3,同一帧相邻砖相位不同 - 炊烟改为 drawWorld 末尾独立一遍,位置 offsetTile 0 -3,画在屋瓦/竹子之上 - 角色脚底对齐 characterFeetOffset=16 并加预乘椭圆接触阴影 - 补全 Interaction.itemName 的 ItemKind 匹配(否则非 Food 交易会崩溃且告警)
* feat(desktop): P12 中文每日任务面板——T ↵Somhairle H. Marisol13 days1-3/+34
| | | | 键任务页、Offered/Active/Done 三态+职业名,存读档字段级携带职业
* style(desktop): Interaction.fs:191 行尾空白顺手修(P11 附带项)Somhairle H. Marisol13 days1-1/+1
|
* feat(desktop): 目标上方浮动情境提示Somhairle H. Marisol14 days1-4/+63
| | | | 新增 FloatingPrompt 纯布局模块(含 measureWidth 与 PixelText 等宽规则):短提示锚定在唯一目标头顶上方,水平居中并钳制在视口内,避开左下 HUD 带(height-160)与右上状态条带(宽度 248);沿用现有 CJK 图集字体路径,不新造字形;对话/需求面板与菜单打开时不显示(复用 worldInputAllowed 判定与渲染门)。回归测试覆盖 1280x720/1920x1080 五个极限锚点、宽度测量、面板开启时提示为空且禁用世界输入。
* fix(desktop): 目标选择纯距离优先与 id 平局Somhairle H. Marisol14 days1-6/+1
| | | | 情境提示目标选择改为距离最近优先(不再按门/人类型特权),平局按实体 id 升序确定唯一目标;新增门/人两侧距离优先对照、精确等距 tie、NPC 数组快照不变(resolve 与 refreshPrompt 均不突变 Npcs)回归测试;透墙与超距判定沿用既有 实现,已有边界/竞争/切换用例保持全绿。
* feat(desktop): 顶部极简状态条Somhairle H. Marisol14 days1-0/+8
| | | | 常驻 HUD 新增右上角半透明状态条:天数(world.Tick/ticksPerDay+1)与金钱/精力(直接取自 avatar.Mind.Needs 真实数据,无编造数值源);新增 cornerStatusLines 纯函数与回归测试,UI 文案目录补 天数/金钱/精力(字符表已含,无需重生成图集)。
* fix(desktop): 修复 HUD 缺字并统一轻量面板与情境提示Somhairle H. Marisol14 days1-8/+57
| | | | 字符表扩充至 197 字(补 间/门/谈/体/屋/返/×/,/:等全部 UI 用字),用 Noto Sans CJK 重新生成图集并逐字校验;新增字符表覆盖全部 UI 文案、瞬态状态 2.5 秒过期、对话完成后回到轻量面板等回归测试;户外与室内统一左下角轻量 HUD,互动日志改为短暂反馈;样例脚本保留 E 交谈 提示与对话菜单停留帧。
* feat(m6c): 完成江南村庄中文交付Somhairle H. Marisol2026-09-211-21/+188
| | | | | | | | | | 完成江南村庄场景、角色表现和中文界面的 M6c 交付范围。 新增 CJK 字形图集、中文文案与运行时加载,补充民居情境交互和确定性村庄美术表现。 更新资源复制与 Linux/macOS 打包校验,加入 188 字符清单、资源许可说明和对应原型测试。 补充江南美术方向与 M6c 交付说明,并保持原有模拟内核和桌面构建入口不变。
* feat(desktop): localize village presentation labelsSomhairle H. Marisol2026-09-201-41/+130
| | | | | | | | | | | | | | | | [Change Nature] - This commit adds the Chinese display layer for the desktop village prototype. [New Capability] - Menu, settings, controls, interaction panels, chronicle entries, trade results, day-night labels, and speed labels now use Chinese copy. [Implementation] - Keep simulation state, commands, and machine-readable status strings unchanged. - Add focused formatter coverage and update affected presentation assertions. [Impact] - Desktop presentation behavior is localized without changing Kernel or simulation logic. - Existing release build and test coverage remain green.
* feat(m5): 增加可交互对话、需求观察与编年史Somhairle H. Marisol2026-09-201-0/+211
[变更性质] - 本提交新增 M5 用户能力,不是缺陷修复。 [新增功能] - 增加玩家六意图对话、需求面板、可见 NPC 观察、编年史与因果谣言冒烟验收。 [实现方案] - 在 Kernel 中扩展 Avatar Mind、对话结果、观察数据、Annals 和确定性谣言链。 - 在 Desktop 中加入键盘交互、像素文本面板和运行时状态展示,并补充 Headless 与测试覆盖。 [影响范围] - 覆盖 Kernel、Headless、Desktop 及测试工程;保留既有 M3/M4 确定性与交易、关系、谣言行为。