Files
TheTree_mock/Makefile
T
TakeshiandClaude Opus 5.5 0cfaec1626 P14-02: Add buildable Mana warp (A07)
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>
2026-10-20 10:45:28 +09:00

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)"