2x2 FRONT warp at 3000G/30 materials/360 min, 15G/day and 1 Mana upkeep. Every completed warp pair is linked by one path connector, so crossing is a single step; a 3-Mana fare per rider is charged once in the step's tick. Warps close while either end is unpowered, the reserve is empty or below one fare, and blocked arrivals offer no step. Saves validate the derived links. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
280 lines
16 KiB
Makefile
280 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_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
|
|
|
|
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)"
|