extends SceneTree const Demo := preload("res://scripts/ui/pixel_tower_demo.gd") var checks := 0 var failures := 0 var runtime: Variant func expect(ok: bool, label: String) -> void: checks += 1 if not ok: failures += 1; push_error(label) func _initialize() -> void: call_deferred("run") func compare(label: String) -> void: for facility: FacilityInstance in runtime.facility_service.get_instances(): expect(runtime.is_facility_reachable(facility.instance_id) == bool(runtime.get_facility_access_report(facility.instance_id)[&"reachable"]), label + ": " + String(facility.instance_id)) func run() -> void: runtime = root.get_node("SimulationRuntime") var clock: Variant = root.get_node("GameClock") var state: Variant = root.get_node("GameState") # Disposable Demo fixture funds exact Doran signing_cost 300; DEFAULT5000 and paid hire stay unchanged. clock.reset(1,6,0); state.reset();state.resources[&"gold"] += 300; runtime.initialize(clock,state,424242); clock.set_paused(true) runtime.configure_save_policy({&"enabled":false,&"daily_checkpoint_enabled":false}) var demo := Demo.new() expect(await demo.prepare(runtime,clock,self), "prepare actual multi-floor topology") if failures: quit(failures); return compare("connected topology") expect(not runtime.is_facility_reachable(&"missing"), "missing facility is unreachable") var checkpoint: Dictionary = runtime.create_snapshot() var facility: FacilityInstance = runtime.facility_service.get_instances()[0] facility.access_available = false expect(not runtime.is_facility_reachable(facility.instance_id), "operating access override is honored") expect(runtime.restore_snapshot(checkpoint), "restore access override") # Block every graph cell, including all candidate public entrances. Do not # leave a second entrance that can legitimately reach the same destination. for cell: Vector3i in runtime.world_service.get_walkable_cells(): if runtime.path_service.has_cell(cell): runtime.path_service.set_cell_temporary_block(cell,true) compare("blocked topology") for item: FacilityInstance in runtime.facility_service.get_instances(): expect(not runtime.is_facility_reachable(item.instance_id), "blocked entrance cannot report reachable") expect(runtime.restore_snapshot(checkpoint), "restore graph after temporary blocks") compare("restored topology") var measurements := {} for method: StringName in [&"get_facility_access_report", &"is_facility_reachable"]: measurements[String(method)] = [] for attempt in 100: var methods: Array[StringName] = [&"get_facility_access_report", &"is_facility_reachable"] if attempt % 2: methods.reverse() for method: StringName in methods: var start := Time.get_ticks_usec() for item: FacilityInstance in runtime.facility_service.get_instances(): runtime.call(method,item.instance_id) measurements[String(method)].append(Time.get_ticks_usec()-start) var output := OS.get_environment("THE_TREE_REACHABILITY_PROFILE") if not output.is_empty(): var file := FileAccess.open(output,FileAccess.WRITE) file.store_string(JSON.stringify(measurements," "));file.close() print("Facility reachability: %d checks, %d failures" % [checks,failures]);quit(failures)