fuzzyworld

godot-shooter / files / items / ConstantItemGenerator.gd

ConstantItemGenerator.gd

Blame: the commit that last changed each line · file · history

212b7b25 2023-11-08 Pavel Safronov1class_name ConstantItemGenerator
44475e04 2023-11-08 Pavel Safronov2
16938031 2023-11-17 Pavel Safronov3const Utils = preload("res://utils/Utils.gd")
fc5de8ee 2023-11-09 Pavel Safronov4var generated_count: int = 0
44475e04 2023-11-08 Pavel Safronov5var item_count: int
6var creator_name: String
7var instance_object: Object
8var group_name: String
fc5de8ee 2023-11-09 Pavel Safronov9var simultaneous_count
44475e04 2023-11-08 Pavel Safronov10
fc5de8ee 2023-11-09 Pavel Safronov11func _init(creator, instance, group, sim_count = 1) -> void:
44475e04 2023-11-08 Pavel Safronov12 creator_name = creator
13 instance_object = instance
fc5de8ee 2023-11-09 Pavel Safronov14 group_name = group
15 simultaneous_count = sim_count
44475e04 2023-11-08 Pavel Safronov16
7929daa8 2023-11-30 Pavel Safronov17# runs the generator, returns is_done, a boolean
fc5de8ee 2023-11-09 Pavel Safronov18func 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
7929daa8 2023-11-30 Pavel Safronov26 var is_done = not should_add
27 return is_done