Riders queued for any floor pair in a shaft now delay every pair: the elevator service publishes the rest of the shaft queue as each connector's dynamic cost, refreshed on trip changes and each cabin minute, and restore rejects saves whose wait disagrees with their trips. A two-shaft fixture with real guests shows rush diversion, shared cabins within capacity, recovery, route loss and warp-exit congestion. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
283 lines
16 KiB
Makefile
283 lines
16 KiB
Makefile
GODOT ?= godot
|
|
|
|
.PHONY: editor run test test-s0 test-s1 test-s2 test-s3 test-s4 test-s5 test-s6 test-mvp test-acceptance test-ui test-perf test-perf-full check export-windows
|
|
|
|
editor:
|
|
$(GODOT) --editor --path .
|
|
|
|
run:
|
|
$(GODOT) --path .
|
|
|
|
test:
|
|
$(MAKE) test-s0
|
|
$(MAKE) test-s1
|
|
$(MAKE) test-s2
|
|
$(MAKE) test-s3
|
|
$(MAKE) test-supply
|
|
$(MAKE) test-business
|
|
$(MAKE) test-s4
|
|
$(MAKE) test-s5
|
|
$(MAKE) test-s6
|
|
$(MAKE) test-mvp
|
|
$(MAKE) test-acceptance
|
|
$(MAKE) test-ui
|
|
$(MAKE) test-transport
|
|
$(MAKE) test-perf
|
|
|
|
test-s0:
|
|
$(GODOT) --headless --path . --script res://tests/run_tests.gd
|
|
$(GODOT) --headless --path . --script res://tests/s0/test_definition_registry.gd
|
|
$(GODOT) --headless --path . --script res://tests/s0/test_command_transaction.gd
|
|
$(GODOT) --headless --path . --script res://tests/s0/test_determinism.gd
|
|
$(GODOT) --headless --path . --script res://tests/s0/test_stable_id_generator.gd
|
|
$(GODOT) --headless --path . --script res://tests/s0/test_domain_events.gd
|
|
$(GODOT) --headless --path . --script res://tests/s0/test_runtime_integration.gd
|
|
|
|
test-s1:
|
|
$(GODOT) --headless --path . --script res://tests/s1/test_dimension_batch_save.gd
|
|
$(GODOT) --headless --path . --script res://tests/s1/test_facility_resize_preview.gd
|
|
$(GODOT) --headless --path . --script res://tests/s1/test_weighted_resize_runtime.gd
|
|
$(GODOT) --headless --path . --script res://tests/s1/test_original_facility_dimensions.gd
|
|
$(GODOT) --headless --path . --script res://tests/s1/test_world_service.gd
|
|
$(GODOT) --headless --path . --script res://tests/s1/test_path_service.gd
|
|
$(GODOT) --headless --path . --script res://tests/s1/test_path_snapshot_transit_guard.gd
|
|
$(GODOT) --headless --path . --script res://tests/s1/test_path_congestion.gd
|
|
$(GODOT) --headless --path . --script res://tests/s1/test_construction_service.gd
|
|
$(GODOT) --headless --path . --script res://tests/s1/test_excavation_service.gd
|
|
$(GODOT) --headless --path . --script res://tests/s1/test_spatial_subslot_service.gd
|
|
$(GODOT) --headless --path . --script res://tests/s1/test_route_subslot_path_adapter.gd
|
|
$(GODOT) --headless --path . --script res://tests/s1/test_facility_infrastructure_projector.gd
|
|
$(GODOT) --headless --path . --script res://tests/s1/test_runtime_infrastructure_integration.gd
|
|
$(GODOT) --headless --path . --script res://tests/s1/test_runtime_world_construction.gd
|
|
|
|
test-s2:
|
|
$(GODOT) --headless --path . --script tests/environment/test_cleaning_access.gd
|
|
$(GODOT) --headless --path . --script tests/ui/test_cleaning_gameplay.gd
|
|
$(GODOT) --headless --path . --script tests/environment/test_runtime_cleanliness.gd
|
|
$(GODOT) --headless --path . --script res://tests/environment/test_facility_cleanliness.gd
|
|
$(GODOT) --headless --path . --script res://tests/s2/test_facility_upkeep_accrual.gd
|
|
$(GODOT) --headless --path . --script res://tests/s2/test_facility_upkeep_settlement.gd
|
|
$(GODOT) --headless --path . --script res://tests/s2/test_facility_service.gd
|
|
$(GODOT) --headless --path . --script res://tests/s2/test_service_start_slots.gd
|
|
$(GODOT) --headless --path . --script res://tests/s2/test_inventory_logistics.gd
|
|
$(GODOT) --headless --path . --script res://tests/s2/test_economy_service.gd
|
|
$(GODOT) --headless --path . --script res://tests/s2/test_ledger_backed_resources.gd
|
|
$(GODOT) --headless --path . --script res://tests/s2/test_mana_network_service.gd
|
|
$(GODOT) --headless --path . --script res://tests/s2/test_mana_reserve_cycle.gd
|
|
$(GODOT) --headless --path . --script res://tests/s2/test_runtime_mana_reserve.gd
|
|
$(GODOT) --headless --path . --script res://tests/s2/test_mana_reserve_new_pid.gd -- writer
|
|
$(GODOT) --headless --path . --script res://tests/s2/test_mana_reserve_new_pid.gd -- reader
|
|
$(GODOT) --headless --path . --script res://tests/s2/test_mana_recovery_new_pid.gd -- writer
|
|
$(GODOT) --headless --path . --script res://tests/s2/test_mana_recovery_new_pid.gd -- reader
|
|
$(GODOT) --headless --path . --script res://tests/s2/test_runtime_operations_cycle.gd
|
|
|
|
test-s3:
|
|
$(GODOT) --headless --path . --script res://tests/s3/test_runtime_staff_assignment.gd
|
|
$(GODOT) --headless --path . --script res://tests/s3/test_guest_service.gd
|
|
$(GODOT) --headless --path . --script res://tests/s3/test_staff_service.gd
|
|
$(GODOT) --headless --path . --script res://tests/s3/test_staff_payroll_operations.gd
|
|
$(GODOT) --headless --path . --script res://tests/s3/test_runtime_actor_cycle.gd
|
|
$(GODOT) --headless --path . --script res://tests/s3/test_runtime_actor_hardening.gd
|
|
$(GODOT) --headless --path . --script res://tests/s3/test_runtime_path_traffic.gd
|
|
|
|
test-s4:
|
|
$(GODOT) --headless --path . --script res://tests/s4/test_relationship_event_service.gd
|
|
$(GODOT) --headless --path . --script res://tests/s4/test_placement_risk_preview_service.gd
|
|
$(GODOT) --headless --path . --script res://tests/s4/test_runtime_relationship_events.gd
|
|
|
|
test-s5:
|
|
$(GODOT) --headless --path . --script res://tests/s5/test_authority_service.gd
|
|
$(GODOT) --headless --path . --script res://tests/s5/test_defense_service.gd
|
|
$(GODOT) --headless --path . --script res://tests/s5/test_runtime_authority_cycle.gd
|
|
$(GODOT) --headless --path . --script res://tests/s5/test_runtime_defense_cycle.gd
|
|
|
|
test-s6:
|
|
$(GODOT) --headless --path . --script res://tests/s6/test_save_operations.gd
|
|
$(GODOT) --headless --path . --script res://tests/s6/test_save_preflight.gd
|
|
$(GODOT) --headless --path . --script res://tests/s6/test_save_recovery_preservation.gd
|
|
$(GODOT) --headless --path . --script res://tests/s6/test_runtime_snapshot_serialization.gd
|
|
$(GODOT) --headless --path . --script res://tests/s6/test_performance_budget.gd
|
|
$(GODOT) --headless --path . --script res://tests/s6/test_runtime_save_lifecycle.gd
|
|
|
|
test-mvp:
|
|
$(GODOT) --headless --path . --script res://tests/mvp/test_premium_room_guest_flow.gd
|
|
$(GODOT) --headless --path . --script res://tests/mvp/test_runtime_mana_depletion.gd
|
|
$(GODOT) --headless --path . --script res://tests/mvp/test_whole_tower_outage.gd -- writer
|
|
$(GODOT) --headless --path . --script res://tests/mvp/test_whole_tower_outage.gd -- reader
|
|
$(GODOT) --headless --path . --script res://tests/mvp/test_premium_room.gd
|
|
$(GODOT) --headless --path . --script res://tests/mvp/test_original_room_zones.gd
|
|
$(GODOT) --headless --path . --script res://tests/mvp/test_upkeep_loss_streak.gd
|
|
$(GODOT) --headless --path . --script res://tests/mvp/test_upkeep_legacy_midnight.gd
|
|
$(GODOT) --headless --path . --script res://tests/mvp/test_runtime_upkeep.gd
|
|
$(GODOT) --headless --path . --script res://tests/mvp/test_upkeep_construction_boundaries.gd
|
|
$(GODOT) --headless --path . --script res://tests/mvp/test_operations_coordinator.gd
|
|
$(GODOT) --headless --path . --script res://tests/mvp/test_mvp_content_catalog.gd
|
|
$(GODOT) --headless --path . --script res://tests/mvp/test_progression_service.gd
|
|
$(GODOT) --headless --path . --script res://tests/mvp/test_runtime_content_progression.gd
|
|
$(GODOT) --headless --path . --script res://tests/mvp/test_runtime_operations_integration.gd
|
|
|
|
test-acceptance:
|
|
$(GODOT) --headless --path . --script res://tests/mvp/test_runtime_operations_acceptance.gd
|
|
|
|
test-ui:
|
|
$(GODOT) --headless --path . --script res://tests/mvp/test_chapel_boundaries.gd
|
|
$(GODOT) --headless --path . --script res://tests/ui/test_chapel_gameplay.gd
|
|
$(GODOT) --headless --path . --script res://tests/mvp/test_chapel_service.gd
|
|
$(GODOT) --headless --path . --script res://tests/ui/test_dashboard_coalescing.gd
|
|
$(GODOT) --headless --path . --script res://tests/mvp/test_anri_floor_pricing.gd
|
|
$(GODOT) --headless --path . --script res://tests/mvp/test_fine_cleaning_effect.gd
|
|
$(GODOT) --headless --path . --script res://tests/mvp/test_amelia_donations.gd
|
|
$(GODOT) --headless --path . --script res://tests/ui/test_anri_recruitment.gd
|
|
$(GODOT) --headless --path . --script res://tests/ui/test_layer_skin.gd
|
|
$(GODOT) --headless --path . --script res://tests/ui/test_world_tree_rank.gd
|
|
$(GODOT) --headless --path . --script res://tests/ui/test_rank_pointer.gd
|
|
$(GODOT) --headless --path . --script res://tests/ui/test_layer_presentation.gd
|
|
$(GODOT) --headless --path . --script res://tests/ui/test_original_build_pointer.gd
|
|
$(GODOT) --headless --path . --script res://tests/ui/test_dimension_migration_ui.gd
|
|
python3 tools/run_upkeep_ui_flow.py --godot "$(GODOT)"
|
|
$(GODOT) --headless --path . --script res://tests/ui/test_upkeep_inspector.gd
|
|
$(GODOT) --headless --path . --script res://tests/ui/test_staff_rest.gd
|
|
$(GODOT) --headless --path . --script res://tests/ui/test_staff_rescue.gd
|
|
$(GODOT) --headless --path . --script res://tests/ui/test_guest_observation.gd
|
|
$(GODOT) --headless --path . --script res://tests/ui/test_guest_decision_log.gd
|
|
$(MAKE) test-pixel-ui
|
|
$(GODOT) --headless --path . --script res://tests/ui/test_main_dashboard.gd
|
|
$(GODOT) --headless --path . --script res://tests/ui/test_staff_management.gd
|
|
$(GODOT) --headless --path . --script res://tests/ui/test_supply_management.gd
|
|
$(GODOT) --headless --path . --script res://tests/ui/test_supply_auto_purchase_ui.gd
|
|
$(GODOT) --headless --path . --script res://tests/ui/test_business_management.gd
|
|
$(GODOT) --headless --path . --script res://tests/ui/test_elevator_management.gd
|
|
$(MAKE) test-opening
|
|
|
|
test-perf:
|
|
$(GODOT) --headless --path . --script res://tests/performance/test_facility_reachability.gd
|
|
$(GODOT) --headless --path . --script res://tests/performance/test_snapshot_ownership.gd
|
|
$(GODOT) --headless --path . --script res://tests/performance/test_world_snapshot_cache.gd
|
|
$(GODOT) --headless --path . --script res://tests/performance/test_lazy_digest.gd
|
|
$(GODOT) --headless --path . --script res://tests/performance/test_path_membership.gd
|
|
$(GODOT) --headless --path . --script res://tests/performance/test_system_optimization.gd
|
|
$(GODOT) --headless --path . --script res://tests/performance/test_digest_performance.gd
|
|
$(GODOT) --headless --path . --script res://tests/performance/test_perf_mvp_001.gd
|
|
|
|
test-perf-full:
|
|
PERF_MVP_FULL=1 $(GODOT) --headless --path . --script res://tests/performance/test_perf_mvp_001.gd
|
|
|
|
check:
|
|
$(GODOT) --headless --editor --path . --quit
|
|
$(GODOT) --headless --path . --quit-after 2
|
|
|
|
export-windows:
|
|
mkdir -p build/windows
|
|
$(GODOT) --headless --path . --export-release "Windows Desktop"
|
|
$(MAKE) test-exported-opening
|
|
|
|
# Pixel cutaway: interactive disposable inn, capture and input regression.
|
|
.PHONY: preview-pixel capture-pixel test-pixel-ui
|
|
preview-pixel:
|
|
THE_TREE_PIXEL_PLAY=1 $(GODOT) --path . --script res://tests/ui/capture_pixel_tower.gd
|
|
|
|
capture-pixel:
|
|
$(GODOT) --path . --script res://tests/ui/capture_pixel_tower.gd
|
|
|
|
test-pixel-ui:
|
|
$(GODOT) --headless --path . --script res://tests/ui/test_room_presentation.gd
|
|
$(GODOT) --headless --path . --script res://tests/ui/test_pixel_tower.gd
|
|
|
|
.PHONY: test-opening capture-opening
|
|
test-opening:
|
|
$(GODOT) --headless --path . --script res://tests/ui/test_first_operating_day.gd
|
|
|
|
capture-opening:
|
|
THE_TREE_OPENING_CAPTURE=1 $(GODOT) --path . --script res://tests/ui/test_first_operating_day.gd
|
|
|
|
# Paid purchases, kitchen batches, and porter deliveries; isolated test saves.
|
|
.PHONY: test-supply capture-supply preview-supply
|
|
test-supply:
|
|
$(GODOT) --headless --path . --script res://tests/s2/test_kitchen_production.gd
|
|
$(GODOT) --headless --path . --script res://tests/supply/test_supply_save_migration.gd
|
|
$(GODOT) --headless --path . --script res://tests/supply/test_supply_logistics_bridge.gd
|
|
$(GODOT) --headless --path . --script res://tests/supply/test_supply_management_service.gd
|
|
$(GODOT) --headless --path . --script res://tests/supply/test_supply_auto_purchase.gd
|
|
$(GODOT) --headless --path . --script res://tests/supply/test_normal_auto_purchase_chain.gd
|
|
$(GODOT) --headless --path . --script res://tests/supply/test_supply_auto_purchase_boundaries.gd
|
|
$(GODOT) --headless --path . --script res://tests/supply/test_supply_auto_purchase_destruction.gd
|
|
$(GODOT) --headless --path . --script res://tests/supply/test_normal_supply_chain.gd
|
|
|
|
capture-supply:
|
|
THE_TREE_SUPPLY_CAPTURE=1 THE_TREE_SUPPLY_CAPTURE_ONLY=1 $(GODOT) --path . --script res://tests/supply/test_normal_supply_chain.gd
|
|
|
|
preview-supply:
|
|
THE_TREE_SUPPLY_PREVIEW=1 $(GODOT) --path . --script res://tests/supply/test_normal_supply_chain.gd
|
|
|
|
.PHONY: test-business
|
|
test-business:
|
|
$(GODOT) --headless --path . --script res://tests/s2/test_facility_pricing.gd
|
|
$(GODOT) --headless --path . --script res://tests/business/test_business_operations.gd
|
|
$(GODOT) --headless --path . --script res://tests/business/test_business_closure.gd
|
|
|
|
.PHONY: preview-business capture-business
|
|
preview-business:
|
|
THE_TREE_BUSINESS_PREVIEW=1 THE_TREE_SUPPLY_PREVIEW=1 $(GODOT) --path . --script res://tests/supply/test_normal_supply_chain.gd
|
|
|
|
capture-business:
|
|
THE_TREE_BUSINESS_UI_CAPTURE=1 $(GODOT) --path . --script res://tests/ui/test_business_management.gd
|
|
|
|
.PHONY: test-transport capture-transport preview-transport
|
|
test-transport:
|
|
$(GODOT) --headless --path . --script res://tests/staff/test_dormitory_dimension_migration.gd
|
|
$(GODOT) --headless --path . --script res://tests/staff/test_staff_dormitory.gd
|
|
$(GODOT) --headless --path . --script res://tests/staff/test_dormitory_shift_cycle.gd
|
|
$(GODOT) --headless --path . --script res://tests/staff/test_shift_rush.gd
|
|
$(GODOT) --headless --path . --script res://tests/staff/test_staff_rest.gd
|
|
$(GODOT) --headless --path . --script res://tests/staff/test_rescue_elevator.gd
|
|
$(GODOT) --headless --path . --script res://tests/staff/test_staff_rescue.gd
|
|
$(GODOT) --headless --path . --script res://tests/staff/test_task_work_clock.gd
|
|
$(MAKE) test-stairs
|
|
$(GODOT) --headless --path . --script res://tests/world/test_elevator_topology.gd
|
|
$(GODOT) --headless --path . --script res://tests/transport/test_elevator_service.gd
|
|
$(GODOT) --headless --path . --script res://tests/staff/test_staff_commute.gd
|
|
$(GODOT) --headless --path . --script res://tests/transport/test_transport_save.gd
|
|
$(GODOT) --headless --path . --script res://tests/transport/test_transport_density_migration.gd
|
|
$(GODOT) --headless --path . --script res://tests/transport/test_transport_boundaries.gd
|
|
$(GODOT) --headless --path . --script res://tests/transport/test_runtime_transport.gd
|
|
$(GODOT) --headless --path . --script res://tests/transport/test_runtime_warp.gd -- writer
|
|
$(GODOT) --headless --path . --script res://tests/transport/test_runtime_warp.gd -- reader
|
|
$(GODOT) --headless --path . --script res://tests/transport/test_route_wait_choice.gd
|
|
|
|
capture-transport:
|
|
THE_TREE_TRANSPORT_CAPTURE=1 $(GODOT) --path . --script res://tests/transport/test_runtime_transport.gd
|
|
|
|
preview-transport:
|
|
THE_TREE_TRANSPORT_PREVIEW=1 $(GODOT) --path . --script res://tests/transport/test_runtime_transport.gd
|
|
|
|
.PHONY: test-stairs test-transport-comparison
|
|
test-stairs:
|
|
$(GODOT) --headless --path . --script res://tests/world/test_path_vertical_policy.gd
|
|
$(GODOT) --headless --path . --script res://tests/world/test_path_transit_density.gd
|
|
$(GODOT) --headless --path . --script res://tests/world/test_stair_infrastructure.gd
|
|
$(GODOT) --headless --path . --script res://tests/world/test_legacy_stairs.gd
|
|
$(GODOT) --headless --path . --script res://tests/transport/test_runtime_stairs.gd
|
|
$(GODOT) --headless --path . --script res://tests/ui/test_stair_transport_details.gd
|
|
|
|
test-transport-comparison:
|
|
$(GODOT) --headless --path . --script res://tests/transport/test_transport_comparison.gd
|
|
$(GODOT) --headless --path . --script res://tests/transport/test_runtime_transport_comparison.gd
|
|
|
|
# Check the actual shipped data outside this checkout, including first build.
|
|
WINDOWS_PCK ?= build/windows/TheTree.pck
|
|
MACOS_APP ?= build/macos/TheTree.app
|
|
.PHONY: export-macos
|
|
export-macos:
|
|
mkdir -p build/macos
|
|
$(GODOT) --headless --path . --export-release "macOS" "$(MACOS_APP)"
|
|
python3 tools/verify_exported_opening.py "$(MACOS_APP)/Contents/Resources/The Tree.pck" --godot "$(GODOT)"
|
|
|
|
.PHONY: test-exported-opening
|
|
test-exported-opening:
|
|
python3 tools/verify_exported_opening.py "$(WINDOWS_PCK)" --godot "$(GODOT)"
|
|
|
|
# Exhaustive discovery includes comparison suites outside the ordinary smoke run.
|
|
.PHONY: test-all
|
|
test-all:
|
|
python3 tools/run_all_tests.py --godot "$(GODOT)"
|