<feed xmlns='http://www.w3.org/2005/Atom'>
<title>living-village.git/src/LivingVillage.Desktop/Game.fs, branch p20-map-gen-foundation</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>http://git.somhairle.bid/living-village.git/atom?h=p20-map-gen-foundation</id>
<link rel='self' href='http://git.somhairle.bid/living-village.git/atom?h=p20-map-gen-foundation'/>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/'/>
<updated>2026-09-21T18:43:39+00:00</updated>
<entry>
<title>feat(mapgen): 河道连续性不变量 + 桥/石板路网/沿河民居（P20 第二步）</title>
<updated>2026-09-21T18:43:39+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T18:43:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=d3c0ef17cb1c4d30c1d586e2a5b616f58bd3d875'/>
<id>urn:sha1:d3c0ef17cb1c4d30c1d586e2a5b616f58bd3d875</id>
<content type='text'>
- 河道改为贯穿全图连续水带（每列一段、宽度 &gt;= RiverWidth），置于核心区上下
  两侧且不相交；新增不变量测试：逐列水段数恒定、每段宽度下限、任意水格
  &gt;=2 个水邻居（禁止断裂缺口与孤立水点）。
- Result 新增 Rivers/Bridges/Paths/Buildings/BridgeCrossingsOk；每河 2 座桥、
  横贯主路 + 垂直连接路 + 远岸路 + 白墙黑瓦民居（门朝路）。
- 公开 isWalkable/floodFill；ReachabilityOk 现覆盖 30 spawn + 所有门 + 所有桥面，
  BridgeCrossingsOk 保证每桥两岸同连通域。
- 回归：Desktop 115-&gt;119、Kernel 90 不变；final_digest 与基线一致。
</content>
</entry>
<entry>
<title>feat(mapgen): 参数化确定性生成器与视口裁剪（P20 第一步）</title>
<updated>2026-09-21T18:28:31+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T18:28:31+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=ef78374c316587fb585b72e6d427cd6e61203655'/>
<id>urn:sha1:ef78374c316587fb585b72e6d427cd6e61203655</id>
<content type='text'>
- 新增纯函数 MapGen：尺寸参数化（默认 64x48，可 256x192），splitmix64
  随机游走河道 + 2-3 octave value noise + 泊松式布点；核心区整平后以 BFS
  校验 5x6=30 个 spawn 全部可达，不可达确定性修整并复验。
- visibleTileRange/visibleTileCount 纯函数，drawWorld 改为调用之（行为不变）；
  drawMapFitted/drawMapViewport 仅证据用。
- 存档沿用 v2/v3 边界字段，补参数化边界 round-trip 测试，未改 Sim 语义。
- 回归：Desktop 109-&gt;115、Kernel 89-&gt;90；final_digest 与基线一致。
</content>
</entry>
<entry>
<title>feat(desktop): P18 黄昏暖色真实渲染（加性暖色 veil + 双窗口光照 + 时段标签对齐）</title>
<updated>2026-09-21T17:53:24+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T17:53:24+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=37953a4b58dfc5f3b8aedf10ad6f1474c2960767'/>
<id>urn:sha1:37953a4b58dfc5f3b8aedf10ad6f1474c2960767</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix(desktop): P17-FIX 起时钩子在 sample/autoplay 路径生效（resolveStartTick 纯函数 + 回归 + 重拍证据）</title>
<updated>2026-09-21T17:21:46+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T17:21:46+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=a67e9262caca67f1078f77ed2f274a46e284c6c8'/>
<id>urn:sha1:a67e9262caca67f1078f77ed2f274a46e284c6c8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>test(desktop): P17 取证钩子（LV_AUTOPLAY_START_HOUR 纯函数起时）+ 证据与 docs 记录</title>
<updated>2026-09-21T16:50:30+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T16:50:30+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=8fad58bd62155da653251ab7457cd54ebba0b279'/>
<id>urn:sha1:8fad58bd62155da653251ab7457cd54ebba0b279</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(desktop): P16-FIX 开始界面截图模式（LV_AUTOPLAY_MENU_SHOT）+ 真实菜单证据补拍</title>
<updated>2026-09-21T16:26:05+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T16:26:05+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=81a84f9f86d59387a349caa339148c7a7a6d1e72'/>
<id>urn:sha1:81a84f9f86d59387a349caa339148c7a7a6d1e72</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(desktop): P16 HUD 顶部窄信息条（时段/时间/倍速/体力/钱币）+ 冬夜冷色 + 面板/提示渐变重绘</title>
<updated>2026-09-21T16:10:18+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T16:10:18+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=f79839a4bb57b977b7208e5f826a8b0989cbc33e'/>
<id>urn:sha1:f79839a4bb57b977b7208e5f826a8b0989cbc33e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(desktop): P16 启动画面淡入（Esc/空格跳过）+ 开始界面收敛三项（开始/读档/退出）+ CJK 补字 238</title>
<updated>2026-09-21T16:08:15+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T16:08:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=d85cce460fd7fbb8854fb11ba547be1baf576de7'/>
<id>urn:sha1:d85cce460fd7fbb8854fb11ba547be1baf576de7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(desktop): P15 开局职业选择页——新档四选一+暂不选择，接入 v3 存档与当日任务</title>
<updated>2026-09-21T14:57:50+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T14:57:50+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=60bbc83d9a1d047933e4128e7b48e1c61c925a14'/>
<id>urn:sha1:60bbc83d9a1d047933e4128e7b48e1c61c925a14</id>
<content type='text'>
- MenuState：新增 OccupationSelect 页与 StartNewGameWith 命令；occupationOptions=农夫/渔夫/货郎/书生/暂不选择，
  默认高亮「暂不选择」= 不写职业的旧行为；四选一确认后发 StartNewGameWith，ESC 返回主菜单（既有 MainMenu
  行为与测试不变）。
- WorldBootstrap.occupationStateFor/refreshOccupationToday：按 seed+职业种子生成/跨日刷新当日 Offered 任务。
- Game：主菜单「开始新游戏」→ 职业选择页；选定后 initialWorldWithOccupation 注入 Money/Energy 与 Today，
  m5View.Task 随之写入 v3 存档；游玩中按日刷新；autoplay/flow 默认走「暂不选择」保持旧演示行为；DrawMenu 渲染职业页。
- 测试 Desktop 93（新增 6）：职业页选项顺序/默认 None/标签、确认命令与返回、bootstrap 四职业 Money/Energy+当日池内
  Offered 任务、四职业 v3 round-trip（职业+任务逐字段）、T 面板显示所选职业的模板名与「待接受」、跨日刷新保持同日。
</content>
</entry>
<entry>
<title>fix(desktop): 灯笼光晕按自身 alpha 预乘并改径向层叠，消除夜间纯白方块</title>
<updated>2026-09-21T13:53:53+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T13:53:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=b5ffb35fc0824a297ff88297390310acb6c45335'/>
<id>urn:sha1:b5ffb35fc0824a297ff88297390310acb6c45335</id>
<content type='text'>
- 新增 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 交易会崩溃且告警）
</content>
</entry>
</feed>
