diff options
| author | Somhairle H. Marisol <[email protected]> | 2026-09-22 00:50:30 +0800 |
|---|---|---|
| committer | Somhairle H. Marisol <[email protected]> | 2026-09-22 00:50:30 +0800 |
| commit | 8fad58bd62155da653251ab7457cd54ebba0b279 (patch) | |
| tree | a425dc6bf963fe614aeb28cc80823d7c69b76904 /src/LivingVillage.Desktop | |
| parent | e9d3e224e802ec41b9f565f5e8ed7eec8470a310 (diff) | |
| download | living-village-8fad58bd62155da653251ab7457cd54ebba0b279.tar.gz | |
test(desktop): P17 取证钩子(LV_AUTOPLAY_START_HOUR 纯函数起时)+ 证据与 docs 记录
Diffstat (limited to 'src/LivingVillage.Desktop')
| -rw-r--r-- | src/LivingVillage.Desktop/Game.fs | 15 | ||||
| -rw-r--r-- | src/LivingVillage.Desktop/M6Presentation.fs | 4 |
2 files changed, 18 insertions, 1 deletions
diff --git a/src/LivingVillage.Desktop/Game.fs b/src/LivingVillage.Desktop/Game.fs index 3f3a1d8..4760d4e 100644 --- a/src/LivingVillage.Desktop/Game.fs +++ b/src/LivingVillage.Desktop/Game.fs @@ -126,8 +126,21 @@ type LivingVillageGame() as this = let mutable cjkAtlas = Unchecked.defaultof<Texture2D> let mutable pixel = Unchecked.defaultof<Texture2D> let renderPlan = VillageArt.sampleRenderPlan () + // Evidence hook: pin the starting wall-clock hour (e.g. 20.75 for 黄昏), desktop-only. + let startHourOverride = + match Environment.GetEnvironmentVariable("LV_AUTOPLAY_START_HOUR") with + | null | "" -> None + | value -> + match Double.TryParse(value, Globalization.NumberStyles.Float, Globalization.CultureInfo.InvariantCulture) with + | true, hour -> Some hour + | _ -> None let createInitialWorld () = - WorldBootstrap.initialWorldForDaylight daylightAutoplay 42UL Sim.npcCount + let baseWorld = WorldBootstrap.initialWorldForDaylight daylightAutoplay 42UL Sim.npcCount + match startHourOverride with + | Some hour -> + let tick = M6Presentation.startTickForHour hour + { baseWorld with Tick = tick; Time = float tick * Sim.dtSeconds } + | None -> baseWorld let mutable world = createInitialWorld () let mutable camera = Vector2.Zero let mutable avatarFacing = VillageArt.SouthFacing diff --git a/src/LivingVillage.Desktop/M6Presentation.fs b/src/LivingVillage.Desktop/M6Presentation.fs index 11399c0..a64d494 100644 --- a/src/LivingVillage.Desktop/M6Presentation.fs +++ b/src/LivingVillage.Desktop/M6Presentation.fs @@ -100,6 +100,10 @@ module M6Presentation = /// 倍速标签(语义别名,HUD 用)。 let speedLabel (control: SimulationControl) : string = clockLabel control + /// Deterministic start tick for a wall-clock hour (evidence harness): 20.75 -> 20:45. + let startTickForHour (hour: float) : int64 = + int64 (hour * float (Sim.ticksPerDay / 24L)) + let private hourOf (tick: int64) : int = int ((tick / (Sim.ticksPerDay / 24L)) % 24L) |
