Compare commits

..

No commits in common. "main" and "development" have entirely different histories.

16 changed files with 106 additions and 303 deletions

View file

@ -1,13 +0,0 @@
[gd_resource type="Resource" script_class="FilamentData" format=3 uid="uid://gmby6rjd07wi"]
[ext_resource type="Script" uid="uid://cim8peoxip2si" path="res://Resources/filament_data.gd" id="1_uvxfr"]
[resource]
script = ExtResource("1_uvxfr")
material = "ABS - Small"
reward_multiplier = 1.0
xp_multiplier = 1.0
amount = 200.0
price = 4.18
description = "ABS filament for industrial applications"
metadata/_custom_type_script = "uid://cim8peoxip2si"

View file

@ -1,14 +0,0 @@
[gd_resource type="Resource" script_class="FilamentData" format=3 uid="uid://gm0cqq0ggri"]
[ext_resource type="Script" uid="uid://cim8peoxip2si" path="res://Resources/filament_data.gd" id="1_ws0fq"]
[resource]
script = ExtResource("1_ws0fq")
material = "ASA-CF - Small"
reward_multiplier = 1.0
xp_multiplier = 1.0
amount = 200.0
price = 7.74
description = "Carbon fibre-reinforced ASA to withstand extreme performance"
level_req = 3
metadata/_custom_type_script = "uid://cim8peoxip2si"

View file

@ -1,13 +0,0 @@
[gd_resource type="Resource" script_class="FilamentData" format=3 uid="uid://cwtaryim1yjnu"]
[ext_resource type="Script" uid="uid://cim8peoxip2si" path="res://Resources/filament_data.gd" id="1_02q3j"]
[resource]
script = ExtResource("1_02q3j")
material = "ASA - Small"
reward_multiplier = 1.0
xp_multiplier = 1.0
amount = 200.0
price = 5.3
description = "Weather and UV resistant ASA filament"
metadata/_custom_type_script = "uid://cim8peoxip2si"

View file

@ -1,14 +0,0 @@
[gd_resource type="Resource" script_class="FilamentData" format=3 uid="uid://vuby4u37cu42"]
[ext_resource type="Script" uid="uid://cim8peoxip2si" path="res://Resources/filament_data.gd" id="1_w3dqi"]
[resource]
script = ExtResource("1_w3dqi")
material = "PETG - Small"
reward_multiplier = 1.0
xp_multiplier = 1.0
amount = 200.0
price = 5.23
description = "PETG filament for robust & precise prints"
level_req = 2
metadata/_custom_type_script = "uid://cim8peoxip2si"

View file

@ -1,15 +0,0 @@
extends Node
signal amount_changed(new_amount)
var filament_data: FilamentData
var amount: float:
set(value):
amount = value
amount_changed.emit(amount)
func initialize_filament(data: FilamentData) -> void:
filament_data = data
amount = filament_data.amount
print("Filament added: ", filament_data.material)

View file

@ -1 +0,0 @@
uid://saed3mn0c2cw

View file

@ -1,6 +0,0 @@
[gd_scene format=3 uid="uid://ckjg1eynole7p"]
[ext_resource type="Script" uid="uid://saed3mn0c2cw" path="res://Scenes/Filament/filament.gd" id="1_b0mke"]
[node name="Filament" type="Node" unique_id=274664749]
script = ExtResource("1_b0mke")

View file

@ -4,16 +4,16 @@ extends Node
signal job_generated(job: Node)
signal job_interact
signal printer_bought(printer: Node)
signal filament_bought
@warning_ignore("unused_signal")
signal refresh_printer_dropdown
signal notification_requested(message: String, color: String)
# - Variables - Code managed
var job_spawn_timer: Timer
var inventory: Node
var jobs_array: Array[JobData]
var current_job_count: int = 0
var filaments_array: Array[Node]
var filaments_array: Array[FilamentData]
# - Text colors
var hex_white: String = '#ffffff'
@ -25,8 +25,6 @@ var hex_red: String = '#f87171'
const JOB_CARD = preload("uid://dvfcie8hqcb0")
const PRINTER = preload("uid://33ctlyrpibs3")
const ALL_JOBS = preload("uid://buvi8m3atoavu")
const FILAMENT = preload("uid://ckjg1eynole7p")
# - Constants - Settings
# Jobs
@ -38,9 +36,7 @@ func _ready() -> void:
# Create timer for job spawning
job_spawn_timer = Timer.new()
inventory = Node.new()
add_child(job_spawn_timer)
add_child(inventory)
job_spawn_timer.wait_time = JOB_SPAWN_WAIT
job_spawn_timer.one_shot = false
job_spawn_timer.timeout.connect(_on_job_spawn_timer_timeout)
@ -59,10 +55,8 @@ func _on_shop_printer_purchase_req(printer_data: PrinterData) -> void:
func _on_shop_filament_purchase_req(filament_data: FilamentData) -> void:
if PlayerData.try_purchase(filament_data.price):
var new_filament = FILAMENT.instantiate()
inventory.add_child(new_filament)
new_filament.initialize_filament(filament_data)
#filaments_array.append(new_filament)
filaments_array.append(filament_data)
filament_bought.emit()
#endregion
#region Job generation
@ -101,6 +95,7 @@ func generate_random_job() -> JobData:
new_job.job_difficulty = random_job.job_difficulty
new_job.job_amount = roundf(amount)
#print('Generated new job: %s (%d € | %d xp | %d pcs)' % [new_job.job_name, new_job.job_reward, new_job.job_experience, new_job.job_amount])
return new_job
func _on_job_accepted_pressed(accepted_job) -> void:

