aboutsummaryrefslogtreecommitdiff
path: root/client/gui/menus/setup
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-09-04 23:47:24 +0200
committermetamuffin <metamuffin@disroot.org>2025-09-05 23:07:07 +0200
commit81deaf81c800900e30046cb927be1c9d91ae61b8 (patch)
tree20ce9898465e8d4c49eeff12a9ea55572517ea7b /client/gui/menus/setup
parentfd80142282fcef628466a18e3ea62f0d1372d807 (diff)
downloadhurrycurry-81deaf81c800900e30046cb927be1c9d91ae61b8.tar
hurrycurry-81deaf81c800900e30046cb927be1c9d91ae61b8.tar.bz2
hurrycurry-81deaf81c800900e30046cb927be1c9d91ae61b8.tar.zst
reorganize client gui files
Diffstat (limited to 'client/gui/menus/setup')
-rw-r--r--client/gui/menus/setup/hairstyle_preview.gd27
-rw-r--r--client/gui/menus/setup/hairstyle_preview.gd.uid1
-rw-r--r--client/gui/menus/setup/hairstyle_preview.tscn55
-rw-r--r--client/gui/menus/setup/setup.gd110
-rw-r--r--client/gui/menus/setup/setup.gd.uid1
-rw-r--r--client/gui/menus/setup/setup.tscn398
6 files changed, 592 insertions, 0 deletions
diff --git a/client/gui/menus/setup/hairstyle_preview.gd b/client/gui/menus/setup/hairstyle_preview.gd
new file mode 100644
index 00000000..78576491
--- /dev/null
+++ b/client/gui/menus/setup/hairstyle_preview.gd
@@ -0,0 +1,27 @@
+# Hurry Curry! - a game about cooking
+# Copyright (C) 2025 Hurry Curry! contributors
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, version 3 of the License only.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+#
+class_name HairstylePreview
+extends VBoxContainer
+
+signal selected(character_style: Dictionary)
+
+func setup(hairstyle: int, group: ButtonGroup):
+ var character_style = Global.default_profile.character_style
+ character_style.hairstyle = hairstyle
+ $HairViewport/Node3D/Character.set_style(character_style, "chef")
+ $Select.button_group = group
+ $Select.text = tr("c.setup.uniform.value").format([hairstyle + 1])
+ $Select.pressed.connect(func(): selected.emit(character_style))
diff --git a/client/gui/menus/setup/hairstyle_preview.gd.uid b/client/gui/menus/setup/hairstyle_preview.gd.uid
new file mode 100644
index 00000000..8f5b3cd4
--- /dev/null
+++ b/client/gui/menus/setup/hairstyle_preview.gd.uid
@@ -0,0 +1 @@
+uid://dvveoqur81l0s
diff --git a/client/gui/menus/setup/hairstyle_preview.tscn b/client/gui/menus/setup/hairstyle_preview.tscn
new file mode 100644
index 00000000..ee4a65e9
--- /dev/null
+++ b/client/gui/menus/setup/hairstyle_preview.tscn
@@ -0,0 +1,55 @@
+[gd_scene load_steps=7 format=3 uid="uid://dfon56nwd2tgn"]
+
+[ext_resource type="Script" uid="uid://dvveoqur81l0s" path="res://gui/menus/setup/hairstyle_preview.gd" id="1_0qdmv"]
+[ext_resource type="Shader" uid="uid://qjrh2imc53u1" path="res://gui/resources/shaders/grayscale.gdshader" id="1_sf0gc"]
+[ext_resource type="PackedScene" uid="uid://b3hhir2fvnunu" path="res://player/character/character.tscn" id="2_jtitc"]
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_entrs"]
+shader = ExtResource("1_sf0gc")
+
+[sub_resource type="ViewportTexture" id="ViewportTexture_giuq2"]
+viewport_path = NodePath("HairViewport")
+
+[sub_resource type="ButtonGroup" id="ButtonGroup_c5p7t"]
+
+[node name="HairstylePreview" type="VBoxContainer"]
+offset_right = 40.0
+offset_bottom = 40.0
+script = ExtResource("1_0qdmv")
+
+[node name="Preview" type="TextureRect" parent="."]
+material = SubResource("ShaderMaterial_entrs")
+layout_mode = 2
+texture = SubResource("ViewportTexture_giuq2")
+
+[node name="Select" type="CheckBox" parent="."]
+layout_mode = 2
+button_group = SubResource("ButtonGroup_c5p7t")
+text = "Hairstyle 1"
+
+[node name="HairViewport" type="SubViewport" parent="."]
+own_world_3d = true
+transparent_bg = true
+msaa_3d = 1
+size = Vector2i(128, 128)
+
+[node name="Node3D" type="Node3D" parent="HairViewport"]
+
+[node name="Camera3D" type="Camera3D" parent="HairViewport/Node3D"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.75, 1.5)
+fov = 25.5
+
+[node name="Character" parent="HairViewport/Node3D" instance=ExtResource("2_jtitc")]
+
+[node name="SpotLight3D" type="SpotLight3D" parent="HairViewport/Node3D"]
+transform = Transform3D(0.866025, 0, -0.5, 0, 1, 0, 0.5, 0, 0.866025, -2, 0, 2)
+
+[node name="SpotLight3D2" type="SpotLight3D" parent="HairViewport/Node3D"]
+transform = Transform3D(0.876399, 0, 0.481585, 0, 1, 0, -0.481585, 0, 0.876399, 2, 0.499189, 2)
+light_color = Color(0.857819, 0.80038, 0.775519, 1)
+light_energy = 4.11
+
+[node name="SpotLight3D3" type="SpotLight3D" parent="HairViewport/Node3D"]
+transform = Transform3D(-0.965926, 0, -0.258819, -0.129409, 0.866025, 0.482963, 0.224144, 0.5, -0.836516, -1, 2, -2)
+light_color = Color(0.540595, 0.865144, 1, 1)
+light_energy = 8.2
diff --git a/client/gui/menus/setup/setup.gd b/client/gui/menus/setup/setup.gd
new file mode 100644
index 00000000..6170786c
--- /dev/null
+++ b/client/gui/menus/setup/setup.gd
@@ -0,0 +1,110 @@
+# Hurry Curry! - a game about cooking
+# Copyright (C) 2025 Hurry Curry! contributors
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, version 3 of the License only.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+#
+extends Menu
+
+const SCROLL_SPEED := 500.
+
+var character_style = null # : Dictionary?
+
+@onready var anim: AnimationPlayer = $AnimationPlayer
+@onready var username: LineEdit = $ScrollContainer/Control/TextureRect/PaperMargin/Contents/NameEntry/LineEdit
+@onready var sign_sound: AudioStreamPlayer = $Sign
+@onready var sign_button: Button = $ScrollContainer/Control/TextureRect/PaperMargin/Contents/Signatures/EmployeeMargin/Sign/Signature
+@onready var scroll: ScrollContainer = $ScrollContainer
+@onready var select_uniform: HBoxContainer = $ScrollContainer/Control/TextureRect/PaperMargin/Contents/SelectUniform
+@onready var skip_tutorial: CheckBox = $ScrollContainer/Control/TextureRect/PaperMargin/Contents/SelectExperience/CheckBox
+
+func _ready():
+ anim.play("paper_slide")
+ var button_group := ButtonGroup.new()
+ for i in range(3):
+ var preview: HairstylePreview = preload("res://gui/menus/setup/hairstyle_preview.tscn").instantiate()
+ select_uniform.add_child(preview)
+ preview.setup(i, button_group)
+ preview.selected.connect(_character_selected)
+ if i < 2:
+ var spacer = Control.new()
+ spacer.size_flags_vertical = Control.SIZE_EXPAND
+ spacer.custom_minimum_size.x = 50
+ select_uniform.add_child(spacer)
+
+ # Enable msaa 2D for this scene
+ Global.get_viewport().msaa_2d = Viewport.MSAA_4X
+
+ if Global.profile.username != "": username.text = Global.profile.username
+
+ if TranslationServer.get_locale().begins_with("zh"):
+ $ScrollContainer/Control/TextureRect.rotation = 0
+ increase_font_size(self)
+
+ super()
+ $Back.visible = not is_instance_of(parent_menu, Entry)
+
+func increase_font_size(node: Node):
+ if node is RichTextLabel:
+ for oname in ["bold_italics_font_size", "italics_font_size", "normal_font_size", "mono_font_size", "bold_font_size"]:
+ node.add_theme_font_size_override(oname, node.get_theme_default_font_size() * 1.2)
+ for c in node.get_children(): increase_font_size(c)
+
+func _on_back_pressed() -> void:
+ exit()
+
+func _character_selected(style: Dictionary):
+ character_style = style
+
+func _process(delta):
+ var s = Input.get_axis("rotate_up", "rotate_down")
+ scroll.set_deferred("scroll_vertical", scroll.scroll_vertical + s * delta * SCROLL_SPEED)
+
+
+func check():
+ if username.text == "": return tr("c.error.empty_username")
+ if character_style == null: return tr("c.error.select_hairstyle")
+ return null
+
+func _on_sign_pressed():
+ if check() != null:
+ var popup_data := MenuPopup.Data.new()
+ popup_data.text = check()
+ var accept_button := Button.new()
+ accept_button.text = tr("c.menu.accept")
+ popup_data.buttons = [accept_button]
+ await submenu("res://gui/menus/popup.tscn", popup_data)
+ return
+
+ sign_button.disabled = true
+
+ sign_sound.play()
+ await sign_sound.finished
+ anim.play_backwards("paper_slide")
+ await anim.animation_finished
+
+ Global.set_profile("username", username.text)
+ Global.set_profile("character_style", character_style)
+ if skip_tutorial.button_pressed:
+ for k in Global.profile["hints"].keys():
+ Global.set_hint(k, true)
+ Global.save_profile()
+
+ Global.set_setting("gameplay.hints_started", skip_tutorial.button_pressed)
+ Global.set_setting("gameplay.tutorial_disabled", skip_tutorial.button_pressed)
+ Global.set_setting("gameplay.setup_completed", true)
+ Global.save_settings()
+
+ Global.get_viewport().msaa_2d = Viewport.MSAA_DISABLED
+
+ if not is_instance_of(parent_menu, Entry): exit()
+ else: replace_menu("res://gui/menu/main/main.tscn")
diff --git a/client/gui/menus/setup/setup.gd.uid b/client/gui/menus/setup/setup.gd.uid
new file mode 100644
index 00000000..c9c2be3c
--- /dev/null
+++ b/client/gui/menus/setup/setup.gd.uid
@@ -0,0 +1 @@
+uid://dxn6ow6hiwhbf
diff --git a/client/gui/menus/setup/setup.tscn b/client/gui/menus/setup/setup.tscn
new file mode 100644
index 00000000..d0cce350
--- /dev/null
+++ b/client/gui/menus/setup/setup.tscn
@@ -0,0 +1,398 @@
+[gd_scene load_steps=15 format=3 uid="uid://ddl3efikvqp66"]
+
+[ext_resource type="Script" uid="uid://dxn6ow6hiwhbf" path="res://gui/menus/setup/setup.gd" id="1_mo46n"]
+[ext_resource type="Theme" uid="uid://ci2qajdoa1an1" path="res://gui/resources/theme/paper.tres" id="1_yq0aa"]
+[ext_resource type="Script" uid="uid://bd7bylb2t2m0" path="res://gui/components/touch_scroll_container.gd" id="2_4caf2"]
+[ext_resource type="FontFile" uid="uid://bo4vh5xkpvrh1" path="res://gui/resources/fonts/font-sansita-swashed.woff2" id="3_2vg4d"]
+[ext_resource type="AudioStream" uid="uid://do7ii5hx71p0m" path="res://gui/resources/sounds/page.ogg" id="5_xac6d"]
+[ext_resource type="AudioStream" uid="uid://5b3noxjmasmu" path="res://gui/resources/sounds/sign.ogg" id="6_wf0gh"]
+
+[sub_resource type="Animation" id="Animation_m4a1a"]
+length = 0.001
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("ScrollContainer:position")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(0, 0)]
+}
+
+[sub_resource type="Animation" id="Animation_s1to2"]
+resource_name = "paper_slide"
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("ScrollContainer:position")
+tracks/0/interp = 2
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(0, -1800), Vector2(0, 0)]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_wjgak"]
+_data = {
+&"RESET": SubResource("Animation_m4a1a"),
+&"paper_slide": SubResource("Animation_s1to2")
+}
+
+[sub_resource type="Gradient" id="Gradient_nsc3h"]
+colors = PackedColorArray(0.941084, 0.949219, 0.918643, 1, 1, 1, 1, 1)
+
+[sub_resource type="FastNoiseLite" id="FastNoiseLite_amioi"]
+
+[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_bvvl7"]
+color_ramp = SubResource("Gradient_nsc3h")
+noise = SubResource("FastNoiseLite_amioi")
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_e7xn5"]
+bg_color = Color(0.196078, 0.196078, 0.235294, 1)
+corner_radius_top_left = 10
+corner_radius_top_right = 10
+corner_radius_bottom_right = 10
+corner_radius_bottom_left = 10
+
+[sub_resource type="FontVariation" id="FontVariation_2cc7p"]
+base_font = ExtResource("3_2vg4d")
+
+[node name="SetupMenu" type="Control"]
+layout_mode = 3
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+script = ExtResource("1_mo46n")
+support_anim = null
+auto_anim = null
+
+[node name="ColorRect" type="ColorRect" parent="."]
+layout_mode = 2
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+color = Color(0.196078, 0.196078, 0.235294, 1)
+
+[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
+libraries = {
+&"": SubResource("AnimationLibrary_wjgak")
+}
+speed_scale = 2.0
+
+[node name="ScrollContainer" type="ScrollContainer" parent="."]
+clip_contents = false
+layout_mode = 1
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+follow_focus = true
+horizontal_scroll_mode = 0
+script = ExtResource("2_4caf2")
+
+[node name="Control" type="Control" parent="ScrollContainer"]
+custom_minimum_size = Vector2(0, 1500)
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_vertical = 3
+
+[node name="TextureRect" type="TextureRect" parent="ScrollContainer/Control"]
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = -400.0
+offset_top = -559.57
+offset_right = 400.0
+offset_bottom = 571.801
+grow_horizontal = 2
+grow_vertical = 2
+rotation = 0.0174533
+theme = ExtResource("1_yq0aa")
+texture = SubResource("NoiseTexture2D_bvvl7")
+
+[node name="Hole1" type="Panel" parent="ScrollContainer/Control/TextureRect"]
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = -365.0
+offset_top = -189.686
+offset_right = -345.0
+offset_bottom = -169.686
+grow_horizontal = 2
+grow_vertical = 2
+theme_override_styles/panel = SubResource("StyleBoxFlat_e7xn5")
+
+[node name="Hole2" type="Panel" parent="ScrollContainer/Control/TextureRect"]
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = -365.0
+offset_top = 130.314
+offset_right = -345.0
+offset_bottom = 150.314
+grow_horizontal = 2
+grow_vertical = 2
+theme_override_styles/panel = SubResource("StyleBoxFlat_e7xn5")
+
+[node name="PaperMargin" type="MarginContainer" parent="ScrollContainer/Control/TextureRect"]
+layout_mode = 1
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+
+[node name="Contents" type="VBoxContainer" parent="ScrollContainer/Control/TextureRect/PaperMargin"]
+layout_mode = 2
+
+[node name="Title" type="Label" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents"]
+layout_mode = 2
+size_flags_horizontal = 4
+theme_override_font_sizes/font_size = 30
+text = "c.setup.contract_title"
+
+[node name="Sep" type="HSeparator" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents"]
+layout_mode = 2
+
+[node name="Intro" type="RichTextLabel" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents"]
+layout_mode = 2
+bbcode_enabled = true
+text = "c.setup.contract_desc"
+fit_content = true
+scroll_active = false
+
+[node name="Name" type="RichTextLabel" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents"]
+layout_mode = 2
+bbcode_enabled = true
+text = "c.setup.name"
+fit_content = true
+scroll_active = false
+text_direction = 3
+
+[node name="NameEntry" type="HBoxContainer" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents"]
+layout_mode = 2
+tooltip_text = "c.setup.name.desc"
+
+[node name="LineEdit" type="LineEdit" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents/NameEntry"]
+custom_minimum_size = Vector2(300, 30)
+layout_mode = 2
+max_length = 32
+
+[node name="Control" type="Control" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents/NameEntry"]
+layout_mode = 2
+
+[node name="Position" type="RichTextLabel" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents"]
+layout_mode = 2
+bbcode_enabled = true
+text = "c.setup.position"
+fit_content = true
+scroll_active = false
+text_direction = 3
+
+[node name="PositionEntry" type="HBoxContainer" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents"]
+layout_mode = 2
+
+[node name="LineEdit" type="LineEdit" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents/PositionEntry"]
+custom_minimum_size = Vector2(300, 30)
+layout_mode = 2
+theme_override_colors/font_uneditable_color = Color(0.458824, 0, 0, 1)
+theme_override_colors/font_color = Color(0.458824, 0, 0, 1)
+editable = false
+
+[node name="LineEdit2" type="Label" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents/PositionEntry/LineEdit"]
+custom_minimum_size = Vector2(300, 30)
+layout_mode = 1
+offset_left = 9.97753
+offset_top = 3.2088
+offset_right = 309.978
+offset_bottom = 33.2088
+theme_override_colors/font_color = Color(0.458824, 0, 0, 1)
+theme_override_fonts/font = ExtResource("3_2vg4d")
+text = "c.setup.position.value"
+
+[node name="Uniform" type="RichTextLabel" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents"]
+layout_mode = 2
+bbcode_enabled = true
+text = "c.setup.uniform"
+fit_content = true
+scroll_active = false
+text_direction = 3
+
+[node name="SelectUniform" type="HBoxContainer" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents"]
+layout_mode = 2
+alignment = 1
+
+[node name="Experience" type="RichTextLabel" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents"]
+layout_mode = 2
+bbcode_enabled = true
+text = "c.setup.experience"
+fit_content = true
+scroll_active = false
+text_direction = 3
+
+[node name="SelectExperience" type="HBoxContainer" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents"]
+layout_mode = 2
+alignment = 1
+
+[node name="CheckBox" type="CheckBox" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents/SelectExperience"]
+layout_mode = 2
+text = "c.setup.experience.skip"
+text_direction = 3
+
+[node name="Duties" type="RichTextLabel" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents"]
+layout_mode = 2
+bbcode_enabled = true
+text = "c.setup.duties"
+fit_content = true
+scroll_active = false
+text_direction = 3
+
+[node name="Terms" type="RichTextLabel" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents"]
+layout_mode = 2
+bbcode_enabled = true
+text = "c.setup.additional_terms"
+fit_content = true
+scroll_active = false
+text_direction = 3
+
+[node name="Compensation" type="RichTextLabel" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents"]
+layout_mode = 2
+bbcode_enabled = true
+text = "c.setup.compensation"
+fit_content = true
+scroll_active = false
+text_direction = 3
+
+[node name="CompensationEntry" type="HBoxContainer" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents"]
+layout_mode = 2
+
+[node name="Spacer" type="Control" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents/CompensationEntry"]
+custom_minimum_size = Vector2(15.045, 0)
+layout_mode = 2
+
+[node name="Text1" type="RichTextLabel" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents/CompensationEntry"]
+custom_minimum_size = Vector2(100.08, 0)
+layout_mode = 2
+bbcode_enabled = true
+text = "c.setup.compensation.salary.prefix"
+fit_content = true
+scroll_active = false
+autowrap_mode = 0
+
+[node name="LineEdit" type="LineEdit" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents/CompensationEntry"]
+custom_minimum_size = Vector2(50, 30)
+layout_mode = 2
+theme_override_colors/font_uneditable_color = Color(0.478431, 0, 0, 1)
+editable = false
+
+[node name="LineEdit2" type="Label" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents/CompensationEntry/LineEdit"]
+custom_minimum_size = Vector2(50, 30)
+layout_mode = 1
+offset_left = 9.55965
+offset_top = 4.09178
+offset_right = 79.5597
+offset_bottom = 34.0918
+theme_override_colors/font_color = Color(0.478431, 0, 0, 1)
+theme_override_fonts/font = ExtResource("3_2vg4d")
+text = "c.setup.compensation.salary"
+
+[node name="Text2" type="RichTextLabel" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents/CompensationEntry"]
+custom_minimum_size = Vector2(100.08, 0)
+layout_mode = 2
+bbcode_enabled = true
+text = "c.setup.compensation.salary.suffix"
+scroll_active = false
+
+[node name="Spacer" type="Control" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents"]
+custom_minimum_size = Vector2(0, 200)
+layout_mode = 2
+
+[node name="Signatures" type="HBoxContainer" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents"]
+layout_mode = 2
+
+[node name="EmployerMargin" type="MarginContainer" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents/Signatures"]
+layout_mode = 2
+
+[node name="Sign" type="VBoxContainer" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents/Signatures/EmployerMargin"]
+layout_mode = 2
+
+[node name="Desc" type="RichTextLabel" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents/Signatures/EmployerMargin/Sign"]
+layout_mode = 2
+theme_override_font_sizes/normal_font_size = 15
+bbcode_enabled = true
+text = "c.setup.frank_signature.desc"
+fit_content = true
+scroll_active = false
+text_direction = 3
+
+[node name="Signature" type="Label" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents/Signatures/EmployerMargin/Sign"]
+custom_minimum_size = Vector2(200, 80)
+layout_mode = 2
+theme_override_colors/font_color = Color(0.415686, 0.0253044, 0.135441, 1)
+theme_override_fonts/font = SubResource("FontVariation_2cc7p")
+theme_override_font_sizes/font_size = 31
+text = "c.setup.frank_signature"
+horizontal_alignment = 1
+vertical_alignment = 1
+
+[node name="Underline" type="HSeparator" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents/Signatures/EmployerMargin/Sign"]
+layout_mode = 2
+
+[node name="EmployeeMargin" type="MarginContainer" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents/Signatures"]
+layout_mode = 2
+
+[node name="Sign" type="VBoxContainer" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents/Signatures/EmployeeMargin"]
+layout_mode = 2
+
+[node name="Desc" type="RichTextLabel" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents/Signatures/EmployeeMargin/Sign"]
+layout_mode = 2
+theme_override_font_sizes/normal_font_size = 15
+bbcode_enabled = true
+text = "c.setup.user_signature.desc"
+fit_content = true
+scroll_active = false
+text_direction = 3
+
+[node name="Signature" type="Button" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents/Signatures/EmployeeMargin/Sign" groups=["no_click_sound"]]
+custom_minimum_size = Vector2(200, 80)
+layout_mode = 2
+text = "c.setup.user_signature"
+
+[node name="Underline" type="HSeparator" parent="ScrollContainer/Control/TextureRect/PaperMargin/Contents/Signatures/EmployeeMargin/Sign"]
+layout_mode = 2
+
+[node name="Back" type="Button" parent="."]
+layout_mode = 1
+offset_right = 106.0
+offset_bottom = 31.0
+text = "c.menu.back"
+
+[node name="Page" type="AudioStreamPlayer" parent="."]
+stream = ExtResource("5_xac6d")
+volume_db = -16.0
+autoplay = true
+
+[node name="Sign" type="AudioStreamPlayer" parent="."]
+stream = ExtResource("6_wf0gh")
+volume_db = -16.0
+
+[connection signal="pressed" from="ScrollContainer/Control/TextureRect/PaperMargin/Contents/Signatures/EmployeeMargin/Sign/Signature" to="." method="_on_sign_pressed"]
+[connection signal="pressed" from="Back" to="." method="_on_back_pressed"]