extends BuildingPart class_name Producer @export var produced_item: Item @export var output_period: float = 0.1 @export var max_outputs: int = 1 @export var consumers: Array[Consumer] var last_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 can_produce() -> bool: return can_send_item(produced_item) func produce() -> bool: return send_item(produced_item) func can_send_item(item: Item) -> bool: if !enabled: return false for consumer in consumers: if consumer.can_accept_item(item): return true return false func send_item(item: Item) -> bool: if !enabled: return false if consumers.is_empty(): return false var start_idx: int = last_consumer_idx var first_try: bool = true var idx: int = start_idx while idx != start_idx or first_try: idx += 1 if idx >= consumers.size(): idx = 0 first_try = false var consumer: Consumer = consumers[idx] var accepted: bool = consumer.offer_item(item) if accepted: last_consumer_idx = idx return true return false