View file

@ -5,7 +5,7 @@ var xp: float = 0:
xp = value
xp_changed.emit(xp)
var money: float = 9999:
var money: float = 200:
set(value):
money = value
money_changed.emit(money)
@ -29,7 +29,7 @@ var sell_multiplier: float = 0.5:
set(value):
sell_multiplier = value
var failure_chance: float = 0.6:
var failure_chance: float = 0.2:
set(value):
failure_chance = value

View file

@ -1,34 +1,23 @@
extends PanelContainer
@onready var printer_name_label: Label = $MarginContainer/MainArea/TopInfo/PrinterLabel
@onready var printer_model_label: Label = $MarginContainer/MainArea/Model/PrinterModelLabel
@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/SelectFilament
@onready var status_label: RichTextLabel = $MarginContainer/MainArea/TopInfo/StatusLabel
@onready var time_left_label: RichTextLabel = $MarginContainer/MainArea/PrintInfo/InfoRow2/TimeLeftLabel
@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
@onready var loaded_filament_label: RichTextLabel = $MarginContainer/MainArea/PrintInfo/InfoRow1/LoadedFilament
var printer_data: PrinterData
# - Job and Filament selection variables
var selected_job: JobData
var selected_job_index: int
var selected_filament: Node = null
var selected_filament_index: int
# - Printer states
var is_printing: bool = false
var print_failed: bool = false
# Variables - Failure calculations
var time_left: float
var failure_points: Array
var failure_point_amount: float = 5
var print_quality: float = 1.0
func _ready() -> void:
@ -41,61 +30,43 @@ func initialize_printer(data: PrinterData) -> void:
quality_label.visible = false
reward_label.visible = false
time_left_label.visible = false
loaded_filament_label.visible = true
time_left = 0
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:
select_job.hide()
select_filament.hide()
progress_bar.show()
time_left_label.show()
quality_label.show()
reward_label.show()
select_job.visible = false
progress_bar.visible = true
time_left_label.visible = true
quality_label.visible = true
reward_label.visible = true
set_status()
var text_color = GameData.hex_green
if print_quality < 1.0:
text_color = GameData.hex_red
quality_label.text = 'Quality: [color=%s]%.0f%%[/color]' % [text_color, (print_quality * 100)]
reward_label.text = 'Reward: [color=%s]%.2f €[/color]' % [text_color, (selected_job.job_reward * print_quality)]
quality_label.text = 'Quality: [color=%s]%.0f%%[/color]' % [GameData.hex_green, (print_quality * 100)]
reward_label.text = 'Reward: [color=%s]%.2f €[/color]' % [GameData.hex_green, (selected_job.job_reward * print_quality)]
var total_time = selected_job.job_time / printer_data.printer_speed
var progress = (total_time - time_left) / total_time
selected_filament.amount -= 0.5 * delta
time_left -= delta
progress_bar.value = progress
time_left_label.text = 'Time left: [color=%s]%s[/color]' % [GameData.hex_blue, calculate_time_left(time_left)]
time_left_label.text = 'Time left: %s' % calculate_time_left(time_left)
if time_left <= 0:
var end_reward = selected_job.job_reward * print_quality
var end_xp = selected_job.job_experience * print_quality
PlayerData.give_money.emit(end_reward)
PlayerData.give_experience.emit(end_xp)
GameData.display_msg('Print completed! Got %.2f' % end_reward, GameData.hex_green)
PlayerData.give_money.emit(selected_job.job_reward * print_quality)
PlayerData.give_experience.emit(selected_job.job_experience * print_quality)
reset_status()
# Old print failure condition - 1st Fail, 2nd + 3rd Quality decrease
#if failure_points.has(roundf(progress_bar.value * 100)):
#if failure_points[0] == roundf(progress_bar.value * 100):
#if check_failure(roundf(progress_bar.value * 100)):
#print_failed = true
#reset_status()
#elif check_failure(roundf(progress_bar.value * 100)):
#print_quality -= 0.1
# New print failure condition - Only quality decrease
if failure_points.has(roundf(progress_bar.value * 100)):
if failure_points[0] == roundf(progress_bar.value * 100):
if check_failure(roundf(progress_bar.value * 100)):
print_failed = true
reset_status()
elif check_failure(roundf(progress_bar.value * 100)):
print_quality -= 0.1
func reset_status() -> void:
@ -104,15 +75,14 @@ func reset_status() -> void:
print_failed = false
print_quality = 1.0
failure_points = []
time_left_label.hide()
quality_label.hide()
reward_label.hide()
progress_bar.hide()
time_left_label.visible = false
quality_label.visible = false
reward_label.visible = false
progress_bar.visible = false
progress_bar.value = 0
time_left = 0
select_filament.show()
select_job.disabled = false
select_job.show()
select_job.visible = true
start_button.disabled = false
_on_select_job_pressed()
@ -129,20 +99,15 @@ func set_status() -> void:
else:
status = 'Free'
color_hex = GameData.hex_green
GameData.display_msg('Print completed!',color_hex)
status_label.text = 'Status: [color=%s]%s[/color]' % [color_hex, status]
func calculate_fail_thresholds() -> Array:
var failure_checkpoints: Array = []
var failure_range = roundf(100.0 / failure_point_amount)
for point in failure_point_amount:
var range_min = failure_checkpoints.size() * (failure_range + 1)
var range_max = failure_checkpoints.size() * (failure_range + 1) + failure_range
failure_checkpoints.append(roundf(randf_range(\
range_min, range_max)))
print('Failure points: ', failure_checkpoints)
failure_checkpoints.append(roundf(randf_range(1,33)))
failure_checkpoints.append(roundf(randf_range(34,66)))
failure_checkpoints.append(roundf(randf_range(67,90)))
return failure_checkpoints
func check_failure(value: float) -> bool:
@ -166,6 +131,7 @@ func calculate_time_left(time) -> String:
func _on_refresh_printer_dropdown() -> void:
if is_printing:
return
_on_select_job_pressed()
func _on_sell_button_pressed() -> void:
@ -173,35 +139,6 @@ func _on_sell_button_pressed() -> void:
PlayerData.owned_printers -= 1
queue_free()
func _on_select_filament_pressed() -> void:
select_filament.clear()
var current_filaments = GameData.inventory.get_children()
if current_filaments.is_empty():
select_filament.add_item("Out of filament")
loaded_filament_label.text = 'Loaded filament: None'
selected_filament = null
else:
for filament in current_filaments:
var data = filament.filament_data
var amount = filament.amount
var item_text = '%s | %.2f g' % [data.material, 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
selected_filament.amount_changed.connect(_on_filament_amount_changed)
_on_filament_amount_changed(selected_filament.amount)
func _on_select_filament_item_selected(index: int) -> void:
selected_filament = select_filament.get_item_metadata(index)
selected_filament_index = index
selected_filament.amount_changed.connect(_on_filament_amount_changed)
_on_filament_amount_changed(selected_filament.amount)
func _on_select_job_pressed() -> void:
select_job.clear()
if PlayerData.jobs.is_empty():
@ -210,8 +147,7 @@ func _on_select_job_pressed() -> void:
else:
start_button.disabled = false
for job in PlayerData.jobs:
var item_text = '%s (XP: %.2f | %.2f € | %s)' %\
[job.job_name, job.job_experience, job.job_reward, calculate_time_left(job.job_time / printer_data.printer_speed)]
var item_text = '%s (XP: %d | %d € | %s)' % [job.job_name, job.job_experience, job.job_reward, calculate_time_left(job.job_time / printer_data.printer_speed)]
select_job.add_item(item_text)
var current_index = select_job.item_count - 1
@ -223,25 +159,20 @@ func _on_select_job_item_selected(index: int) -> void:
selected_job = select_job.get_item_metadata(index)
selected_job_index = index
func _on_filament_amount_changed(new_amount: float) -> void:
loaded_filament_label.text = 'Loaded filament: [color=%s]%s | %.2f g[/color]' % [GameData.hex_blue, selected_filament.filament_data.material, new_amount]
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()
else:
PlayerData.jobs.remove_at(selected_job_index)
failure_points = calculate_fail_thresholds()
print('Failure points: ', failure_points)
GameData.refresh_printer_dropdown.emit()

View file

@ -41,12 +41,8 @@ text = "Status: Free"
horizontal_alignment = 2
vertical_alignment = 1
[node name="Model" type="HBoxContainer" parent="MarginContainer/MainArea" unique_id=916690802]
[node name="PrinterModelLabel" type="Label" parent="MarginContainer/MainArea" unique_id=666140345]
layout_mode = 2
[node name="PrinterModelLabel" type="Label" parent="MarginContainer/MainArea/Model" unique_id=666140345]
layout_mode = 2
size_flags_horizontal = 3
text = "Printer model"
[node name="PrintInfo" type="VBoxContainer" parent="MarginContainer/MainArea" unique_id=1502076264]
@ -54,13 +50,10 @@ layout_mode = 2
[node name="InfoRow1" type="HBoxContainer" parent="MarginContainer/MainArea/PrintInfo" unique_id=1561257387]
layout_mode = 2
size_flags_vertical = 3
[node name="LoadedFilament" type="RichTextLabel" parent="MarginContainer/MainArea/PrintInfo/InfoRow1" unique_id=532233684]
[node name="FilamentLabel" type="Label" parent="MarginContainer/MainArea/PrintInfo/InfoRow1" unique_id=181392172]
layout_mode = 2
size_flags_horizontal = 3
bbcode_enabled = true
text = "Loaded filament: XXX | XXX g"
text = "Material: ###"
[node name="QualityLabel" type="RichTextLabel" parent="MarginContainer/MainArea/PrintInfo/InfoRow1" unique_id=937206053]
layout_mode = 2
@ -69,17 +62,11 @@ bbcode_enabled = true
text = "Print quality: ###%"
horizontal_alignment = 2
[node name="Label" type="Label" parent="MarginContainer/MainArea/PrintInfo/InfoRow1" unique_id=1388403149]
layout_mode = 2
[node name="InfoRow2" type="HBoxContainer" parent="MarginContainer/MainArea/PrintInfo" unique_id=719967546]
layout_mode = 2
size_flags_vertical = 3
[node name="TimeLeftLabel" type="RichTextLabel" parent="MarginContainer/MainArea/PrintInfo/InfoRow2" unique_id=948453921]
[node name="TimeLeftLabel" type="Label" parent="MarginContainer/MainArea/PrintInfo/InfoRow2" unique_id=1516591173]
layout_mode = 2
size_flags_horizontal = 3
bbcode_enabled = true
text = "Time left: ###s"
[node name="RewardLabel" type="RichTextLabel" parent="MarginContainer/MainArea/PrintInfo/InfoRow2" unique_id=700892606]
@ -89,9 +76,6 @@ bbcode_enabled = true
text = "Reward: ###€"
horizontal_alignment = 2
[node name="Label" type="Label" parent="MarginContainer/MainArea/PrintInfo/InfoRow2" unique_id=1668802451]
layout_mode = 2
[node name="ProgressBar" type="ProgressBar" parent="MarginContainer/MainArea/PrintInfo" unique_id=768246659]
layout_mode = 2
theme_override_styles/fill = ExtResource("2_dlbos")
@ -118,11 +102,6 @@ size_flags_horizontal = 3
theme_override_styles/hover = ExtResource("3_mmlst")
text = "Sell printer"
[node name="SelectFilament" type="OptionButton" parent="MarginContainer/MainArea" unique_id=1562930238]
layout_mode = 2
item_count = 1
popup/item_0/id = 0
[node name="SelectJob" type="OptionButton" parent="MarginContainer/MainArea" unique_id=1500040832]
layout_mode = 2
@ -130,7 +109,5 @@ layout_mode = 2
[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/SelectFilament" to="." method="_on_select_filament_item_selected"]
[connection signal="pressed" from="MarginContainer/MainArea/SelectFilament" to="." method="_on_select_filament_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"]

View file

@ -5,15 +5,11 @@ signal printer_purchase_requested(printer_data: PrinterData)
@export var printers_array: Array[PrinterData]
const PRINTER_SCENE = preload("uid://bdpqvwvwmaian")
func _ready() -> void:
generate_printers()
printer_purchase_requested.connect(GameData._on_shop_printer_purchase_req)
PlayerData.level_changed.connect(_on_level_changed)
func generate_printers() -> void:
for child in %PrinterList.get_children():
child.queue_free()
for printer in printers_array:
if PlayerData.level >= printer.printer_level_req:
var new_printer = PRINTER_SCENE.instantiate()
@ -23,6 +19,3 @@ func generate_printers() -> void:
func _buy_printer_pressed(bought_printer) -> void:
printer_purchase_requested.emit(bought_printer.printer_data)
func _on_level_changed(_level) -> void:
generate_printers()

View file

@ -9,11 +9,8 @@ const SHOP_FILAMENTS_CARD = preload("uid://csq76iufxrb4y")
func _ready() -> void:
generate_filaments()
filament_purchase_requested.connect(GameData._on_shop_filament_purchase_req)
PlayerData.level_changed.connect(_on_level_changed)
func generate_filaments() -> void:
for child in %FilamentList.get_children():
child.queue_free()
for filament in filaments_array:
if PlayerData.level >= filament.level_req:
var new_filament = SHOP_FILAMENTS_CARD.instantiate()
@ -22,7 +19,4 @@ func generate_filaments() -> void:
new_filament.buy_filament.connect(_on_buy_filament_pressed)
func _on_buy_filament_pressed(bought_filament) -> void:
filament_purchase_requested.emit(bought_filament.filament_data)
func _on_level_changed(_level) -> void:
generate_filaments()
filament_purchase_requested.emit(bought_filament)

View file

@ -2,10 +2,10 @@ extends Control
@export var debug: bool = false
@onready var debug_xp: Button = $GameArea/TopBar/VBoxContainer/MarginContainer/HBoxContainer/DebugXP
@onready var debug_money: Button = $GameArea/TopBar/VBoxContainer/MarginContainer/HBoxContainer/DebugMoney
@onready var debug_button: Button = $GameArea/TopBar/VBoxContainer/MarginContainer/HBoxContainer/DebugButton
@onready var jobs_tab_button: Button = $GameArea/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons/JobsTabButton
@onready var debug_xp: Button = $VBoxContainer/TopBar/VBoxContainer/MarginContainer/HBoxContainer/DebugXP
@onready var debug_money: Button = $VBoxContainer/TopBar/VBoxContainer/MarginContainer/HBoxContainer/DebugMoney
@onready var debug_button: Button = $VBoxContainer/TopBar/VBoxContainer/MarginContainer/HBoxContainer/DebugButton
@onready var jobs_tab_button: Button = $VBoxContainer/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons/JobsTabButton
const PRINTER = preload("uid://33ctlyrpibs3")

View file

@ -2,10 +2,7 @@
[ext_resource type="Script" uid="uid://d0sgvbphgssmi" path="res://Scenes/UI/ui.gd" id="1_vqjbf"]
[ext_resource type="PackedScene" uid="uid://c4tdg221rvm53" path="res://Scenes/UI/ui_notification.tscn" id="2_s3gqk"]
[ext_resource type="Script" uid="uid://bcowlm04qsgqc" path="res://Scenes/Shop/Printers/shop_filaments.gd" id="9_mbl0m"]
[ext_resource type="Script" uid="uid://cim8peoxip2si" path="res://Resources/filament_data.gd" id="10_vy225"]
[ext_resource type="Resource" uid="uid://dvu3hbx3tn0nx" path="res://Resources/Filaments/filament_pla.tres" id="11_fy0us"]
[ext_resource type="Resource" uid="uid://vuby4u37cu42" path="res://Resources/Filaments/filament_petg.tres" id="12_fy0us"]
[ext_resource type="Script" uid="uid://bcowlm04qsgqc" path="res://Scenes/UI/shop_filaments.gd" id="9_mbl0m"]
[ext_resource type="Script" uid="uid://q8cf21vq4ka6" path="res://Scenes/tab_switcher.gd" id="13_vqjbf"]
[ext_resource type="Script" uid="uid://cg2kskiky8iur" path="res://Scenes/Shop/shop_tab_switcher.gd" id="14_vqjbf"]
[ext_resource type="Script" uid="uid://d3g5e8wjfqy5i" path="res://Scenes/Shop/Printers/shop_printers.gd" id="15_vqjbf"]
@ -62,7 +59,7 @@ scale_amount_max = 5.0
color = Color(0.45585775, 0.45585775, 0.4558577, 1)
color_ramp = SubResource("Gradient_7g6h4")
[node name="GameArea" type="VBoxContainer" parent="." unique_id=1634044894]
[node name="VBoxContainer" type="VBoxContainer" parent="." unique_id=1634044894]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
@ -70,56 +67,56 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="TopBar" type="PanelContainer" parent="GameArea" unique_id=96075233]
[node name="TopBar" type="PanelContainer" parent="VBoxContainer" unique_id=96075233]
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="GameArea/TopBar" unique_id=1068942919]
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/TopBar" unique_id=1068942919]
layout_mode = 2
[node name="MarginContainer" type="MarginContainer" parent="GameArea/TopBar/VBoxContainer" unique_id=1261087154]
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/TopBar/VBoxContainer" unique_id=1261087154]
layout_mode = 2
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="HBoxContainer" type="HBoxContainer" parent="GameArea/TopBar/VBoxContainer/MarginContainer" unique_id=487881719]
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/TopBar/VBoxContainer/MarginContainer" unique_id=487881719]
layout_mode = 2
alignment = 1
[node name="Money" type="Label" parent="GameArea/TopBar/VBoxContainer/MarginContainer/HBoxContainer" unique_id=2146628247]
[node name="Money" type="Label" parent="VBoxContainer/TopBar/VBoxContainer/MarginContainer/HBoxContainer" unique_id=2146628247]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
text = "Money: 0 €"
[node name="DebugMoney" type="Button" parent="GameArea/TopBar/VBoxContainer/MarginContainer/HBoxContainer" unique_id=601739475]
[node name="DebugMoney" type="Button" parent="VBoxContainer/TopBar/VBoxContainer/MarginContainer/HBoxContainer" unique_id=601739475]
layout_mode = 2
text = "Give 100€"
[node name="DebugXP" type="Button" parent="GameArea/TopBar/VBoxContainer/MarginContainer/HBoxContainer" unique_id=535993224]
[node name="DebugXP" type="Button" parent="VBoxContainer/TopBar/VBoxContainer/MarginContainer/HBoxContainer" unique_id=535993224]
layout_mode = 2
text = "Give xp"
[node name="Time" type="Label" parent="GameArea/TopBar/VBoxContainer/MarginContainer/HBoxContainer" unique_id=1503956629]
[node name="Time" type="Label" parent="VBoxContainer/TopBar/VBoxContainer/MarginContainer/HBoxContainer" unique_id=1503956629]
visible = false
layout_mode = 2
size_flags_horizontal = 3
text = "Time: 12:00"
horizontal_alignment = 1
[node name="Level" type="Label" parent="GameArea/TopBar/VBoxContainer/MarginContainer/HBoxContainer" unique_id=1016279160]
[node name="Level" type="Label" parent="VBoxContainer/TopBar/VBoxContainer/MarginContainer/HBoxContainer" unique_id=1016279160]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
text = "Level: 1"
horizontal_alignment = 2
[node name="DebugButton" type="Button" parent="GameArea/TopBar/VBoxContainer/MarginContainer/HBoxContainer" unique_id=255003152]
[node name="DebugButton" type="Button" parent="VBoxContainer/TopBar/VBoxContainer/MarginContainer/HBoxContainer" unique_id=255003152]
layout_mode = 2
text = "Debug"
[node name="Experience" type="ProgressBar" parent="GameArea/TopBar/VBoxContainer" unique_id=38033766]
[node name="Experience" type="ProgressBar" parent="VBoxContainer/TopBar/VBoxContainer" unique_id=38033766]
unique_name_in_owner = true
custom_minimum_size = Vector2(0, 5)
layout_mode = 2
@ -127,24 +124,24 @@ theme_override_styles/fill = SubResource("StyleBoxFlat_8fchy")
value = 65.27
show_percentage = false
[node name="MainAreaMargin" type="MarginContainer" parent="GameArea" unique_id=1858818142]
[node name="MainAreaMargin" type="MarginContainer" parent="VBoxContainer" unique_id=1858818142]
layout_mode = 2
size_flags_vertical = 3
theme_override_constants/margin_top = 5
[node name="MainArea" type="HBoxContainer" parent="GameArea/MainAreaMargin" unique_id=352001241]
[node name="MainArea" type="HBoxContainer" parent="VBoxContainer/MainAreaMargin" unique_id=352001241]
layout_mode = 2
size_flags_vertical = 3
[node name="LeftColumn" type="VBoxContainer" parent="GameArea/MainAreaMargin/MainArea" unique_id=497978034]
[node name="LeftColumn" type="VBoxContainer" parent="VBoxContainer/MainAreaMargin/MainArea" unique_id=497978034]
layout_mode = 2
size_flags_horizontal = 3
[node name="MainMargin" type="MarginContainer" parent="GameArea/MainAreaMargin/MainArea/LeftColumn" unique_id=1390444828]
[node name="MainMargin" type="MarginContainer" parent="VBoxContainer/MainAreaMargin/MainArea/LeftColumn" unique_id=1390444828]
layout_mode = 2
size_flags_vertical = 3
[node name="Header" type="MarginContainer" parent="GameArea/MainAreaMargin/MainArea/LeftColumn/MainMargin" unique_id=674103883]
[node name="Header" type="MarginContainer" parent="VBoxContainer/MainAreaMargin/MainArea/LeftColumn/MainMargin" unique_id=674103883]
visible = false
layout_mode = 2
theme_override_constants/margin_left = 10
@ -152,15 +149,15 @@ theme_override_constants/margin_top = 10
theme_override_constants/margin_right = 10
theme_override_constants/margin_bottom = 10
[node name="Label" type="Label" parent="GameArea/MainAreaMargin/MainArea/LeftColumn/MainMargin/Header" unique_id=1155403735]
[node name="Label" type="Label" parent="VBoxContainer/MainAreaMargin/MainArea/LeftColumn/MainMargin/Header" unique_id=1155403735]
layout_mode = 2
text = "Printers"
[node name="PrinterScroll" type="ScrollContainer" parent="GameArea/MainAreaMargin/MainArea/LeftColumn/MainMargin" unique_id=1351903470]
[node name="PrinterScroll" type="ScrollContainer" parent="VBoxContainer/MainAreaMargin/MainArea/LeftColumn/MainMargin" unique_id=1351903470]
layout_mode = 2
horizontal_scroll_mode = 0
[node name="MarginContainer" type="MarginContainer" parent="GameArea/MainAreaMargin/MainArea/LeftColumn/MainMargin/PrinterScroll" unique_id=134445001]
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/MainAreaMargin/MainArea/LeftColumn/MainMargin/PrinterScroll" unique_id=134445001]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
@ -169,21 +166,21 @@ theme_override_constants/margin_top = 10
theme_override_constants/margin_right = 10
theme_override_constants/margin_bottom = 10
[node name="PrinterContainer" type="VBoxContainer" parent="GameArea/MainAreaMargin/MainArea/LeftColumn/MainMargin/PrinterScroll/MarginContainer" unique_id=374703275]
[node name="PrinterContainer" type="VBoxContainer" parent="VBoxContainer/MainAreaMargin/MainArea/LeftColumn/MainMargin/PrinterScroll/MarginContainer" unique_id=374703275]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
theme_override_constants/separation = 8
[node name="Printer" parent="GameArea/MainAreaMargin/MainArea/LeftColumn/MainMargin/PrinterScroll/MarginContainer/PrinterContainer" unique_id=1372437203 instance_placeholder="res://Scenes/Printer/printer.tscn"]
[node name="Printer" parent="VBoxContainer/MainAreaMargin/MainArea/LeftColumn/MainMargin/PrinterScroll/MarginContainer/PrinterContainer" unique_id=1372437203 instance_placeholder="res://Scenes/Printer/printer.tscn"]
layout_mode = 2
[node name="RightColumn" type="VBoxContainer" parent="GameArea/MainAreaMargin/MainArea" unique_id=653054059]
[node name="RightColumn" type="VBoxContainer" parent="VBoxContainer/MainAreaMargin/MainArea" unique_id=653054059]
layout_mode = 2
size_flags_horizontal = 3
[node name="TabSwitcher" type="MarginContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn" unique_id=1366955734]
[node name="TabSwitcher" type="MarginContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn" unique_id=1366955734]
layout_mode = 2
theme_override_constants/margin_left = 10
theme_override_constants/margin_top = 10
@ -191,42 +188,41 @@ theme_override_constants/margin_right = 10
theme_override_constants/margin_bottom = 10
script = ExtResource("13_vqjbf")
[node name="TabButtons" type="HBoxContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/TabSwitcher" unique_id=454550378]
[node name="TabButtons" type="HBoxContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/TabSwitcher" unique_id=454550378]
layout_mode = 2
[node name="JobsTabButton" type="Button" parent="GameArea/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons" unique_id=332022453]
[node name="JobsTabButton" type="Button" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons" unique_id=332022453]
layout_mode = 2
size_flags_horizontal = 3
text = "Jobs"
[node name="ShopTabButton" type="Button" parent="GameArea/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons" unique_id=748682284]
[node name="ShopTabButton" type="Button" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons" unique_id=748682284]
layout_mode = 2
size_flags_horizontal = 3
text = "Shop"
[node name="MenuTabButton" type="Button" parent="GameArea/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons" unique_id=1414728414]
[node name="MenuTabButton" type="Button" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons" unique_id=1414728414]
layout_mode = 2
size_flags_horizontal = 3
text = "Menu"
[node name="MainMargin" type="MarginContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn" unique_id=562508461]
[node name="MainMargin" type="MarginContainer" parent="VBoxContainer/MainAreaMargin/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="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin" unique_id=859027615]
[node name="JobsTab" type="PanelContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin" unique_id=859027615]
unique_name_in_owner = true
visible = false
layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_cqvjp")
[node name="JobScroll" type="ScrollContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/JobsTab" unique_id=1046443254]
[node name="JobScroll" type="ScrollContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/JobsTab" unique_id=1046443254]
layout_mode = 2
horizontal_scroll_mode = 0
[node name="MarginContainer" type="MarginContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/JobsTab/JobScroll" unique_id=708828708]
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/JobsTab/JobScroll" unique_id=708828708]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
@ -235,25 +231,22 @@ theme_override_constants/margin_top = 10
theme_override_constants/margin_right = 10
theme_override_constants/margin_bottom = 10
[node name="JobContainer" type="VBoxContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/JobsTab/JobScroll/MarginContainer" unique_id=1821891785]
[node name="JobContainer" type="VBoxContainer" parent="VBoxContainer/MainAreaMargin/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="JobCard" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/JobsTab/JobScroll/MarginContainer/JobContainer" unique_id=1714388686 instance_placeholder="res://Scenes/Job/job_card.tscn"]
layout_mode = 2
[node name="ShopTab" type="PanelContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin" unique_id=23859514]
[node name="ShopTab" type="PanelContainer" parent="VBoxContainer/MainAreaMargin/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="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab" unique_id=1098619767]
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab" unique_id=1098619767]
layout_mode = 2
[node name="ShopTabSwitcher" type="MarginContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer" unique_id=40136169]
[node name="ShopTabSwitcher" type="MarginContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer" unique_id=40136169]
layout_mode = 2
theme_override_constants/margin_left = 10
theme_override_constants/margin_top = 10
@ -261,20 +254,20 @@ theme_override_constants/margin_right = 10
theme_override_constants/margin_bottom = 10
script = ExtResource("14_vqjbf")
[node name="HBoxContainer" type="HBoxContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher" unique_id=1669205646]
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher" unique_id=1669205646]
layout_mode = 2
[node name="PrintersButton" type="Button" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher/HBoxContainer" unique_id=96323903]
[node name="PrintersButton" type="Button" parent="VBoxContainer/MainAreaMargin/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="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher/HBoxContainer" unique_id=659653173]
[node name="FilamentsButton" type="Button" parent="VBoxContainer/MainAreaMargin/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="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer" unique_id=1896524960]
[node name="Printers" type="PanelContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer" unique_id=1896524960]
unique_name_in_owner = true
visible = false
layout_mode = 2
@ -283,11 +276,11 @@ theme_override_styles/panel = SubResource("StyleBoxFlat_qru7b")
script = ExtResource("15_vqjbf")
printers_array = Array[ExtResource("16_rdojl")]([ExtResource("17_llrls"), ExtResource("18_8rt22"), ExtResource("19_1ohgd")])
[node name="ScrollContainer" type="ScrollContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/Printers" unique_id=1757920718]
[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/Printers" unique_id=1757920718]
layout_mode = 2
horizontal_scroll_mode = 0
[node name="MarginContainer" type="MarginContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/Printers/ScrollContainer" unique_id=64943590]
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/Printers/ScrollContainer" unique_id=64943590]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
@ -296,25 +289,24 @@ theme_override_constants/margin_top = 10
theme_override_constants/margin_right = 10
theme_override_constants/margin_bottom = 10
[node name="PrinterList" type="VBoxContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/Printers/ScrollContainer/MarginContainer" unique_id=474412195]
[node name="PrinterList" type="VBoxContainer" parent="VBoxContainer/MainAreaMargin/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="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer" unique_id=1891341317]
[node name="Filaments" type="PanelContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer" unique_id=1891341317]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 3
theme_override_styles/panel = SubResource("StyleBoxFlat_mmlst")
script = ExtResource("9_mbl0m")
filaments_array = Array[ExtResource("10_vy225")]([ExtResource("11_fy0us"), ExtResource("12_fy0us")])
[node name="ScrollContainer" type="ScrollContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/Filaments" unique_id=1087434821]
[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/Filaments" unique_id=1087434821]
layout_mode = 2
horizontal_scroll_mode = 0
[node name="MarginContainer" type="MarginContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/Filaments/ScrollContainer" unique_id=1350479691]
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/Filaments/ScrollContainer" unique_id=1350479691]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
@ -323,12 +315,12 @@ theme_override_constants/margin_top = 10
theme_override_constants/margin_right = 10
theme_override_constants/margin_bottom = 10
[node name="FilamentList" type="VBoxContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/Filaments/ScrollContainer/MarginContainer" unique_id=1017092781]
[node name="FilamentList" type="VBoxContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/Filaments/ScrollContainer/MarginContainer" unique_id=1017092781]
unique_name_in_owner = true
layout_mode = 2
theme_override_constants/separation = 8
[node name="MenuTab" type="PanelContainer" parent="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin" unique_id=526907583]
[node name="MenuTab" type="PanelContainer" parent="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin" unique_id=526907583]
unique_name_in_owner = true
visible = false
layout_mode = 2
@ -346,14 +338,11 @@ grow_vertical = 1
[node name="JobSpawner" type="Timer" parent="." unique_id=1696213535]
autostart = true
[node name="Inventory" type="Node" parent="." unique_id=459920508]
unique_name_in_owner = true
[connection signal="pressed" from="GameArea/TopBar/VBoxContainer/MarginContainer/HBoxContainer/DebugMoney" to="." method="_on_debug_money_pressed"]
[connection signal="pressed" from="GameArea/TopBar/VBoxContainer/MarginContainer/HBoxContainer/DebugXP" to="." method="_on_debug_xp_pressed"]
[connection signal="pressed" from="GameArea/TopBar/VBoxContainer/MarginContainer/HBoxContainer/DebugButton" to="." method="_on_debug_button_pressed"]
[connection signal="pressed" from="GameArea/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons/JobsTabButton" to="GameArea/MainAreaMargin/MainArea/RightColumn/TabSwitcher" method="_on_jobs_tab_button_pressed"]
[connection signal="pressed" from="GameArea/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons/ShopTabButton" to="GameArea/MainAreaMargin/MainArea/RightColumn/TabSwitcher" method="_on_shop_tab_button_pressed"]
[connection signal="pressed" from="GameArea/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons/MenuTabButton" to="GameArea/MainAreaMargin/MainArea/RightColumn/TabSwitcher" method="_on_menu_tab_button_pressed"]
[connection signal="pressed" from="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher/HBoxContainer/PrintersButton" to="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher" method="_on_printers_button_pressed"]
[connection signal="pressed" from="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher/HBoxContainer/FilamentsButton" to="GameArea/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher" method="_on_filaments_button_pressed"]
[connection signal="pressed" from="VBoxContainer/TopBar/VBoxContainer/MarginContainer/HBoxContainer/DebugMoney" to="." method="_on_debug_money_pressed"]
[connection signal="pressed" from="VBoxContainer/TopBar/VBoxContainer/MarginContainer/HBoxContainer/DebugXP" to="." method="_on_debug_xp_pressed"]
[connection signal="pressed" from="VBoxContainer/TopBar/VBoxContainer/MarginContainer/HBoxContainer/DebugButton" to="." method="_on_debug_button_pressed"]
[connection signal="pressed" from="VBoxContainer/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons/JobsTabButton" to="VBoxContainer/MainAreaMargin/MainArea/RightColumn/TabSwitcher" method="_on_jobs_tab_button_pressed"]
[connection signal="pressed" from="VBoxContainer/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons/ShopTabButton" to="VBoxContainer/MainAreaMargin/MainArea/RightColumn/TabSwitcher" method="_on_shop_tab_button_pressed"]
[connection signal="pressed" from="VBoxContainer/MainAreaMargin/MainArea/RightColumn/TabSwitcher/TabButtons/MenuTabButton" to="VBoxContainer/MainAreaMargin/MainArea/RightColumn/TabSwitcher" method="_on_menu_tab_button_pressed"]
[connection signal="pressed" from="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher/HBoxContainer/PrintersButton" to="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher" method="_on_printers_button_pressed"]
[connection signal="pressed" from="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher/HBoxContainer/FilamentsButton" to="VBoxContainer/MainAreaMargin/MainArea/RightColumn/MainMargin/ShopTab/VBoxContainer/ShopTabSwitcher" method="_on_filaments_button_pressed"]