30 lines
665 B
GDScript
30 lines
665 B
GDScript
extends Node
|
|
class_name Producer
|
|
|
|
@export var output_period: float = 0.1
|
|
@export var max_outputs: int = 1
|
|
|
|
var consumers: Array[Consumer]
|
|
var next_consumer_idx: int = 0
|
|
#var output_timer: float = 0.0
|
|
#var output_item: Item
|
|
|
|
#func _process(delta: float) -> void:
|
|
#output_timer += delta
|
|
#if output_timer >= output_period:
|
|
#output_timer -= output_period
|
|
#output()
|
|
|
|
func send_item(item: Item) -> bool:
|
|
if consumers.is_empty():
|
|
return false
|
|
next_consumer_idx += 1
|
|
if next_consumer_idx >= consumers.size():
|
|
next_consumer_idx = 0
|
|
|
|
var consumer: Consumer = consumers[next_consumer_idx]
|
|
var accepted: bool = consumer.offer_item(item)
|
|
return accepted
|
|
|
|
|