From e4b1a2cee272904a3cc66ac4bda1aa76427d48e9 Mon Sep 17 00:00:00 2001 From: jepsu Date: Wed, 24 Jun 2026 21:10:06 +0300 Subject: [PATCH] Jobs now go to PlayerData array and are listed in printer dropdown --- player_data.gd | 4 ++++ printer.gd | 40 ++++++++++++++++++++++++++++++++++++++-- printer.tscn | 42 +++++++++++++++++++++++++++++------------- ui.gd | 6 ++++-- 4 files changed, 75 insertions(+), 17 deletions(-) diff --git a/player_data.gd b/player_data.gd index a78a1f4..272ba84 100644 --- a/player_data.gd +++ b/player_data.gd @@ -15,6 +15,10 @@ extends Node level = value level_changed.emit(level) +@export var sell_multiplier: float = 0.5 + +var jobs: Array[JobData] + signal xp_changed(new_xp) signal money_changed(new_money) signal level_changed(new_level) diff --git a/printer.gd b/printer.gd index e29a41a..dd800aa 100644 --- a/printer.gd +++ b/printer.gd @@ -1,9 +1,45 @@ extends PanelContainer +@onready var printer_name_label: Label = $MarginContainer/MainArea/TopInfo/PrinterLabel +@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 + var printer_data: PrinterData -@onready var model: Label = $MarginContainer/VBoxContainer/HBoxContainer/Model +var selected_job: JobData func initialize_printer(data: PrinterData) -> void: printer_data = data #print("Creating bought printer: " + printer_data.printer_manufacturer) - model.text = printer_data.printer_manufacturer + printer_data.printer_type + printer_name_label.text = printer_data.printer_manufacturer + printer_model_label.text = printer_data.printer_type + progress_bar.value = 0 + _on_select_job_pressed() + +func _on_sell_button_pressed() -> void: + PlayerData.give_money.emit(printer_data.printer_price * PlayerData.sell_multiplier) + queue_free() + +func _on_select_job_pressed() -> void: + select_job.clear() + + if PlayerData.jobs.is_empty(): + select_job.add_item("No jobs accepted") + else: + for job in PlayerData.jobs: + var item_text = '%s (XP: %d | %d €)' % [job.job_name, job.job_experience, job.job_reward] + select_job.add_item(item_text) + + var current_index = select_job.item_count - 1 + select_job.set_item_metadata(current_index, job) + +func _on_start_button_pressed() -> void: + if select_job.get_item_text(0) == "No jobs accepted": + print("No job selected") + else: + PlayerData.give_money.emit(selected_job.job_reward) + + +func _on_select_job_item_selected(index: int) -> void: + selected_job = select_job.get_item_metadata(index) + print(selected_job) diff --git a/printer.tscn b/printer.tscn index 1089224..2624718 100644 --- a/printer.tscn +++ b/printer.tscn @@ -16,52 +16,68 @@ theme_override_constants/margin_top = 10 theme_override_constants/margin_right = 10 theme_override_constants/margin_bottom = 10 -[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer" unique_id=2137617795] +[node name="MainArea" type="VBoxContainer" parent="MarginContainer" unique_id=2137617795] layout_mode = 2 -[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer" unique_id=1033555892] +[node name="TopInfo" type="HBoxContainer" parent="MarginContainer/MainArea" unique_id=1033555892] layout_mode = 2 -[node name="Model" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer" unique_id=397114791] +[node name="PrinterLabel" type="Label" parent="MarginContainer/MainArea/TopInfo" unique_id=397114791] layout_mode = 2 +size_flags_horizontal = 3 theme_override_font_sizes/font_size = 30 text = "Printer #1" -[node name="Label2" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer" unique_id=2117616913] +[node name="StatusLabel" type="Label" parent="MarginContainer/MainArea/TopInfo" unique_id=2117616913] layout_mode = 2 +size_flags_horizontal = 3 text = "Status: Free" +horizontal_alignment = 2 -[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer" unique_id=1502076264] +[node name="PrinterModelLabel" type="Label" parent="MarginContainer/MainArea" unique_id=666140345] +layout_mode = 2 +text = "Printer model" + +[node name="PrintInfo" type="VBoxContainer" parent="MarginContainer/MainArea" unique_id=1502076264] layout_mode = 2 -[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/VBoxContainer" unique_id=181392172] +[node name="FilamentLabel" type="Label" parent="MarginContainer/MainArea/PrintInfo" unique_id=181392172] layout_mode = 2 text = "Material: PLA" -[node name="Label2" type="Label" parent="MarginContainer/VBoxContainer/VBoxContainer" unique_id=1516591173] +[node name="JobLabel" type="Label" parent="MarginContainer/MainArea/PrintInfo" unique_id=1516591173] layout_mode = 2 text = "Time left: 15.0" -[node name="ProgressBar" type="ProgressBar" parent="MarginContainer/VBoxContainer/VBoxContainer" unique_id=768246659] +[node name="ProgressBar" type="ProgressBar" parent="MarginContainer/MainArea/PrintInfo" unique_id=768246659] layout_mode = 2 value = 67.0 -[node name="HBoxContainer2" type="HBoxContainer" parent="MarginContainer/VBoxContainer" unique_id=248340191] +[node name="Buttons" type="HBoxContainer" parent="MarginContainer/MainArea" unique_id=248340191] layout_mode = 2 -[node name="Button" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer2" unique_id=500388805] +[node name="StartButton" type="Button" parent="MarginContainer/MainArea/Buttons" unique_id=1943803675] layout_mode = 2 size_flags_horizontal = 3 -text = "Start job" +text = "Start print" -[node name="Button2" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer2" unique_id=765929805] +[node name="UpgradeButton" type="Button" parent="MarginContainer/MainArea/Buttons" unique_id=765929805] +visible = false layout_mode = 2 size_flags_horizontal = 3 text = "Upgrade" -[node name="Button3" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer2" unique_id=929234066] +[node name="SellButton" type="Button" parent="MarginContainer/MainArea/Buttons" unique_id=929234066] layout_mode = 2 size_flags_horizontal = 3 text = "Sell printer" +[node name="SelectJob" type="OptionButton" parent="MarginContainer/MainArea" unique_id=1500040832] +layout_mode = 2 + [node name="Timer" type="Timer" parent="." unique_id=425740035] + +[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"] +[connection signal="pressed" from="MarginContainer/MainArea/SelectJob" to="." method="_on_select_job_pressed"] diff --git a/ui.gd b/ui.gd index 295c4bd..5be2d69 100644 --- a/ui.gd +++ b/ui.gd @@ -39,8 +39,10 @@ func _on_money_changed(money): func _on_job_accepted_pressed(accepted_job): print("Job accepted") - PlayerData.give_experience.emit(accepted_job.job_data.job_experience) - PlayerData.give_money.emit(accepted_job.job_data.job_reward) + #PlayerData.give_experience.emit(accepted_job.job_data.job_experience) + #PlayerData.give_money.emit(accepted_job.job_data.job_reward) + PlayerData.jobs.append(accepted_job.job_data) + print(PlayerData.jobs[0].job_name) accepted_job.queue_free() var job_count = %JobContainer.get_child_count() - 1