summaryrefslogtreecommitdiff
path: root/src/LivingVillage.Desktop/WorldBootstrap.fs
Commit message (Collapse)AuthorAgeFilesLines
* feat(mapgen): 生成器序列化 + 世界站位接入(P20 第三步 A)Somhairle H. Marisol13 days1-6/+29
| | | | | | | | | | | - MapGen.serialize:生成结果的确定性序列化(尺寸/seed/瓦片/Rivers/Bridges/ Paths/Buildings),同 seed 逐字节一致,供回归与跨机核对。 - WorldBootstrap.initialWorldWithPlacement:显式站位建世界;旧 64x48 路径 (initialWorld/initialWorldWithOccupation)字节口径不变。 - WorldBootstrap.initialWorldInMap:用生成器核心可达区做站位,30 spawn 全落 可达核心;新增 serialization/placement 两条测试。 - fsproj:MapGen 先于 WorldBootstrap 编译。 - Desktop 119->121,Kernel 90 不变。
* feat(desktop): P15 ↵Somhairle H. Marisol13 days1-0/+17
| | | | | | | | | | | | | 开局职业选择页——新档四选一+暂不选择,接入 v3 存档与当日任务 - 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 面板显示所选职业的模板名与「待接受」、跨日刷新保持同日。
* feat(occupation): 职业系统第一片 — Kernel 结构 / bootstrap 注入 ↵Somhairle H. Marisol14 days1-5/+20
| | | | | | / 存档 v3 Occupation.fs(Kind/Profile/State + 农夫/渔夫/货郎/书生 中文名常量,按设计 §1 表给初始 Money/Energy/Inventory);ItemKind 扩出 Fish/Spice/Scroll(basePrice 分支补齐,Food 10.0f 数值路径不变 → 无职业 digest 不动);WorldBootstrap.initialWorldWithOccupation 默认 None = 旧行为(Money/Energy 覆盖,库存字段先留数据侧、物理挂接留交易单——取舍见 design §2-C 反对加字段);WorldSave: v3 头仅在有职业时写入(保存 saveToFileWith / loadFromFileWith,v1/v2/v3 无职业类型默认,token 顺序 version|w|h|kind|task|story|…),默认路径 save 输出逐字节等同现行 v2;P10 测试 5 例(§1 表值、v3 round-trip、v1/v2 不吞档、双 seed 逐字节、中文名);Kernel.Tests 引用 Desktop 以驱动 WorldBootstrap(取舍:不做测试专用 shim)。TaskToken/StoryStage 为 v3 占位(任务系统后续单实现)。
* feat(desktop): 增加可选昼光自动演示启动Somhairle H. Marisol14 days1-1/+9
| | | | | | | | | | | | | | | | | [变更性质] - 本提交新增可选的 Desktop 启动行为,不改变默认启动行为。 [新增功能] - 设置 LV_AUTOPLAY_DAYLIGHT=1 时,初始世界和 StartNewGame 从黎明 tick 开始。 - 未设置该变量时继续从 tick 0 的夜晚状态开始。 [实现方案] - 在 WorldBootstrap 中集中计算昼光起始 tick 和同步时间。 - 在 Game 中复用同一世界工厂,并增加黎明与默认状态回归测试。 [影响范围] - 仅影响 Desktop 运行时代码和测试;Kernel 保持不变。 - 环境变量为显式 opt-in,不影响现有自动演示和普通启动路径。
* feat(desktop): 固化样例世界与昼光呈现Somhairle H. Marisol14 days1-0/+36
[变更性质] - this commit adds a deterministic desktop bootstrap for the playable sample world. [新增功能] - this commit places the avatar away from the home doorway and separates villagers from scene footprints. - this commit provides a warm high-contrast daylight tint and exits autoplay after SampleComplete. [实现方案] - this commit isolates desktop spawn policy in WorldBootstrap and routes game startup and sample tests through it. - this commit adds regression coverage for spawn positions, spacing, determinism, and daylight tint. [影响范围] - this commit affects the Desktop application and Desktop tests only. - this commit preserves Kernel behavior and does not include unrelated worktree changes.