paratate/systems/bullets/spawn_patterns/randomized_spawn_pattern.gd
2026-01-03 12:34:12 -06:00

26 lines
903 B
GDScript

@tool
class_name RandomizedSpawnPattern
extends BulletSpawnPattern
## Randomizes properties of a child [BulletSpawnPattern] each [member iteration].
##
## WARNING: Experimental. Only float properties are currently
## supported and this class is subject to change in the future.
## The pattern to randomize and defer to.
@export var pattern: BulletSpawnPattern
## Minimum value for each randomized property.
@export var property_min_values: Dictionary[StringName, float] = {}
## Maximum value for each randomized property.
@export var property_max_values: Dictionary[StringName, float] = {}
func _spawn_bullets(bullet_set: BulletSet, preset: BulletPreset) -> void:
for property in property_min_values:
if property_max_values.has(property):
pattern.set(property, randf_range(
property_min_values[property],
property_max_values[property]
))
pattern.spawn_bullets(bullet_set, preset)