From 8db4d819bd2a604dc7fda2281f6359452ab86d21 Mon Sep 17 00:00:00 2001 From: jepsu Date: Sat, 27 Jun 2026 13:51:49 +0300 Subject: [PATCH] Visual changes: Added scroll containers for jobs and printer shop window. Cleanup: Reformatted printer_card.gd text fields --- Resources/job_data.gd | 7 ++- Scenes/Shop/Printers/printer_card.gd | 6 +- Scenes/Shop/Printers/printers.gd | 10 +++- Scenes/Shop/Printers/printers_card.tscn | 1 + Scenes/UI/ui.gd | 6 +- Scenes/UI/ui.tscn | 75 ++++++++++++++++++++----- 6 files changed, 80 insertions(+), 25 deletions(-) diff --git a/Resources/job_data.gd b/Resources/job_data.gd index fdc9ac7..5390f69 100644 --- a/Resources/job_data.gd +++ b/Resources/job_data.gd @@ -23,8 +23,13 @@ extends Resource _generate_job_time() @export var job_description: String + +@export var job_material: String = "PLA": + set(value): + job_material = value + _generate_job_time() + var job_time: float -var job_material: String = "PLA" func _init() -> void: diff --git a/Scenes/Shop/Printers/printer_card.gd b/Scenes/Shop/Printers/printer_card.gd index 1c475ef..e3bdda6 100644 --- a/Scenes/Shop/Printers/printer_card.gd +++ b/Scenes/Shop/Printers/printer_card.gd @@ -17,9 +17,9 @@ func initialize_printer(data: PrinterData) -> void: printer_data = data printer_name.text = printer_data.printer_manufacturer printer_model.text = printer_data.printer_type - printer_speed.text = "Speed: " + str(printer_data.printer_speed) + "/5" - printer_quality.text = "Quality: " + str(printer_data.printer_quality) + "/5" - printer_price.text = "Price: " + str(printer_data.printer_price) + "€" + printer_speed.text = 'Speed: %d/5' % printer_data.printer_speed + printer_quality.text = 'Quality: %d/5' % printer_data.printer_quality + printer_price.text = 'Price: %d €' % printer_data.printer_price if PlayerData.money > printer_data.printer_price: buy_button.disabled = false diff --git a/Scenes/Shop/Printers/printers.gd b/Scenes/Shop/Printers/printers.gd index 0d04519..f70b013 100644 --- a/Scenes/Shop/Printers/printers.gd +++ b/Scenes/Shop/Printers/printers.gd @@ -6,13 +6,17 @@ signal printer_purchase_requested(printer_data: PrinterData) const PRINTER_SCENE = preload("uid://bdpqvwvwmaian") func _ready() -> void: + generate_printers() + generate_printers() + + printer_purchase_requested.connect(GameData._on_shop_printer_purchase_req) + +func generate_printers() -> void: for printer in printers_array: var new_printer = PRINTER_SCENE.instantiate() - $PrinterList.add_child(new_printer) + %PrinterList.add_child(new_printer) new_printer.initialize_printer(printer) new_printer.buy_printer.connect(_buy_printer_pressed) - - printer_purchase_requested.connect(GameData._on_shop_printer_purchase_req) func _buy_printer_pressed(bought_printer) -> void: printer_purchase_requested.emit(bought_printer.printer_data) diff --git a/Scenes/Shop/Printers/printers_card.tscn b/Scenes/Shop/Printers/printers_card.tscn index aee5317..d904ada 100644 --- a/Scenes/Shop/Printers/printers_card.tscn +++ b/Scenes/Shop/Printers/printers_card.tscn @@ -6,6 +6,7 @@ [node name="PrinterCard" type="PanelContainer" unique_id=1714388686] offset_right = 40.0 offset_bottom = 40.0 +size_flags_horizontal = 3 script = ExtResource("1_tl8ce") [node name="MarginContainer" type="MarginContainer" parent="." unique_id=2020543953] diff --git a/Scenes/UI/ui.gd b/Scenes/UI/ui.gd index 62aa430..1c66e9d 100644 --- a/Scenes/UI/ui.gd +++ b/Scenes/UI/ui.gd @@ -33,12 +33,12 @@ func _on_level_changed(level) -> void: func _on_money_changed(money) -> void: %Money.text = 'Money: %.2f €' % money -func _on_job_generated(job: Node) -> void: - %JobContainer.add_child(job) - func _on_job_interact() -> void: jobs_tab_button.text = 'Jobs (%d / %d)' % [GameData.current_job_count, GameData.MAX_JOBS] +func _on_job_generated(job: Node) -> void: + %JobContainer.add_child(job) + func _on_printer_bought(new_printer: Node) -> void: %PrinterContainer.add_child(new_printer) diff --git a/Scenes/UI/ui.tscn b/Scenes/UI/ui.tscn index d8f0808..fb4c868 100644 --- a/Scenes/UI/ui.tscn +++ b/Scenes/UI/ui.tscn @@ -28,6 +28,9 @@ corner_radius_bottom_right = 6 corner_radius_bottom_left = 6 corner_detail = 6 +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_vqjbf"] +bg_color = Color(0.6, 0.6, 0.6, 0) + [node name="UI" type="Control" unique_id=256887379] layout_mode = 3 anchors_preset = 15 @@ -106,6 +109,7 @@ show_percentage = false [node name="MainArea" type="HBoxContainer" parent="VBoxContainer" unique_id=352001241] layout_mode = 2 +size_flags_vertical = 3 [node name="LeftColumn" type="VBoxContainer" parent="VBoxContainer/MainArea" unique_id=497978034] layout_mode = 2 @@ -159,23 +163,47 @@ layout_mode = 2 size_flags_horizontal = 3 text = "Menu" -[node name="JobsTab" type="PanelContainer" parent="VBoxContainer/MainArea/RightColumn" unique_id=859027615] +[node name="MainMargin" type="MarginContainer" parent="VBoxContainer/MainArea/RightColumn" unique_id=562508461] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_constants/margin_left = 10 +theme_override_constants/margin_right = 10 +theme_override_constants/margin_bottom = 10 + +[node name="JobsTab" type="PanelContainer" parent="VBoxContainer/MainArea/RightColumn/MainMargin" unique_id=859027615] unique_name_in_owner = true visible = false layout_mode = 2 -[node name="JobContainer" type="VBoxContainer" parent="VBoxContainer/MainArea/RightColumn/JobsTab" unique_id=1821891785] +[node name="JobScroll" type="ScrollContainer" parent="VBoxContainer/MainArea/RightColumn/MainMargin/JobsTab" unique_id=1046443254] +layout_mode = 2 +horizontal_scroll_mode = 0 + +[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/MainArea/RightColumn/MainMargin/JobsTab/JobScroll" unique_id=708828708] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/margin_left = 10 +theme_override_constants/margin_top = 10 +theme_override_constants/margin_right = 10 +theme_override_constants/margin_bottom = 10 + +[node name="JobContainer" type="VBoxContainer" parent="VBoxContainer/MainArea/RightColumn/MainMargin/JobsTab/JobScroll/MarginContainer" unique_id=1821891785] unique_name_in_owner = true layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/separation = 8 -[node name="ShopTab" type="PanelContainer" parent="VBoxContainer/MainArea/RightColumn" unique_id=23859514] +[node name="ShopTab" type="PanelContainer" parent="VBoxContainer/MainArea/RightColumn/MainMargin" unique_id=23859514] unique_name_in_owner = true layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_vqjbf") -[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/MainArea/RightColumn/ShopTab" unique_id=1098619767] +[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/MainArea/RightColumn/MainMargin/ShopTab" unique_id=1098619767] layout_mode = 2 -[node name="ShopTabSwitcher" type="MarginContainer" parent="VBoxContainer/MainArea/RightColumn/ShopTab/VBoxContainer" unique_id=40136169] +[node name="ShopTabSwitcher" type="MarginContainer" parent="VBoxContainer/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer" unique_id=40136169] layout_mode = 2 theme_override_constants/margin_left = 10 theme_override_constants/margin_top = 10 @@ -183,33 +211,50 @@ theme_override_constants/margin_right = 10 theme_override_constants/margin_bottom = 10 script = ExtResource("14_vqjbf") -[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/MainArea/RightColumn/ShopTab/VBoxContainer/ShopTabSwitcher" unique_id=1669205646] +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher" unique_id=1669205646] layout_mode = 2 -[node name="PrintersButton" type="Button" parent="VBoxContainer/MainArea/RightColumn/ShopTab/VBoxContainer/ShopTabSwitcher/HBoxContainer" unique_id=96323903] +[node name="PrintersButton" type="Button" parent="VBoxContainer/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher/HBoxContainer" unique_id=96323903] layout_mode = 2 size_flags_horizontal = 3 text = "Printers" -[node name="FilamentsButton" type="Button" parent="VBoxContainer/MainArea/RightColumn/ShopTab/VBoxContainer/ShopTabSwitcher/HBoxContainer" unique_id=659653173] +[node name="FilamentsButton" type="Button" parent="VBoxContainer/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher/HBoxContainer" unique_id=659653173] layout_mode = 2 size_flags_horizontal = 3 text = "Filaments" -[node name="Printers" type="PanelContainer" parent="VBoxContainer/MainArea/RightColumn/ShopTab/VBoxContainer" unique_id=1896524960] +[node name="Printers" type="PanelContainer" parent="VBoxContainer/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer" unique_id=1896524960] unique_name_in_owner = true layout_mode = 2 +size_flags_vertical = 3 script = ExtResource("15_vqjbf") printers_array = Array[ExtResource("16_rdojl")]([ExtResource("17_llrls"), ExtResource("18_8rt22"), ExtResource("19_1ohgd")]) -[node name="PrinterList" type="VBoxContainer" parent="VBoxContainer/MainArea/RightColumn/ShopTab/VBoxContainer/Printers" unique_id=474412195] +[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/Printers" unique_id=1757920718] layout_mode = 2 +horizontal_scroll_mode = 0 -[node name="Filaments" type="PanelContainer" parent="VBoxContainer/MainArea/RightColumn/ShopTab/VBoxContainer" unique_id=1891341317] +[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/Printers/ScrollContainer" unique_id=64943590] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/margin_left = 10 +theme_override_constants/margin_top = 10 +theme_override_constants/margin_right = 10 +theme_override_constants/margin_bottom = 10 + +[node name="PrinterList" type="VBoxContainer" parent="VBoxContainer/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/Printers/ScrollContainer/MarginContainer" unique_id=474412195] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/separation = 8 + +[node name="Filaments" type="PanelContainer" parent="VBoxContainer/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer" unique_id=1891341317] unique_name_in_owner = true layout_mode = 2 -[node name="MenuTab" type="PanelContainer" parent="VBoxContainer/MainArea/RightColumn" unique_id=526907583] +[node name="MenuTab" type="PanelContainer" parent="VBoxContainer/MainArea/RightColumn/MainMargin" unique_id=526907583] unique_name_in_owner = true visible = false layout_mode = 2 @@ -223,7 +268,7 @@ autostart = true [connection signal="pressed" from="VBoxContainer/MainArea/RightColumn/TabSwitcher/TabButtons/JobsTabButton" to="VBoxContainer/MainArea/RightColumn/TabSwitcher" method="_on_jobs_tab_button_pressed"] [connection signal="pressed" from="VBoxContainer/MainArea/RightColumn/TabSwitcher/TabButtons/ShopTabButton" to="VBoxContainer/MainArea/RightColumn/TabSwitcher" method="_on_shop_tab_button_pressed"] [connection signal="pressed" from="VBoxContainer/MainArea/RightColumn/TabSwitcher/TabButtons/MenuTabButton" to="VBoxContainer/MainArea/RightColumn/TabSwitcher" method="_on_menu_tab_button_pressed"] -[connection signal="pressed" from="VBoxContainer/MainArea/RightColumn/ShopTab/VBoxContainer/ShopTabSwitcher/HBoxContainer/PrintersButton" to="VBoxContainer/MainArea/RightColumn/ShopTab/VBoxContainer/ShopTabSwitcher" method="_on_printers_button_pressed"] -[connection signal="pressed" from="VBoxContainer/MainArea/RightColumn/ShopTab/VBoxContainer/ShopTabSwitcher/HBoxContainer/FilamentsButton" to="VBoxContainer/MainArea/RightColumn/ShopTab/VBoxContainer/ShopTabSwitcher" method="_on_filaments_button_pressed"] -[connection signal="printer_purchase_requested" from="VBoxContainer/MainArea/RightColumn/ShopTab/VBoxContainer/Printers" to="." method="_on_printers_printer_purchase_requested"] +[connection signal="pressed" from="VBoxContainer/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher/HBoxContainer/PrintersButton" to="VBoxContainer/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher" method="_on_printers_button_pressed"] +[connection signal="pressed" from="VBoxContainer/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher/HBoxContainer/FilamentsButton" to="VBoxContainer/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher" method="_on_filaments_button_pressed"] +[connection signal="printer_purchase_requested" from="VBoxContainer/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/Printers" to="." method="_on_printers_printer_purchase_requested"] [connection signal="timeout" from="JobSpawner" to="." method="_on_job_spawner_timeout"]