summaryrefslogtreecommitdiff
path: root/src/LivingVillage.Desktop/M6Presentation.fs
diff options
context:
space:
mode:
authorSomhairle H. Marisol <[email protected]>2026-09-22 01:21:46 +0800
committerSomhairle H. Marisol <[email protected]>2026-09-22 01:21:46 +0800
commita67e9262caca67f1078f77ed2f274a46e284c6c8 (patch)
tree5c68b39069fb3c7a8fc73b1f9f27b0bda0c16df4 /src/LivingVillage.Desktop/M6Presentation.fs
parent8fad58bd62155da653251ab7457cd54ebba0b279 (diff)
downloadliving-village-a67e9262caca67f1078f77ed2f274a46e284c6c8.tar.gz
fix(desktop): P17-FIX 起时钩子在 sample/autoplay 路径生效(resolveStartTick 纯函数 + 回归 + 重拍证据)
Diffstat (limited to 'src/LivingVillage.Desktop/M6Presentation.fs')
-rw-r--r--src/LivingVillage.Desktop/M6Presentation.fs7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/LivingVillage.Desktop/M6Presentation.fs b/src/LivingVillage.Desktop/M6Presentation.fs
index a64d494..752034a 100644
--- a/src/LivingVillage.Desktop/M6Presentation.fs
+++ b/src/LivingVillage.Desktop/M6Presentation.fs
@@ -104,6 +104,13 @@ module M6Presentation =
let startTickForHour (hour: float) : int64 =
int64 (hour * float (Sim.ticksPerDay / 24L))
+ /// Start-tick decision shared by bootstrap and new-game: an explicit evidence hour wins,
+ /// else daylight starts at 6:00, else midnight. Pure function, no side effects.
+ let resolveStartTick (startHour: float option) (startAtDaylight: bool) : int64 =
+ match startHour with
+ | Some hour -> startTickForHour hour
+ | None -> if startAtDaylight then 6L * Sim.ticksPerDay / 24L else 0L
+
let private hourOf (tick: int64) : int =
int ((tick / (Sim.ticksPerDay / 24L)) % 24L)