Files
Corupture/scripts/spawn_pattern.gd
Eric f87b1cfa9a Changed resource spawning
added interact functionality
temp added zoom with scroll wheel
2024-02-27 10:22:28 -06:00

35 lines
1.1 KiB
GDScript

extends Resource
class_name SpawnPattern
@export var min_distance: int
@export var max_distance: int
@export var min_spread: int
@export var quantity: int
@export var cluster_size: int
func get_spawn_locations() -> Array[Vector2i]:
var spawns: Array[Vector2i] = []
var clusters: Array[Vector2] = []
for cluster_i in range(quantity):
var cluster
var is_valid_cluster := false
while not is_valid_cluster:
is_valid_cluster = true
var dist = randf_range(min_distance, max_distance)
var angle = randf_range(0, 2*PI)
cluster = Vector2.RIGHT.rotated(angle)
cluster *= dist
for old_cluster: Vector2 in clusters:
is_valid_cluster = is_valid_cluster and old_cluster.distance_to(cluster) > min_spread
clusters.append(cluster)
var local_spawns = [Vector2i(cluster)]
for point in range(cluster_size - 1):
var next = local_spawns.pick_random()
while local_spawns.has(next):
var next_change = [Vector2i.LEFT, Vector2i.RIGHT, Vector2i.UP, Vector2i.DOWN].pick_random()
next = next + next_change
local_spawns.append(next)
spawns.append_array(local_spawns)
return spawns