diff --git a/Scenes/Global/player_data.gd b/Scenes/Global/player_data.gd index 5e76231..7e84346 100644 --- a/Scenes/Global/player_data.gd +++ b/Scenes/Global/player_data.gd @@ -5,7 +5,7 @@ var xp: float = 0: xp = value xp_changed.emit(xp) -var money: float = 200: +var money: float = 9999: set(value): money = value money_changed.emit(money) diff --git a/Scenes/Printer/printer.gd b/Scenes/Printer/printer.gd index 1050195..0d8e0e6 100644 --- a/Scenes/Printer/printer.gd +++ b/Scenes/Printer/printer.gd @@ -4,15 +4,22 @@ extends PanelContainer @onready var printer_model_label: Label = $MarginContainer/MainArea/PrinterModelLabel @onready var progress_bar: ProgressBar = $MarginContainer/MainArea/PrintInfo/ProgressBar @onready var select_job: OptionButton = $MarginContainer/MainArea/SelectJob +@onready var select_filament: OptionButton = $MarginContainer/MainArea/PrintInfo/InfoRow1/SelectFilament @onready var status_label: RichTextLabel = $MarginContainer/MainArea/TopInfo/StatusLabel @onready var time_left_label: Label = $MarginContainer/MainArea/PrintInfo/InfoRow2/TimeLeftLabel @onready var start_button: Button = $MarginContainer/MainArea/Buttons/StartButton @onready var reward_label: RichTextLabel = $MarginContainer/MainArea/PrintInfo/InfoRow2/RewardLabel @onready var quality_label: RichTextLabel = $MarginContainer/MainArea/PrintInfo/InfoRow1/QualityLabel + var printer_data: PrinterData + var selected_job: JobData var selected_job_index: int +var selected_filament: FilamentData +var selected_filament_index: int + + var is_printing: bool = false var time_left: float @@ -36,8 +43,10 @@ func initialize_printer(data: PrinterData) -> void: status_label.text = 'Status: [color=%s]%s[/color]' % [GameData.hex_white, "Free"] progress_bar.visible = false progress_bar.value = 0 + GameData.display_msg('%s printer bought!' % printer_data.printer_manufacturer, GameData.hex_green) _on_select_job_pressed() + _on_select_filament_pressed() func _process(delta) -> void: if is_printing: @@ -58,6 +67,7 @@ func _process(delta) -> void: var total_time = selected_job.job_time / printer_data.printer_speed var progress = (total_time - time_left) / total_time + selected_filament.amount -= delta time_left -= delta progress_bar.value = progress time_left_label.text = 'Time left: %s' % calculate_time_left(time_left) @@ -158,9 +168,31 @@ func _on_sell_button_pressed() -> void: PlayerData.owned_printers -= 1 queue_free() +func _on_select_filament_pressed() -> void: + select_filament.clear() + print('Click') + print(GameData.filaments_array.is_empty()) + if GameData.filaments_array.is_empty(): + select_filament.add_item("Out of filament") + #start_button.disabled = true + else: + #start_button.disabled = false + for filament in GameData.filaments_array: + var item_text = '%s | %.2f g' % [filament.material, filament.amount] + select_filament.add_item(item_text) + + var current_index = select_filament.item_count - 1 + select_filament.set_item_metadata(current_index, filament) + selected_filament = select_filament.get_item_metadata(0) + selected_job_index = 0 + +func _on_select_filament_item_selected(index: int) -> void: + selected_filament = select_filament.get_item_metadata(index) + selected_filament_index = index + func _on_select_job_pressed() -> void: select_job.clear() - if PlayerData.jobs.is_empty(): + if PlayerData.jobs.is_empty() or GameData.filaments_array.is_empty(): select_job.add_item("No jobs accepted") start_button.disabled = true else: @@ -182,16 +214,25 @@ func _on_select_job_item_selected(index: int) -> void: func _on_start_button_pressed() -> void: if select_job.get_item_text(0) == "No jobs accepted": return + if select_filament.get_item_text(0) == "Out of filament": + return time_left = selected_job.job_time / printer_data.printer_speed progress_bar.value = 0 start_button.disabled = true is_printing = true + # Remove job from job selection dropdown if PlayerData.jobs.size() == 1: - PlayerData.jobs.clear() + PlayerData.jobs.clear() else: PlayerData.jobs.remove_at(selected_job_index) + # Remove filament from filament selection dropdown + if GameData.filaments_array.size() == 1: + GameData.filaments_array.clear() + else: + GameData.filaments_array.remove_at(selected_filament_index) + failure_points = calculate_fail_thresholds() GameData.refresh_printer_dropdown.emit() diff --git a/Scenes/Printer/printer.tscn b/Scenes/Printer/printer.tscn index 9e1973f..5f7eeae 100644 --- a/Scenes/Printer/printer.tscn +++ b/Scenes/Printer/printer.tscn @@ -51,9 +51,10 @@ layout_mode = 2 [node name="InfoRow1" type="HBoxContainer" parent="MarginContainer/MainArea/PrintInfo" unique_id=1561257387] layout_mode = 2 -[node name="FilamentLabel" type="Label" parent="MarginContainer/MainArea/PrintInfo/InfoRow1" unique_id=181392172] +[node name="SelectFilament" type="OptionButton" parent="MarginContainer/MainArea/PrintInfo/InfoRow1" unique_id=1562930238] layout_mode = 2 -text = "Material: ###" +item_count = 1 +popup/item_0/id = 0 [node name="QualityLabel" type="RichTextLabel" parent="MarginContainer/MainArea/PrintInfo/InfoRow1" unique_id=937206053] layout_mode = 2 @@ -107,6 +108,8 @@ layout_mode = 2 [node name="Timer" type="Timer" parent="." unique_id=425740035] +[connection signal="item_selected" from="MarginContainer/MainArea/PrintInfo/InfoRow1/SelectFilament" to="." method="_on_select_filament_item_selected"] +[connection signal="pressed" from="MarginContainer/MainArea/PrintInfo/InfoRow1/SelectFilament" to="." method="_on_select_filament_pressed"] [connection signal="pressed" from="MarginContainer/MainArea/Buttons/StartButton" to="." method="_on_start_button_pressed"] [connection signal="pressed" from="MarginContainer/MainArea/Buttons/SellButton" to="." method="_on_sell_button_pressed"] [connection signal="item_selected" from="MarginContainer/MainArea/SelectJob" to="." method="_on_select_job_item_selected"]