fuzzyworld

godot-shooter / asteroids / files / items / ConstantItemGenerator.gd

Branch asteroids · default branch · all branches

ConstantItemGenerator.gd

796 B · history · blame

1class_name ConstantItemGenerator
2
3const Utils = preload("res://utils/Utils.gd")
4var generated_count: int = 0
5var item_count: int
6var creator_name: String
7var instance_object: Object
8var group_name: String
9var simultaneous_count
10
11func _init(creator, instance, group, sim_count = 1) -> void:
12 creator_name = creator
13 instance_object = instance
14 group_name = group
15 simultaneous_count = sim_count
16
17# runs the generator, returns is_done, a boolean
18func run(node: Node) -> bool:
19 var items = node.get_tree().get_nodes_in_group(group_name)
20 var should_add = items.size() < simultaneous_count
21 if should_add:
22 var item: Node = funcref(instance_object, creator_name).call_func()
23 item.add_to_group(group_name)
24 node.add_child(item)
25 generated_count += 1
26 var is_done = not should_add
27 return is_done