From 717328618991d4896f323c8e77957def30bd96ea Mon Sep 17 00:00:00 2001 From: jepsu Date: Sun, 28 Jun 2026 20:13:22 +0300 Subject: [PATCH] Fixed bug #2 by adding check if printer is printing already before refreshing job list --- Scenes/Global/game_data.gd | 2 +- Scenes/Job/job_card.gd | 2 +- Scenes/Printer/printer.gd | 25 +++++++++++++++++-------- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/Scenes/Global/game_data.gd b/Scenes/Global/game_data.gd index a49e0d6..bdb0bae 100644 --- a/Scenes/Global/game_data.gd +++ b/Scenes/Global/game_data.gd @@ -5,7 +5,7 @@ signal job_generated(job: Node) signal job_interact signal printer_bought(printer: Node) @warning_ignore("unused_signal") -signal print_started +signal refresh_printer_dropdown # - Variables - Code managed var job_spawn_timer: Timer diff --git a/Scenes/Job/job_card.gd b/Scenes/Job/job_card.gd index a0e8faa..2ef5171 100644 --- a/Scenes/Job/job_card.gd +++ b/Scenes/Job/job_card.gd @@ -39,7 +39,7 @@ func calculate_time() -> String: func _on_accept_job_pressed() -> void: job_accepted.emit(self) - GameData.print_started.emit() + GameData.refresh_printer_dropdown.emit() func _on_skip_job_pressed() -> void: queue_free() diff --git a/Scenes/Printer/printer.gd b/Scenes/Printer/printer.gd index b762cb6..4807bcf 100644 --- a/Scenes/Printer/printer.gd +++ b/Scenes/Printer/printer.gd @@ -15,7 +15,7 @@ var is_printing: bool = false var time_left: float func _ready() -> void: - GameData.print_started.connect(_on_print_started) + GameData.refresh_printer_dropdown.connect(_on_refresh_printer_dropdown) func initialize_printer(data: PrinterData) -> void: printer_data = data @@ -34,8 +34,10 @@ func _process(delta) -> void: progress_bar.visible = true time_left_label.visible = true set_status() + var total_time = selected_job.job_time / printer_data.printer_speed var progress = (total_time - time_left) / total_time + time_left -= delta progress_bar.value = progress time_left_label.text = 'Time left: %s' % calculate_time_left(time_left) @@ -53,7 +55,9 @@ func reset_status() -> void: time_left_label.visible = false progress_bar.visible = false progress_bar.value = 0 + time_left = 0 select_job.disabled = false + start_button.disabled = false func set_status() -> void: if is_printing: @@ -72,8 +76,10 @@ func calculate_time_left(time) -> String: else: return '%.2f s' % time -func _on_print_started() -> void: - print("Refresh dropdown") +func _on_refresh_printer_dropdown() -> void: + if is_printing: + return + _on_select_job_pressed() func _on_sell_button_pressed() -> void: @@ -101,14 +107,17 @@ func _on_select_job_item_selected(index: int) -> void: selected_job_index = index func _on_start_button_pressed() -> void: - if not select_job.get_item_text(0) == "No jobs accepted": - time_left = selected_job.job_time / printer_data.printer_speed - progress_bar.value = 0 - is_printing = true + if select_job.get_item_text(0) == "No jobs accepted": + return + + time_left = selected_job.job_time / printer_data.printer_speed + progress_bar.value = 0 + start_button.disabled = true + is_printing = true if PlayerData.jobs.size() == 1: PlayerData.jobs.clear() else: PlayerData.jobs.remove_at(selected_job_index) - GameData.print_started.emit() + GameData.refresh_printer_dropdown.emit()