Save The Tree implementation and acceptance work in progress

Preserve production code, regression fixtures, audio assets and provenance, test infrastructure, and the original-completion plan and progress ledger. Final game and Windows acceptance remain pending; excluded local artifacts and native experiments are not part of this snapshot.
This commit is contained in:
Takeshi
2026-10-11 15:58:00 +09:00
parent 39f6068461
commit b84bade045
235 changed files with 495831 additions and 312 deletions
+8 -2
View File
@@ -82,7 +82,7 @@ func configure(
customer_capacity = int(_value(options, &"customer_capacity", -1))
service_attribute = StringName(_value(options, &"service_attribute", &""))
related_facility_id = StringName(_value(options, &"related_facility_id", &""))
related_facility_operating = related_facility_id.is_empty()
related_facility_operating = related_facility_id.is_empty() and not requires_operating_kitchen()
suspension_reason = StringName(_value(options, &"suspension_reason", &""))
queue_capacity = maxi(int(_value(options, &"queue_capacity", 0)), 0)
base_service_minutes = maxi(int(_value(options, &"base_service_minutes", 1)), 1)
@@ -107,6 +107,12 @@ func configure(
return self
# Original 8.2 requires each dining venue to use a BACK kitchen. Geometry and
# shared logistics are separate contracts; this single-ID rule does not infer either.
func requires_operating_kitchen() -> bool:
return definition_id in [&"cafeteria", &"restaurant", &"tavern"]
func is_valid() -> bool:
return not instance_id.is_empty() \
and not definition_id.is_empty() \
@@ -159,7 +165,7 @@ func is_within_opening_hours(absolute_minute: int) -> bool:
func set_operational_conditions(conditions: Dictionary, absolute_minute: int) -> bool:
if _has_value(conditions, &"related_facility_id"):
related_facility_id = StringName(_value(conditions, &"related_facility_id", &""))
related_facility_operating = related_facility_id.is_empty()
related_facility_operating = related_facility_id.is_empty() and not requires_operating_kitchen()
if StringName(_value(conditions, &"suspension_reason", &"")) in [&"DESTROYED", &"RAIDED"]:
suspension_reason = StringName(_value(conditions, &"suspension_reason", &""))
if _has_value(conditions, &"durability"):