extends SceneTree const GENERATOR := preload("res://scripts/planets/surface_generator.gd") const LANDMARKS := preload("res://scripts/planets/surface_landmarks.gd") const DETAILS := preload("res://scripts/planets/surface_details.gd") func _initialize() -> void: var counts := {} for biome in 6: var base := GENERATOR.generate(200+biome, {"temperature":75 if biome == 4 else (-35 if biome == 5 else 20)}) for tree in base.trees: assert(float(tree.size) <= 92.0) for sample_index in 40: var data: Dictionary = base.duplicate(true) data.seed = 20000+sample_index*6+biome LANDMARKS.generate(data) var snapshot := var_to_str(data.landmarks) LANDMARKS.generate(data) assert(snapshot == var_to_str(data.landmarks)) var hamlets := 0 var craters := 0 for landmark in data.landmarks: counts[landmark.kind] = int(counts.get(landmark.kind,0))+1 hamlets += int(landmark.kind == "abandoned_hamlet") craters += int(landmark.kind == "meteor_crater") var radius := float(landmark.size)*0.55 assert(landmark.position.length() > radius+210) for offset in [Vector2.ZERO, Vector2.LEFT, Vector2.RIGHT, Vector2.UP, Vector2.DOWN]: assert(DETAILS._height(data, landmark.position+offset*radius) > 0.315) for poi in data.pois: assert(landmark.position.distance_to(poi.position) > 135+radius) for event in data.events: assert(landmark.position.distance_to(event.position) > 115+radius) for other in data.landmarks: if other != landmark: assert(landmark.position.distance_to(other.position) > radius+float(other.size)*0.55) for tree in data.trees: assert(tree.position.distance_to(landmark.position) > float(landmark.size)*0.48+float(tree.size)*0.4) assert(hamlets <= 1 and craters <= 1) assert(counts.size() == 5) assert(int(counts.abandoned_hamlet) > 0 and int(counts.abandoned_hamlet) < 35) print("LANDMARK PASS: 240 maps, dry footprints, separated landmarks, clear interactions, reproducibility, smaller trees. Counts: ",counts) quit()