32 lines
982 B
GDScript
32 lines
982 B
GDScript
@tool
|
|
class_name SpawnPatternStacker
|
|
extends BulletSpawnPattern
|
|
## Spawns a pattern in a "stack". The pattern will be spawned multiple
|
|
## times at once with a varying [code]bullet_speed[/code].
|
|
|
|
|
|
## The subpattern to stack.
|
|
@export var pattern: BulletSpawnPattern
|
|
## The number of times to "stack" up the pattern.
|
|
@export_range(1, 1, 1, "or_greater") var stack_count: int = 1
|
|
## The minimum speed of the stacked patterns.
|
|
@export var min_speed: float:
|
|
set(value):
|
|
if min_speed != value:
|
|
min_speed = value
|
|
max_speed = maxf(min_speed, max_speed)
|
|
## The maximum speed of the stacked patterns.
|
|
@export var max_speed: float:
|
|
set(value):
|
|
if max_speed != value:
|
|
max_speed = value
|
|
min_speed = minf(min_speed, max_speed)
|
|
|
|
|
|
func _spawn_bullets(bullet_set: BulletSet, preset: BulletPreset) -> void:
|
|
for i in stack_count:
|
|
pattern.set(
|
|
&"bullet_speed",
|
|
remap(float(i), 0.0, float(stack_count - 1), min_speed, max_speed)
|
|
)
|
|
pattern.spawn_bullets(bullet_set, preset)
|