40 lines
792 B
GDScript
40 lines
792 B
GDScript
extends Resource
|
|
class_name WaveData
|
|
|
|
enum SpawnType {
|
|
FIXED,
|
|
RANDOM
|
|
}
|
|
|
|
@export var from: int
|
|
@export var to: int
|
|
@export var wave_time := 20.0
|
|
@export var units: Array[WaveUnitData]
|
|
|
|
@export var spawn_type := SpawnType.RANDOM
|
|
@export var fixed_spawn_time := 1.0
|
|
@export var min_spawn_time := 1.0
|
|
@export var max_spawn_time := 1.0
|
|
|
|
|
|
func get_randon_unit_scene() -> PackedScene:
|
|
if units.is_empty():
|
|
printerr("No Units.")
|
|
return null
|
|
|
|
var enemies: Array[PackedScene]
|
|
var weights: Array[float]
|
|
|
|
for unit in units:
|
|
enemies.append(unit.unit_scene)
|
|
weights.append(unit.weight)
|
|
|
|
|
|
var rng := RandomNumberGenerator.new()
|
|
var random_unit = enemies[rng.rand_weighted(weights)]
|
|
return random_unit
|
|
|
|
func is_vaild_index(index: int) -> bool:
|
|
return index >= from and index <= to
|
|
|