Fixed bug #2 by adding check if printer is printing already before refreshing job list

This commit is contained in:
jepsu 2026-06-28 20:13:22 +03:00
parent 72a25238d3
commit 7173286189
3 changed files with 19 additions and 10 deletions

View file

@ -5,7 +5,7 @@ signal job_generated(job: Node)
signal job_interact signal job_interact
signal printer_bought(printer: Node) signal printer_bought(printer: Node)
@warning_ignore("unused_signal") @warning_ignore("unused_signal")
signal print_started signal refresh_printer_dropdown
# - Variables - Code managed # - Variables - Code managed
var job_spawn_timer: Timer var job_spawn_timer: Timer

View file

@ -39,7 +39,7 @@ func calculate_time() -> String:
func _on_accept_job_pressed() -> void: func _on_accept_job_pressed() -> void:
job_accepted.emit(self) job_accepted.emit(self)
GameData.print_started.emit() GameData.refresh_printer_dropdown.emit()
func _on_skip_job_pressed() -> void: func _on_skip_job_pressed() -> void:
queue_free() queue_free()

View file

@ -15,7 +15,7 @@ var is_printing: bool = false
var time_left: float var time_left: float
func _ready() -> void: 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: func initialize_printer(data: PrinterData) -> void:
printer_data = data printer_data = data
@ -34,8 +34,10 @@ func _process(delta) -> void:
progress_bar.visible = true progress_bar.visible = true
time_left_label.visible = true time_left_label.visible = true
set_status() set_status()
var total_time = selected_job.job_time / printer_data.printer_speed var total_time = selected_job.job_time / printer_data.printer_speed
var progress = (total_time - time_left) / total_time var progress = (total_time - time_left) / total_time
time_left -= delta time_left -= delta
progress_bar.value = progress progress_bar.value = progress
time_left_label.text = 'Time left: %s' % calculate_time_left(time_left) 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 time_left_label.visible = false
progress_bar.visible = false progress_bar.visible = false
progress_bar.value = 0 progress_bar.value = 0
time_left = 0
select_job.disabled = false select_job.disabled = false
start_button.disabled = false
func set_status() -> void: func set_status() -> void:
if is_printing: if is_printing:
@ -72,8 +76,10 @@ func calculate_time_left(time) -> String:
else: else:
return '%.2f s' % time return '%.2f s' % time
func _on_print_started() -> void: func _on_refresh_printer_dropdown() -> void:
print("Refresh dropdown") if is_printing:
return
_on_select_job_pressed() _on_select_job_pressed()
func _on_sell_button_pressed() -> void: func _on_sell_button_pressed() -> void:
@ -101,14 +107,17 @@ func _on_select_job_item_selected(index: int) -> void:
selected_job_index = index selected_job_index = index
func _on_start_button_pressed() -> void: func _on_start_button_pressed() -> void:
if not select_job.get_item_text(0) == "No jobs accepted": if select_job.get_item_text(0) == "No jobs accepted":
time_left = selected_job.job_time / printer_data.printer_speed return
progress_bar.value = 0
is_printing = true 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: if PlayerData.jobs.size() == 1:
PlayerData.jobs.clear() PlayerData.jobs.clear()
else: else:
PlayerData.jobs.remove_at(selected_job_index) PlayerData.jobs.remove_at(selected_job_index)
GameData.print_started.emit() GameData.refresh_printer_dropdown.emit()