Jobs now go to PlayerData array and are listed in printer dropdown

This commit is contained in:
jepsu 2026-06-24 21:10:06 +03:00
parent 882f784b42
commit e4b1a2cee2
4 changed files with 75 additions and 17 deletions

View file

@ -15,6 +15,10 @@ extends Node
level = value level = value
level_changed.emit(level) level_changed.emit(level)
@export var sell_multiplier: float = 0.5
var jobs: Array[JobData]
signal xp_changed(new_xp) signal xp_changed(new_xp)
signal money_changed(new_money) signal money_changed(new_money)
signal level_changed(new_level) signal level_changed(new_level)

View file

@ -1,9 +1,45 @@
extends PanelContainer 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 var printer_data: PrinterData
@onready var model: Label = $MarginContainer/VBoxContainer/HBoxContainer/Model var selected_job: JobData
func initialize_printer(data: PrinterData) -> void: func initialize_printer(data: PrinterData) -> void:
printer_data = data printer_data = data
#print("Creating bought printer: " + printer_data.printer_manufacturer) #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)

View file

@ -16,52 +16,68 @@ theme_override_constants/margin_top = 10
theme_override_constants/margin_right = 10 theme_override_constants/margin_right = 10
theme_override_constants/margin_bottom = 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 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 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 layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 30 theme_override_font_sizes/font_size = 30
text = "Printer #1" 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 layout_mode = 2
size_flags_horizontal = 3
text = "Status: Free" 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 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 layout_mode = 2
text = "Material: PLA" 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 layout_mode = 2
text = "Time left: 15.0" 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 layout_mode = 2
value = 67.0 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 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 layout_mode = 2
size_flags_horizontal = 3 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 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
text = "Upgrade" 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 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
text = "Sell printer" 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] [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"]

6
ui.gd
View file

@ -39,8 +39,10 @@ func _on_money_changed(money):
func _on_job_accepted_pressed(accepted_job): func _on_job_accepted_pressed(accepted_job):
print("Job accepted") print("Job accepted")
PlayerData.give_experience.emit(accepted_job.job_data.job_experience) #PlayerData.give_experience.emit(accepted_job.job_data.job_experience)
PlayerData.give_money.emit(accepted_job.job_data.job_reward) #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() accepted_job.queue_free()
var job_count = %JobContainer.get_child_count() - 1 var job_count = %JobContainer.get_child_count() - 1