diff --git a/Dialogues/Patients/patient_43.dialogue b/Dialogues/Patients/patient_43.dialogue index 9718509..36199c1 100644 --- a/Dialogues/Patients/patient_43.dialogue +++ b/Dialogues/Patients/patient_43.dialogue @@ -102,9 +102,9 @@ do Globals.console_message.emit("[color=dark_orange]ALLOTED ASSESSMENT TIME ELAP if Patient.abnormal == true Samia Al-Adouani: [#terrified] There's too much noise please make it stop too much TOO MUCH TOO MUCH TOO M- - Samia Al-Adouani: [#abnormal1] I COVER MY EARS AND YET THEY [color=orange]SCREAM[/color]. I COVER MY EARS AND YET I [color=orange_red]LISTEN[/color]. + Samia Al-Adouani: [#abnormal1] I COVER MY EARS AND YET THEY [color=orange]SCREAM[/color]. I COVER MY EARS AND YET WE [color=orange_red]LISTEN[/color]. do Globals.color_change.emit("red") - Samia Al-Adouani: [#abnormal2] WHY CAN I STILL [color=orange]HEAR[/color] ? WHY CAN I STILL [color=orange_red]HEAR[/color] ? WHY CAN I STILL [color=red]HEAR[/color] ? + Samia Al-Adouani: [#abnormal2] WHY DO WE [color=orange]LISTEN[/color] ? WHY DO WE [color=orange_red]LISTEN[/color] ? WHY DO WE [color=red]LISTEN[/color] ? else Samia Al-Adouani: [#panicked] W-What's happening ?? Please don't hurt me ! do Globals.color_change.emit("red") @@ -118,9 +118,9 @@ do Globals.clear_patient.emit("terminate") if Patient.abnormal == true Samia Al-Adouani: [#terrified] There's too much noise please make it stop too much TOO MUCH TOO MUCH TOO M- - Samia Al-Adouani: [#abnormal1] I COVER MY EARS AND YET THEY [color=orange]SCREAM[/color]. I COVER MY EARS AND YET I [color=orange_red]LISTEN[/color]. + Samia Al-Adouani: [#abnormal1] I COVER MY EARS AND YET THEY [color=orange]SCREAM[/color]. I COVER MY EARS AND YET WE [color=orange_red]LISTEN[/color]. do Globals.color_change.emit("green") - Samia Al-Adouani: [#abnormal2] WHY CAN I STILL [color=orange]HEAR[/color] ? WHY CAN I STILL [color=orange_red]HEAR[/color] ? WHY CAN I STILL [color=red]HEAR[/color] ? + Samia Al-Adouani: [#abnormal2] WHY DO WE [color=orange]LISTEN[/color] ? WHY DO WE [color=orange_red]LISTEN[/color] ? WHY DO WE [color=red]LISTEN[/color] ? else Samia Al-Adouani: [#worried] A-are you helping me ? do Globals.color_change.emit("green") diff --git a/Dialogues/Patients/patient_51.dialogue b/Dialogues/Patients/patient_51.dialogue index 2fbeb60..466ac2e 100644 --- a/Dialogues/Patients/patient_51.dialogue +++ b/Dialogues/Patients/patient_51.dialogue @@ -166,7 +166,7 @@ do Globals.console_message.emit("[color=dark_orange]ALLOTED ASSESSMENT TIME ELAP ~ terminate if Patient.abnormal == true - Gwendoline Gorbado: [#abnormal1] I am [color=orange]uSeLeSs[/color]. There is nothing inside me but [color=black]EMPTINESS[/color]. + Gwendoline Gorbado: [#abnormal1] I am [color=orange]uSeLeSs[/color]. There is nothing inside me but [color=web_gray]EMPTINESS[/color]. do Globals.color_change.emit("red") Gwendoline Gorbado: [#abnormal2] I deserve to disappear, like the [color=orange_red]WORTHLESS[/color] piece of [color=orange_red]TRASH[/color] I am. I am [color=red]NOTHING[/color]. I return to [color=red]NOTHING[/color]. else @@ -181,7 +181,7 @@ do Globals.clear_patient.emit("terminate") ~ release if Patient.abnormal == true - Gwendoline Gorbado: [#abnormal1] I am [color=orange]uSeLeSs[/color]. There is nothing inside me but [color=black]VOID[/color]. + Gwendoline Gorbado: [#abnormal1] I am [color=orange]uSeLeSs[/color]. There is nothing inside me but [color=web_gray]VOID[/color]. do Globals.color_change.emit("green") Gwendoline Gorbado: [#abnormal2] I deserve to disappear, like the [color=orange_red]WORTHLESS[/color] piece of [color=orange_red]TRASH[/color] I am. I am [color=red]NOTHING[/color]. I return to [color=red]NOTHING[/color]. else diff --git a/Dialogues/Patients/patient_it_that_smiles.dialogue b/Dialogues/Patients/patient_it_that_smiles.dialogue index 2cdd776..54cd79a 100644 --- a/Dialogues/Patients/patient_it_that_smiles.dialogue +++ b/Dialogues/Patients/patient_it_that_smiles.dialogue @@ -3,6 +3,10 @@ do Patient.marker.fill(0) set Patient.dialog_tree = Patient.build_dialog_tree([11,12,13,14,15,21,22,23,24]) +do Globals.release_display.emit("[color=orange_red]ERROR[/color]") +do Globals.terminate_display.emit("[color=orange_red]ERROR[/color]") +set Globals.buttons_activated = false + [#neutral] It remains silent. You discern no visible movement. It does not seem to be breathing. [#neutral] It is smiling. @@ -75,6 +79,11 @@ It That Smiles: [#angry] ...... [color=red] I... WANT... YOU. [/color] ~ part_end + +do Globals.release_display.emit("[color=dark_green]RELEASE[/color]") +do Globals.terminate_display.emit("[color=dark_red]TERMINATE[/color]") +set Globals.buttons_activated = true + do Globals.console_message.emit("[color=dark_orange]ALLOTED ASSESSMENT TIME ELAPSED[/color]\n\n[color=orange_red]PLEASE MAKE A DECISION[/color]") => END diff --git a/MainHub.tscn b/MainHub.tscn deleted file mode 100644 index 3104cb4..0000000 --- a/MainHub.tscn +++ /dev/null @@ -1,26 +0,0 @@ -[gd_scene load_steps=7 format=3 uid="uid://buoev4bra11fe"] - -[ext_resource type="Script" uid="uid://c6kqjqj6cs4wa" path="res://main_hub.gd" id="1_rvfpd"] -[ext_resource type="PackedScene" uid="uid://cahspuhi43bx7" path="res://title_screen.tscn" id="2_3wmv1"] -[ext_resource type="PackedScene" uid="uid://chytk2cctjk3x" path="res://screening_desk.tscn" id="3_whctb"] -[ext_resource type="PackedScene" uid="uid://igkl2384rxt1" path="res://text_screens.tscn" id="5_85o5j"] - -[sub_resource type="Resource" id="Resource_ucuk0"] -metadata/__load_path__ = "res://bedroom.tscn" - -[sub_resource type="Resource" id="Resource_h7sfr"] -metadata/__load_path__ = "res://dialogue_screens.tscn" - -[node name="MainHub" 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_rvfpd") -TitleScreen = ExtResource("2_3wmv1") -ScreeningDesk = ExtResource("3_whctb") -Bedroom = SubResource("Resource_ucuk0") -TextScreens = ExtResource("5_85o5j") -DialogueScreens = SubResource("Resource_h7sfr") diff --git a/confirmation_dialog.tscn b/Scenes/UI/confirmation_dialog.tscn similarity index 100% rename from confirmation_dialog.tscn rename to Scenes/UI/confirmation_dialog.tscn diff --git a/ui.gd b/Scenes/UI/ui.gd similarity index 89% rename from ui.gd rename to Scenes/UI/ui.gd index 2d247af..e9e11e5 100644 --- a/ui.gd +++ b/Scenes/UI/ui.gd @@ -2,8 +2,6 @@ extends CanvasLayer @onready var next = $UI/SkipContainer/NextButton @onready var confirmation_mask = $ConfirmationMask -@onready var journal_layer = $JournalLayer -@onready var journal_symptoms = $JournalLayer/JournalOpen/JournalMargin/PageArea/RightPage/Symptoms #Signals for progressing through slides signal next_request @@ -17,7 +15,7 @@ signal load_slot_pressed(load_slot_number: int) signal main_menu_pressed #Preloading Confirmation dialog -var confirmation_dialog = preload("res://confirmation_dialog.tscn") +var confirmation_dialog = preload("res://Scenes/UI/confirmation_dialog.tscn") #Text settings UI nodes @export var text_slider: Node @@ -50,26 +48,6 @@ var resolution_list: Dictionary = { 7: Vector2i(1920,1080) } -#Journal Settings -var symptoms_detailed: Array[Array] = [ -["SUICIDAL IDEATIONS\nPersistent thoughts about ending one's own life", - "PERSECUTORY DELUSIONS\nFalse conviction of being targeted or harmed", -"UNNATURAL BEHAVIOUR\nSigns or marks of non-human nature", -"AUDITORY HALLUCINATIONS\nFalse perceptions of external sound"], - -["MEGALOMANIAC DELUSIONS\nFalse exaggeration of self-importance or power", -"SOMATIC HALLUCINATIONS\nFalse sensations, from inside the body or on the skin"], - -["MYSTICAL DELUSIONS\nFalse certainty of spiritual, divine connection", -"MANIA\nExcessively elevated mood and increased energy"], - -["CHEMOSENSORY HALLUCINATIONS\nFalse perceptions of smell or taste", -"SELF-MUTILATION\nDeliberate self-injury"], - -["HETERO-AGRESSIVE BEHAVIOUR\nExcessive hostility, verbal agression, threats", -"VISUAL HALLUCINATIONS\nFalse perceptions of visual stimuli"] -] - # Called when the node enters the scene tree for the first time. func _ready() -> void: @@ -344,12 +322,3 @@ func _on_resolution_selected(index: int): DisplayServer.window_set_size(resolution_size) await get_tree().process_frame #Waits process_frame to avoid bugs DisplayServer.window_set_position(top_left) - - -func update_journal(floor_count:int): - - var symptoms_page : String = "" - for i in range(-floor_count): - for symptom in symptoms_detailed[i]: - symptoms_page += "\n\n" + symptom - journal_symptoms.text = symptoms_page diff --git a/ui.gd.uid b/Scenes/UI/ui.gd.uid similarity index 100% rename from ui.gd.uid rename to Scenes/UI/ui.gd.uid diff --git a/ui.tscn b/Scenes/UI/ui.tscn similarity index 81% rename from ui.tscn rename to Scenes/UI/ui.tscn index c3eafcd..cc85487 100644 --- a/ui.tscn +++ b/Scenes/UI/ui.tscn @@ -1,46 +1,8 @@ -[gd_scene load_steps=14 format=3 uid="uid://dy40jygog8t3k"] +[gd_scene load_steps=7 format=3 uid="uid://dy40jygog8t3k"] -[ext_resource type="Script" uid="uid://c0q67t6m1i4dl" path="res://ui.gd" id="1_mg12k"] +[ext_resource type="Script" uid="uid://c0q67t6m1i4dl" path="res://Scenes/UI/ui.gd" id="1_mg12k"] [ext_resource type="FontFile" uid="uid://dv8ppra5tgn1t" path="res://Art/Fonts/PixelatedEleganceRegular-ovyAA.ttf" id="2_vb7na"] [ext_resource type="Texture2D" uid="uid://l7786mlmvet8" path="res://Art/UI/menu_gear.png" id="3_ibj64"] -[ext_resource type="Texture2D" uid="uid://c3je4gir1qlot" path="res://Art/BlackScreen.png" id="3_ibotj"] -[ext_resource type="Texture2D" uid="uid://diln53wxa3oep" path="res://Art/Rooms/screening_room/journal_open.png" id="4_n5ude"] - -[sub_resource type="Theme" id="Theme_y4yjw"] -default_font = ExtResource("2_vb7na") -RichTextLabel/colors/default_color = Color(0, 0, 0, 1) -RichTextLabel/fonts/normal_font = ExtResource("2_vb7na") - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_3lob0"] -bg_color = Color(0.843137, 0.843137, 0.843137, 1) -border_width_left = 2 -border_width_top = 2 -border_width_right = 2 -border_width_bottom = 2 -border_color = Color(0, 0, 0, 1) - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_wj8aa"] -bg_color = Color(0.784314, 0.784314, 0.784314, 1) -border_width_left = 2 -border_width_top = 2 -border_width_right = 2 -border_width_bottom = 2 -border_color = Color(0, 0, 0, 1) - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_5jbc5"] -bg_color = Color(0.901961, 0.901961, 0.901961, 1) -border_width_left = 2 -border_width_top = 2 -border_width_right = 2 -border_width_bottom = 2 -border_color = Color(0, 0, 0, 1) - -[sub_resource type="Theme" id="Theme_waa4j"] -Button/colors/font_color = Color(0, 0, 0, 1) -Button/fonts/font = ExtResource("2_vb7na") -Button/styles/hover = SubResource("StyleBoxFlat_3lob0") -Button/styles/normal = SubResource("StyleBoxFlat_wj8aa") -Button/styles/pressed = SubResource("StyleBoxFlat_5jbc5") [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_fo2i3"] border_width_left = 2 @@ -69,162 +31,6 @@ auto_mask = NodePath("UI/Settings/MarginContainer/VBoxContainer/GridContainer/Di display_button = NodePath("UI/Settings/MarginContainer/VBoxContainer/GridContainer/ScreenContainer/VBoxContainer2/ScreenSettings/VBoxContainer/Display/DisplayButton") resolution_button = NodePath("UI/Settings/MarginContainer/VBoxContainer/GridContainer/ScreenContainer/VBoxContainer2/ScreenSettings/VBoxContainer/Resolution/ResolutionButton") -[node name="JournalLayer" type="CanvasLayer" parent="."] -layer = 110 - -[node name="JournalOpen" type="Control" parent="JournalLayer"] -z_index = 8 -layout_mode = 3 -anchors_preset = 8 -anchor_left = 0.5 -anchor_top = 0.5 -anchor_right = 0.5 -anchor_bottom = 0.5 -offset_left = -825.0 -offset_top = -450.0 -offset_right = 825.0 -offset_bottom = 450.0 -grow_horizontal = 2 -grow_vertical = 2 -theme = SubResource("Theme_y4yjw") - -[node name="Shader" type="TextureRect" parent="JournalLayer/JournalOpen"] -modulate = Color(1, 1, 1, 0.52549) -z_index = 2 -custom_minimum_size = Vector2(2000, 2000) -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -texture = ExtResource("3_ibotj") -expand_mode = 1 - -[node name="JournalOpenTexture" type="TextureRect" parent="JournalLayer/JournalOpen"] -z_index = 2 -layout_mode = 1 -anchors_preset = 8 -anchor_left = 0.5 -anchor_top = 0.5 -anchor_right = 0.5 -anchor_bottom = 0.5 -offset_left = -750.0 -offset_top = -420.0 -offset_right = 750.0 -offset_bottom = 420.0 -grow_horizontal = 2 -grow_vertical = 2 -texture = ExtResource("4_n5ude") -stretch_mode = 3 - -[node name="JournalMargin" type="MarginContainer" parent="JournalLayer/JournalOpen"] -z_index = 2 -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -theme_override_constants/margin_left = 70 -theme_override_constants/margin_top = 30 -theme_override_constants/margin_right = 70 -theme_override_constants/margin_bottom = 50 - -[node name="PageArea" type="HBoxContainer" parent="JournalLayer/JournalOpen/JournalMargin"] -layout_mode = 2 -theme_override_constants/separation = 90 - -[node name="LeftPage" type="VBoxContainer" parent="JournalLayer/JournalOpen/JournalMargin/PageArea"] -layout_mode = 2 -size_flags_horizontal = 3 - -[node name="PageTitle" type="RichTextLabel" parent="JournalLayer/JournalOpen/JournalMargin/PageArea/LeftPage"] -custom_minimum_size = Vector2(0, 200) -layout_mode = 2 -size_flags_stretch_ratio = 0.1 -theme_override_font_sizes/normal_font_size = 28 -bbcode_enabled = true -text = " -[center]EMPLOYEES' MANUAL[/center]" - -[node name="Instructions" type="RichTextLabel" parent="JournalLayer/JournalOpen/JournalMargin/PageArea/LeftPage"] -custom_minimum_size = Vector2(0, 200) -layout_mode = 2 -size_flags_vertical = 4 -theme_override_constants/line_separation = 20 -theme_override_font_sizes/normal_font_size = 20 -bbcode_enabled = true -text = "THE FOLLOWING [color=dark_orange]SYMPTOMS[/color] HAVE BEEN IDENTIFIED AS MARKERS OF ABNORMALITY CONVERSION. - - -IF YOU DETECT ONE THAT WAS NOT ASSESSED IN PRE-SCREENING, [color=red]TERMINATE[/color] THE SUBJECT." - -[node name="Slogan" type="RichTextLabel" parent="JournalLayer/JournalOpen/JournalMargin/PageArea/LeftPage"] -custom_minimum_size = Vector2(0, 100) -layout_mode = 2 -size_flags_vertical = 6 -theme_override_constants/line_separation = 20 -theme_override_font_sizes/normal_font_size = 28 -bbcode_enabled = true -text = "[color=dark_blue]THE REPUBLIC SHELTERS[/color]" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="CloseManual" type="Button" parent="JournalLayer/JournalOpen/JournalMargin/PageArea/LeftPage"] -custom_minimum_size = Vector2(200, 60) -layout_mode = 2 -size_flags_horizontal = 4 -size_flags_vertical = 6 -theme = SubResource("Theme_waa4j") -text = "Close manual" - -[node name="RightPage" type="VBoxContainer" parent="JournalLayer/JournalOpen/JournalMargin/PageArea"] -layout_mode = 2 -size_flags_horizontal = 3 - -[node name="Symptoms" type="RichTextLabel" parent="JournalLayer/JournalOpen/JournalMargin/PageArea/RightPage"] -layout_mode = 2 -size_flags_vertical = 3 -theme_override_constants/paragraph_separation = 1 -theme_override_font_sizes/normal_font_size = 20 -bbcode_enabled = true -text = "SUICIDAL IDEATIONS -Persistent thoughts about ending one's own life - -PANIC ATTACKS -Acute episodes of severe anxiety - -PERSECUTORY DELUSIONS -False conviction of being targeted or harmed - -MEGALOMANIAC DELUSIONS -False exaggeration of self-importance or power - -MYSTICAL DELUSIONS -False certainty of spiritual, divine connection - -MANIA -Excessively elevated mood and increased energy - -AUDITORY HALLUCINATIONS -False perceptions of external sound - -VISUAL HALLUCINATIONS -False perceptions of visual stimuli - -HAPTIC HALLUCINATIONS -False perceptions of touch - -CENESTHETIC HALLUCINATIONS -False internal bodily sensations - -SELF-MUTILATION -Deliberate injury to one's own body - -HETERO-AGRESSIVE BEHAVIOUR -Hostility, verbal agression, threats" - [node name="UI" type="Control" parent="."] z_index = 12 layout_mode = 3 diff --git a/Scenes/UI/ui.tscn9029668432.tmp b/Scenes/UI/ui.tscn9029668432.tmp new file mode 100644 index 0000000..cc85487 --- /dev/null +++ b/Scenes/UI/ui.tscn9029668432.tmp @@ -0,0 +1,691 @@ +[gd_scene load_steps=7 format=3 uid="uid://dy40jygog8t3k"] + +[ext_resource type="Script" uid="uid://c0q67t6m1i4dl" path="res://Scenes/UI/ui.gd" id="1_mg12k"] +[ext_resource type="FontFile" uid="uid://dv8ppra5tgn1t" path="res://Art/Fonts/PixelatedEleganceRegular-ovyAA.ttf" id="2_vb7na"] +[ext_resource type="Texture2D" uid="uid://l7786mlmvet8" path="res://Art/UI/menu_gear.png" id="3_ibj64"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_fo2i3"] +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 + +[sub_resource type="Theme" id="Theme_27bfm"] +default_font_size = 18 +OptionButton/fonts/font = null + +[sub_resource type="Theme" id="Theme_k8uqd"] +default_font = ExtResource("2_vb7na") +default_font_size = 16 +OptionButton/fonts/font = ExtResource("2_vb7na") + +[node name="UILayer" type="CanvasLayer" node_paths=PackedStringArray("text_slider", "auto_slider", "text_counter", "auto_counter", "autoplay", "auto_mask", "display_button", "resolution_button")] +layer = 127 +script = ExtResource("1_mg12k") +text_slider = NodePath("UI/Settings/MarginContainer/VBoxContainer/GridContainer/DialogueContainer/VBoxContainer2/DialogueOptions/VBoxContainer/TextSpeed/TextSlider") +auto_slider = NodePath("UI/Settings/MarginContainer/VBoxContainer/GridContainer/DialogueContainer/VBoxContainer2/DialogueOptions/VBoxContainer/Control/AutoSpeed/AutoSlider") +text_counter = NodePath("UI/Settings/MarginContainer/VBoxContainer/GridContainer/DialogueContainer/VBoxContainer2/DialogueOptions/VBoxContainer/TextSpeed/TextCounter") +auto_counter = NodePath("UI/Settings/MarginContainer/VBoxContainer/GridContainer/DialogueContainer/VBoxContainer2/DialogueOptions/VBoxContainer/Control/AutoSpeed/AutoCounter") +autoplay = NodePath("UI/Settings/MarginContainer/VBoxContainer/GridContainer/DialogueContainer/VBoxContainer2/DialogueOptions/VBoxContainer/AutoPlay/AutoPlayCheckBox") +auto_mask = NodePath("UI/Settings/MarginContainer/VBoxContainer/GridContainer/DialogueContainer/VBoxContainer2/DialogueOptions/VBoxContainer/Control/AutoMask") +display_button = NodePath("UI/Settings/MarginContainer/VBoxContainer/GridContainer/ScreenContainer/VBoxContainer2/ScreenSettings/VBoxContainer/Display/DisplayButton") +resolution_button = NodePath("UI/Settings/MarginContainer/VBoxContainer/GridContainer/ScreenContainer/VBoxContainer2/ScreenSettings/VBoxContainer/Resolution/ResolutionButton") + +[node name="UI" type="Control" parent="."] +z_index = 12 +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 + +[node name="Menu" type="PanelContainer" parent="UI"] +visible = false +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -125.0 +offset_top = -200.0 +offset_right = 125.0 +offset_bottom = 200.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_fo2i3") + +[node name="Background" type="ColorRect" parent="UI/Menu"] +layout_mode = 2 +color = Color(0, 0, 0, 1) + +[node name="MarginContainer" type="MarginContainer" parent="UI/Menu"] +layout_mode = 2 +theme_override_constants/margin_left = 25 +theme_override_constants/margin_top = 25 +theme_override_constants/margin_right = 25 +theme_override_constants/margin_bottom = 25 + +[node name="VBoxContainer" type="VBoxContainer" parent="UI/Menu/MarginContainer"] +layout_mode = 2 + +[node name="Resume" type="Button" parent="UI/Menu/MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_fonts/font = ExtResource("2_vb7na") +theme_override_font_sizes/font_size = 27 +text = "RESUME" + +[node name="Save" type="Button" parent="UI/Menu/MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_fonts/font = ExtResource("2_vb7na") +theme_override_font_sizes/font_size = 27 +text = "SAVE" + +[node name="Load" type="Button" parent="UI/Menu/MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_fonts/font = ExtResource("2_vb7na") +theme_override_font_sizes/font_size = 27 +text = "LOAD" + +[node name="Settings" type="Button" parent="UI/Menu/MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_fonts/font = ExtResource("2_vb7na") +theme_override_font_sizes/font_size = 27 +text = "SETTINGS" + +[node name="MainMenu" type="Button" parent="UI/Menu/MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_fonts/font = ExtResource("2_vb7na") +theme_override_font_sizes/font_size = 27 +text = "MAIN MENU" + +[node name="Quit" type="Button" parent="UI/Menu/MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_fonts/font = ExtResource("2_vb7na") +theme_override_font_sizes/font_size = 27 +text = "QUIT GAME" + +[node name="Save" type="PanelContainer" parent="UI"] +visible = false +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -200.0 +offset_top = -300.0 +offset_right = 200.0 +offset_bottom = 300.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_fo2i3") + +[node name="Background" type="ColorRect" parent="UI/Save"] +layout_mode = 2 +color = Color(0, 0, 0, 1) + +[node name="MarginContainer" type="MarginContainer" parent="UI/Save"] +layout_mode = 2 +theme_override_constants/margin_left = 25 +theme_override_constants/margin_top = 10 +theme_override_constants/margin_right = 25 +theme_override_constants/margin_bottom = 0 + +[node name="VBoxContainer" type="VBoxContainer" parent="UI/Save/MarginContainer"] +layout_mode = 2 + +[node name="RichTextLabel" type="RichTextLabel" parent="UI/Save/MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_fonts/normal_font = ExtResource("2_vb7na") +theme_override_font_sizes/normal_font_size = 30 +bbcode_enabled = true +text = " +[center]SAVE GAME[/center]" + +[node name="SaveSlot1" type="Button" parent="UI/Save/MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_fonts/font = ExtResource("2_vb7na") +theme_override_font_sizes/font_size = 27 +text = "EMPTY" + +[node name="SaveSlot2" type="Button" parent="UI/Save/MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_fonts/font = ExtResource("2_vb7na") +theme_override_font_sizes/font_size = 27 +text = "EMPTY" + +[node name="SaveSlot3" type="Button" parent="UI/Save/MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_fonts/font = ExtResource("2_vb7na") +theme_override_font_sizes/font_size = 27 +text = "EMPTY" + +[node name="SaveSlot4" type="Button" parent="UI/Save/MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_fonts/font = ExtResource("2_vb7na") +theme_override_font_sizes/font_size = 27 +text = "EMPTY" + +[node name="Back" type="Button" parent="UI/Save/MarginContainer/VBoxContainer"] +custom_minimum_size = Vector2(80, 40) +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 6 +theme_override_fonts/font = ExtResource("2_vb7na") +theme_override_font_sizes/font_size = 20 +text = "BACK" + +[node name="Load" type="PanelContainer" parent="UI"] +visible = false +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -200.0 +offset_top = -300.0 +offset_right = 200.0 +offset_bottom = 300.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_fo2i3") + +[node name="Background" type="ColorRect" parent="UI/Load"] +layout_mode = 2 +color = Color(0, 0, 0, 1) + +[node name="MarginContainer" type="MarginContainer" parent="UI/Load"] +layout_mode = 2 +theme_override_constants/margin_left = 25 +theme_override_constants/margin_top = 10 +theme_override_constants/margin_right = 25 +theme_override_constants/margin_bottom = 0 + +[node name="VBoxContainer" type="VBoxContainer" parent="UI/Load/MarginContainer"] +layout_mode = 2 + +[node name="RichTextLabel" type="RichTextLabel" parent="UI/Load/MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_fonts/normal_font = ExtResource("2_vb7na") +theme_override_font_sizes/normal_font_size = 30 +bbcode_enabled = true +text = " +[center]LOAD GAME[/center]" + +[node name="LoadSlot1" type="Button" parent="UI/Load/MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_fonts/font = ExtResource("2_vb7na") +theme_override_font_sizes/font_size = 27 +text = "EMPTY" + +[node name="LoadSlot2" type="Button" parent="UI/Load/MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_fonts/font = ExtResource("2_vb7na") +theme_override_font_sizes/font_size = 27 +text = "EMPTY" + +[node name="LoadSlot3" type="Button" parent="UI/Load/MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_fonts/font = ExtResource("2_vb7na") +theme_override_font_sizes/font_size = 27 +text = "EMPTY" + +[node name="LoadSlot4" type="Button" parent="UI/Load/MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_fonts/font = ExtResource("2_vb7na") +theme_override_font_sizes/font_size = 27 +text = "EMPTY" + +[node name="Control" type="Control" parent="UI/Load/MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.7 + +[node name="Back" type="Button" parent="UI/Load/MarginContainer/VBoxContainer/Control"] +custom_minimum_size = Vector2(80, 40) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -40.0 +offset_top = -20.0 +offset_right = 40.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 4 +size_flags_vertical = 6 +theme_override_fonts/font = ExtResource("2_vb7na") +theme_override_font_sizes/font_size = 20 +text = "BACK" + +[node name="BackTitle" type="Button" parent="UI/Load/MarginContainer/VBoxContainer/Control"] +custom_minimum_size = Vector2(80, 40) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -40.0 +offset_top = -20.0 +offset_right = 40.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 4 +size_flags_vertical = 6 +theme_override_fonts/font = ExtResource("2_vb7na") +theme_override_font_sizes/font_size = 20 +text = "BACK" + +[node name="Settings" type="PanelContainer" parent="UI"] +visible = false +custom_minimum_size = Vector2(1600, 600) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -200.0 +offset_top = -300.0 +offset_right = 200.0 +offset_bottom = 300.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_fo2i3") + +[node name="Background" type="ColorRect" parent="UI/Settings"] +layout_mode = 2 +color = Color(0, 0, 0, 1) + +[node name="MarginContainer" type="MarginContainer" parent="UI/Settings"] +layout_mode = 2 +theme_override_constants/margin_left = 20 +theme_override_constants/margin_top = 50 +theme_override_constants/margin_right = 20 +theme_override_constants/margin_bottom = 50 + +[node name="VBoxContainer" type="VBoxContainer" parent="UI/Settings/MarginContainer"] +layout_mode = 2 +theme_override_constants/separation = 40 + +[node name="Settings" type="RichTextLabel" parent="UI/Settings/MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_fonts/normal_font = ExtResource("2_vb7na") +theme_override_font_sizes/normal_font_size = 35 +bbcode_enabled = true +text = "[center]SETTINGS[/center]" + +[node name="GridContainer" type="GridContainer" parent="UI/Settings/MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +size_flags_stretch_ratio = 5.0 +columns = 3 + +[node name="DialogueContainer" type="MarginContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer"] +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="VBoxContainer2" type="VBoxContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/DialogueContainer"] +layout_mode = 2 + +[node name="DialogueOptions" type="MarginContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/DialogueContainer/VBoxContainer2"] +layout_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/DialogueContainer/VBoxContainer2/DialogueOptions"] +layout_mode = 2 + +[node name="RichTextLabel" type="RichTextLabel" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/DialogueContainer/VBoxContainer2/DialogueOptions/VBoxContainer"] +custom_minimum_size = Vector2(0, 50) +layout_mode = 2 +theme_override_fonts/normal_font = ExtResource("2_vb7na") +theme_override_font_sizes/normal_font_size = 25 +bbcode_enabled = true +text = "[center]DIALOGUE[/center]" + +[node name="TextSpeed" type="HBoxContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/DialogueContainer/VBoxContainer2/DialogueOptions/VBoxContainer"] +custom_minimum_size = Vector2(0, 50) +layout_mode = 2 + +[node name="RichTextLabel" type="RichTextLabel" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/DialogueContainer/VBoxContainer2/DialogueOptions/VBoxContainer/TextSpeed"] +custom_minimum_size = Vector2(160, 28) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 4 +theme_override_fonts/normal_font = ExtResource("2_vb7na") +theme_override_font_sizes/normal_font_size = 16 +bbcode_enabled = true +text = "TYPING SPEED" + +[node name="TextSlider" type="HSlider" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/DialogueContainer/VBoxContainer2/DialogueOptions/VBoxContainer/TextSpeed"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 1 +size_flags_stretch_ratio = 4.0 +min_value = 1.0 +max_value = 10.0 +value = 5.0 +tick_count = 10 +ticks_on_borders = true + +[node name="TextCounter" type="RichTextLabel" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/DialogueContainer/VBoxContainer2/DialogueOptions/VBoxContainer/TextSpeed"] +custom_minimum_size = Vector2(150, 25) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 4 +theme_override_fonts/normal_font = ExtResource("2_vb7na") +theme_override_font_sizes/normal_font_size = 16 +bbcode_enabled = true + +[node name="Control" type="Control" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/DialogueContainer/VBoxContainer2/DialogueOptions/VBoxContainer"] +custom_minimum_size = Vector2(0, 50) +layout_mode = 2 + +[node name="AutoSpeed" type="HBoxContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/DialogueContainer/VBoxContainer2/DialogueOptions/VBoxContainer/Control"] +custom_minimum_size = Vector2(0, 50) +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="RichTextLabel" type="RichTextLabel" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/DialogueContainer/VBoxContainer2/DialogueOptions/VBoxContainer/Control/AutoSpeed"] +custom_minimum_size = Vector2(160, 25) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 4 +theme_override_fonts/normal_font = ExtResource("2_vb7na") +theme_override_font_sizes/normal_font_size = 16 +bbcode_enabled = true +text = "AUTO DELAY" + +[node name="AutoSlider" type="HSlider" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/DialogueContainer/VBoxContainer2/DialogueOptions/VBoxContainer/Control/AutoSpeed"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 1 +size_flags_stretch_ratio = 4.0 +min_value = 1.0 +max_value = 10.0 +value = 5.0 +tick_count = 10 +ticks_on_borders = true + +[node name="AutoCounter" type="RichTextLabel" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/DialogueContainer/VBoxContainer2/DialogueOptions/VBoxContainer/Control/AutoSpeed"] +custom_minimum_size = Vector2(150, 25) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 4 +theme_override_fonts/normal_font = ExtResource("2_vb7na") +theme_override_font_sizes/normal_font_size = 16 +bbcode_enabled = true + +[node name="AutoMask" type="ColorRect" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/DialogueContainer/VBoxContainer2/DialogueOptions/VBoxContainer/Control"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0, 0, 0, 0.784314) + +[node name="AutoPlay" type="HBoxContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/DialogueContainer/VBoxContainer2/DialogueOptions/VBoxContainer"] +custom_minimum_size = Vector2(0, 50) +layout_mode = 2 +theme_override_constants/separation = 10 + +[node name="RichTextLabel" type="RichTextLabel" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/DialogueContainer/VBoxContainer2/DialogueOptions/VBoxContainer/AutoPlay"] +custom_minimum_size = Vector2(160, 25) +layout_mode = 2 +size_flags_vertical = 4 +theme_override_fonts/normal_font = ExtResource("2_vb7na") +theme_override_font_sizes/normal_font_size = 16 +bbcode_enabled = true +text = "AUTOPLAY" + +[node name="AutoPlayCheckBox" type="CheckBox" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/DialogueContainer/VBoxContainer2/DialogueOptions/VBoxContainer/AutoPlay"] +layout_mode = 2 +size_flags_vertical = 4 + +[node name="ScreenContainer" type="MarginContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer"] +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="VBoxContainer2" type="VBoxContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/ScreenContainer"] +layout_mode = 2 + +[node name="ScreenSettings" type="MarginContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/ScreenContainer/VBoxContainer2"] +layout_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/ScreenContainer/VBoxContainer2/ScreenSettings"] +layout_mode = 2 +theme_override_constants/separation = 20 + +[node name="RichTextLabel" type="RichTextLabel" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/ScreenContainer/VBoxContainer2/ScreenSettings/VBoxContainer"] +custom_minimum_size = Vector2(0, 50) +layout_mode = 2 +theme_override_fonts/normal_font = ExtResource("2_vb7na") +theme_override_font_sizes/normal_font_size = 25 +bbcode_enabled = true +text = "[center]SCREEN[/center]" + +[node name="Display" type="HBoxContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/ScreenContainer/VBoxContainer2/ScreenSettings/VBoxContainer"] +layout_mode = 2 +theme_override_constants/separation = 20 + +[node name="RichTextLabel" type="RichTextLabel" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/ScreenContainer/VBoxContainer2/ScreenSettings/VBoxContainer/Display"] +custom_minimum_size = Vector2(140, 28) +layout_mode = 2 +size_flags_vertical = 4 +theme_override_fonts/normal_font = ExtResource("2_vb7na") +theme_override_font_sizes/normal_font_size = 16 +bbcode_enabled = true +text = "DISPLAY" + +[node name="DisplayButton" type="OptionButton" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/ScreenContainer/VBoxContainer2/ScreenSettings/VBoxContainer/Display"] +custom_minimum_size = Vector2(250, 0) +layout_mode = 2 +theme = SubResource("Theme_27bfm") +theme_override_fonts/font = ExtResource("2_vb7na") +theme_override_font_sizes/font_size = 16 +selected = 2 +item_count = 3 +popup/item_0/text = "WINDOWED" +popup/item_0/id = 0 +popup/item_1/text = "WINDOWED FULLSCREEN" +popup/item_1/id = 1 +popup/item_2/text = "FULLSCREEN" +popup/item_2/id = 2 + +[node name="Resolution" type="HBoxContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/ScreenContainer/VBoxContainer2/ScreenSettings/VBoxContainer"] +layout_mode = 2 +theme_override_constants/separation = 20 + +[node name="RichTextLabel" type="RichTextLabel" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/ScreenContainer/VBoxContainer2/ScreenSettings/VBoxContainer/Resolution"] +custom_minimum_size = Vector2(140, 28) +layout_mode = 2 +size_flags_vertical = 4 +theme_override_fonts/normal_font = ExtResource("2_vb7na") +theme_override_font_sizes/normal_font_size = 16 +bbcode_enabled = true +text = "RESOLUTION" + +[node name="ResolutionButton" type="OptionButton" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/ScreenContainer/VBoxContainer2/ScreenSettings/VBoxContainer/Resolution"] +custom_minimum_size = Vector2(250, 0) +layout_mode = 2 +theme = SubResource("Theme_k8uqd") + +[node name="SoundContainer" type="MarginContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer"] +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="VBoxContainer2" type="VBoxContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/SoundContainer"] +layout_mode = 2 + +[node name="DialogueOptions" type="MarginContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/SoundContainer/VBoxContainer2"] +layout_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/SoundContainer/VBoxContainer2/DialogueOptions"] +layout_mode = 2 + +[node name="RichTextLabel" type="RichTextLabel" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/SoundContainer/VBoxContainer2/DialogueOptions/VBoxContainer"] +custom_minimum_size = Vector2(0, 50) +layout_mode = 2 +theme_override_fonts/normal_font = ExtResource("2_vb7na") +theme_override_font_sizes/normal_font_size = 25 +bbcode_enabled = true +text = "[center]AUDIO[/center]" + +[node name="TextSpeed" type="HBoxContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/SoundContainer/VBoxContainer2/DialogueOptions/VBoxContainer"] +custom_minimum_size = Vector2(0, 50) +layout_mode = 2 + +[node name="RichTextLabel" type="RichTextLabel" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/SoundContainer/VBoxContainer2/DialogueOptions/VBoxContainer/TextSpeed"] +custom_minimum_size = Vector2(140, 28) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 4 +theme_override_fonts/normal_font = ExtResource("2_vb7na") +theme_override_font_sizes/normal_font_size = 16 +bbcode_enabled = true +text = "MASTER" + +[node name="MasterVolume" type="HSlider" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/SoundContainer/VBoxContainer2/DialogueOptions/VBoxContainer/TextSpeed"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 1 +size_flags_stretch_ratio = 4.0 +min_value = 1.0 +max_value = 10.0 +value = 5.0 +tick_count = 10 +ticks_on_borders = true + +[node name="MasterCounter" type="RichTextLabel" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/SoundContainer/VBoxContainer2/DialogueOptions/VBoxContainer/TextSpeed"] +custom_minimum_size = Vector2(150, 25) +layout_mode = 2 +size_flags_vertical = 4 +theme_override_fonts/normal_font = ExtResource("2_vb7na") +theme_override_font_sizes/normal_font_size = 16 +bbcode_enabled = true + +[node name="Control" type="Control" parent="UI/Settings/MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.7 + +[node name="Back" type="Button" parent="UI/Settings/MarginContainer/VBoxContainer/Control"] +custom_minimum_size = Vector2(80, 40) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -40.0 +offset_top = -20.0 +offset_right = 40.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 4 +size_flags_vertical = 6 +theme_override_fonts/font = ExtResource("2_vb7na") +theme_override_font_sizes/font_size = 20 +text = "BACK" + +[node name="BackTitle" type="Button" parent="UI/Settings/MarginContainer/VBoxContainer/Control"] +custom_minimum_size = Vector2(80, 40) +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -40.0 +offset_top = -20.0 +offset_right = 40.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 4 +size_flags_vertical = 6 +theme_override_fonts/font = ExtResource("2_vb7na") +theme_override_font_sizes/font_size = 20 +text = "BACK" + +[node name="UpperContainer" type="HBoxContainer" parent="UI"] +layout_mode = 0 +offset_right = 1849.0 +offset_bottom = 85.0 + +[node name="Menu" type="Button" parent="UI/UpperContainer"] +custom_minimum_size = Vector2(0, 80) +layout_mode = 2 +theme_override_fonts/font = ExtResource("2_vb7na") +theme_override_font_sizes/font_size = 30 +theme_override_icons/icon = ExtResource("3_ibj64") + +[node name="SkipContainer" type="HBoxContainer" parent="UI"] +visible = false +layout_mode = 0 +offset_left = 1565.0 +offset_top = 997.0 +offset_right = 1895.0 +offset_bottom = 1059.0 + +[node name="NextButton" type="Button" parent="UI/SkipContainer"] +layout_mode = 2 +theme_override_fonts/font = ExtResource("2_vb7na") +theme_override_font_sizes/font_size = 20 +text = " Press Space to Next " + +[node name="ConfirmationMask" type="ColorRect" parent="."] +visible = false +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_force_pass_scroll_events = false +color = Color(0, 0, 0, 0.784314) diff --git a/Scenes/main/Main.tscn b/Scenes/main/Main.tscn new file mode 100644 index 0000000..6d68245 --- /dev/null +++ b/Scenes/main/Main.tscn @@ -0,0 +1,18 @@ +[gd_scene load_steps=5 format=3 uid="uid://buoev4bra11fe"] + +[ext_resource type="Script" uid="uid://c6kqjqj6cs4wa" path="res://Scenes/main/main.gd" id="1_xvxb3"] +[ext_resource type="PackedScene" uid="uid://cahspuhi43bx7" path="res://Scenes/title_screen/title_screen.tscn" id="2_uea07"] +[ext_resource type="PackedScene" uid="uid://chytk2cctjk3x" path="res://Scenes/screening_desk/screening_desk.tscn" id="3_2vfcy"] +[ext_resource type="PackedScene" uid="uid://igkl2384rxt1" path="res://Scenes/text_screen/text_screens.tscn" id="4_vno88"] + +[node name="MainHub" 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_xvxb3") +TitleScreen = ExtResource("2_uea07") +ScreeningDesk = ExtResource("3_2vfcy") +TextScreens = ExtResource("4_vno88") diff --git a/globals.gd b/Scenes/main/globals.gd similarity index 96% rename from globals.gd rename to Scenes/main/globals.gd index cf1ad95..5679589 100644 --- a/globals.gd +++ b/Scenes/main/globals.gd @@ -19,7 +19,7 @@ var directives = "\n[center][font_size=22]INSTRUCTIONS[/font_size][/center] \nTO GET TO THE NEXT FLOOR[/font_size]" var release_messages: Array[String] var terminate_messages: Array[String] - +var buttons_activated: bool = true #Signals for screening desk signal console_message @@ -28,6 +28,8 @@ signal clear_patient signal color_change signal character_label_color_change signal start_balloon +signal release_display +signal terminate_display # Called when the node enters the scene tree for the first time. func _ready() -> void: diff --git a/globals.gd.uid b/Scenes/main/globals.gd.uid similarity index 100% rename from globals.gd.uid rename to Scenes/main/globals.gd.uid diff --git a/main_hub.gd b/Scenes/main/main.gd similarity index 95% rename from main_hub.gd rename to Scenes/main/main.gd index 526b018..48a67ad 100644 --- a/main_hub.gd +++ b/Scenes/main/main.gd @@ -2,9 +2,7 @@ extends Control @export var TitleScreen: PackedScene @export var ScreeningDesk: PackedScene -@export var Bedroom: PackedScene @export var TextScreens: PackedScene -@export var DialogueScreens: PackedScene var balloon: Node @@ -55,12 +53,11 @@ func _on_new_game_pressed(): #Setting/Resetting game parameters Globals.day_count = 1 Globals.floor_count = -1 - Globals.patient_count = 1 + Globals.patient_count = 0 Globals.diagnoses_quota = 1 - Globals.daily_patient_limit = 3 - Globals.patient_list = ["44", "45", "46", "47", "48", "49", "50", "51"] + Globals.daily_patient_limit = 6 Globals.patients_seen.clear() - UI.update_journal(-1) + $ScreeningDesk.journal_layer.update_journal(-1) # DISABLED FOR NOW SINCE THERE'S NO INTRO ANYMORE #Offering to skip the introduction #var choice_text = "Do you wish to skip the introduction ?" @@ -97,7 +94,7 @@ func start_day(): #Setting up new patient $ScreeningDesk.accurate_diagnoses = 0 #Resetting accurate_diagnoses value at the day's beginning - $ScreeningDesk.update_middle_screen(Globals.day_count, Globals.floor_count, $ScreeningDesk.accurate_diagnoses, Globals.diagnoses_quota) + $ScreeningDesk.middle_screen.update(Globals.day_count, Globals.floor_count, $ScreeningDesk.accurate_diagnoses, Globals.diagnoses_quota) #Transitioning to the screening desk scenes_to_hide = scenes_to_show @@ -109,7 +106,7 @@ func start_day(): $ScreeningDesk.supervisor.dialogue("interfloor_" + str(-Globals.floor_count-1)) await $ScreeningDesk.supervisor.dialogue_finished - $ScreeningDesk.console_display(Globals.directives) + $ScreeningDesk.console_screen.display(Globals.directives) $ScreeningDesk.new_patient() @@ -267,7 +264,7 @@ func start_balloon(balloon_type:String, patient_type:String, dialogue_resource: match patient_type: "patient": DialogueManager.got_dialogue.connect($ScreeningDesk.patient._change_emotion) - DialogueManager.got_dialogue.connect($ScreeningDesk._recording_text) + DialogueManager.got_dialogue.connect($ScreeningDesk.computer._recording_text) "supervisor": DialogueManager.got_dialogue.connect($ScreeningDesk.supervisor._change_emotion) @@ -288,7 +285,7 @@ func clear_balloon(): #Disconnecting emotion signals for function in [$ScreeningDesk.patient._change_emotion, - $ScreeningDesk._recording_text, + $ScreeningDesk.computer._recording_text, $ScreeningDesk.supervisor._change_emotion]: if DialogueManager.is_connected("got_dialogue", function): DialogueManager.disconnect("got_dialogue", function) diff --git a/main_hub.gd.uid b/Scenes/main/main.gd.uid similarity index 100% rename from main_hub.gd.uid rename to Scenes/main/main.gd.uid diff --git a/Scenes/screening_desk/computer.gd b/Scenes/screening_desk/computer.gd new file mode 100644 index 0000000..e595ad6 --- /dev/null +++ b/Scenes/screening_desk/computer.gd @@ -0,0 +1,79 @@ +extends Control + +@onready var tab_patient_file = $Margin/ComputerScreen/Tabs/PatientFile +@onready var tab_rules = $Margin/ComputerScreen/Tabs/Rules +@onready var tab_recording = $Margin/ComputerScreen/Tabs/Recording +@onready var patient_file = $Margin/ComputerScreen/ComputerTabs/FileContainer/PatientFile +@onready var rules = $Margin/ComputerScreen/ComputerTabs/Rules +@onready var recording = $Margin/ComputerScreen/ComputerTabs/Recording +@onready var screen = $Margin/ComputerScreen2 +@onready var next_patient_button = $Margin/NextPatient/CallNextPatient + +var tab_list +var screen_list + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + + tab_list = [tab_patient_file, tab_rules, tab_recording] + screen_list = [patient_file, rules, recording] + + #Connecting signals + tab_patient_file.pressed.connect(self._on_tab_patient_file_pressed) + tab_rules.pressed.connect(self._on_tab_rules_pressed) + tab_recording.pressed.connect(self._on_tab_recording_pressed) + Globals.response_chosen.connect(self._on_response_chosen) + + #Hiding everything + for node in tab_list + screen_list + [screen, next_patient_button]: + node.hide() + + +#Displays a message on the computer screen +func display(message): + var text = message.replace("\\n", "\n") #Replaces litteral backslashes by actual newlines (necessary because of Dialogue Manager) + screen.text = text + screen.show() + + +#Shows the patient file tab +func _on_tab_patient_file_pressed(): + tab_switch(tab_patient_file, patient_file) + +#Shows the rules tab +func _on_tab_rules_pressed(): + tab_switch(tab_rules, rules) + +#Shows the recording tab +func _on_tab_recording_pressed(): + tab_switch(tab_recording, recording) + + +#Shows the correct screen according to the pressed tab +func tab_switch(pressed_tab, tab_screen): + + #Highlights pressed tab and unpress the others + for tab in tab_list: + tab.set_pressed(false) + tab.set_mouse_filter(Control.MOUSE_FILTER_STOP) + pressed_tab.set_pressed(true) + pressed_tab.set_mouse_filter(Control.MOUSE_FILTER_IGNORE) + + #Showing desired screen and hiding the others + for node in screen_list: + node.hide() + tab_screen.show() + + +func _recording_text(dialogue_line): #Records the dialogues + + recording.append_text("\n\n") + recording.append_text("[color=red]" + dialogue_line.character + "[/color]" + "\n") + recording.append_text(dialogue_line.text) + + +func _on_response_chosen(response): #Adds protagonist responses to the recording tab + + recording.append_text("\n\n") + recording.append_text("[color=green]You[/color]" + "\n") + recording.append_text(response.text) diff --git a/Scenes/screening_desk/computer.gd.uid b/Scenes/screening_desk/computer.gd.uid new file mode 100644 index 0000000..99199bb --- /dev/null +++ b/Scenes/screening_desk/computer.gd.uid @@ -0,0 +1 @@ +uid://chhh7v5iwiqw2 diff --git a/Scenes/screening_desk/console_screen.gd b/Scenes/screening_desk/console_screen.gd new file mode 100644 index 0000000..f04c10f --- /dev/null +++ b/Scenes/screening_desk/console_screen.gd @@ -0,0 +1,15 @@ +extends RichTextLabel + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + Globals.console_message.connect(self.display) + hide() + + +#Displays a message on the console screen +func display(message): + var text_to_display = message + text_to_display = text_to_display.replace("\\n", "\n") #Replaces litteral backslashes by actual newlines (necessary because of Dialogue Manager) + text = text_to_display + show() diff --git a/Scenes/screening_desk/console_screen.gd.uid b/Scenes/screening_desk/console_screen.gd.uid new file mode 100644 index 0000000..7f09ee2 --- /dev/null +++ b/Scenes/screening_desk/console_screen.gd.uid @@ -0,0 +1 @@ +uid://cyennu12fufbt diff --git a/Scenes/screening_desk/green_button.gd b/Scenes/screening_desk/green_button.gd new file mode 100644 index 0000000..d90cd97 --- /dev/null +++ b/Scenes/screening_desk/green_button.gd @@ -0,0 +1,14 @@ +extends TextureButton + +signal decision_made + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + self.pressed.connect(self._on_green_button_pressed) + set_disabled(true) + +func _on_green_button_pressed(): + if Globals.buttons_activated: + decision_made.emit("release") + set_toggle_mode(true) + set_pressed_no_signal(true) diff --git a/Scenes/screening_desk/green_button.gd.uid b/Scenes/screening_desk/green_button.gd.uid new file mode 100644 index 0000000..7bedaa4 --- /dev/null +++ b/Scenes/screening_desk/green_button.gd.uid @@ -0,0 +1 @@ +uid://nj1oo2nh44dh diff --git a/Scenes/screening_desk/journal_layer.gd b/Scenes/screening_desk/journal_layer.gd new file mode 100644 index 0000000..999179f --- /dev/null +++ b/Scenes/screening_desk/journal_layer.gd @@ -0,0 +1,44 @@ +extends CanvasLayer + +@onready var journal_symptoms = $JournalOpen/JournalMargin/PageArea/RightPage/Symptoms + +#Journal Settings +var symptoms_detailed: Array[Array] = [ +["SUICIDAL IDEATIONS\nPersistent thoughts about ending one's own life", + "PERSECUTORY DELUSIONS\nFalse conviction of being targeted or harmed", +"UNNATURAL BEHAVIOUR\nSigns or marks of non-human nature", +"AUDITORY HALLUCINATIONS\nFalse perceptions of external sound"], + +["MEGALOMANIAC DELUSIONS\nFalse exaggeration of self-importance or power", +"SOMATIC HALLUCINATIONS\nFalse sensations, from inside the body or on the skin"], + +["MYSTICAL DELUSIONS\nFalse certainty of spiritual, divine connection", +"MANIA\nExcessively elevated mood and increased energy"], + +["CHEMOSENSORY HALLUCINATIONS\nFalse perceptions of smell or taste", +"SELF-MUTILATION\nDeliberate self-injury"], + +["HETERO-AGRESSIVE BEHAVIOUR\nExcessive hostility, verbal agression, threats", +"VISUAL HALLUCINATIONS\nFalse perceptions of visual stimuli"] +] + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + $JournalOpen/JournalMargin/PageArea/LeftPage/CloseManual.pressed.connect(self._on_close_manual_pressed) + hide() + +func _on_close_manual_pressed(): + hide() + +func _on_journal_pressed(): + show() + + +func update_journal(floor_count:int): + + var symptoms_page : String = "" + for i in range(-floor_count): + for symptom in symptoms_detailed[i]: + symptoms_page += "\n\n" + symptom + journal_symptoms.text = symptoms_page diff --git a/Scenes/screening_desk/journal_layer.gd.uid b/Scenes/screening_desk/journal_layer.gd.uid new file mode 100644 index 0000000..e2e4108 --- /dev/null +++ b/Scenes/screening_desk/journal_layer.gd.uid @@ -0,0 +1 @@ +uid://dcax2vggaexnr diff --git a/Scenes/screening_desk/middle_screen.gd b/Scenes/screening_desk/middle_screen.gd new file mode 100644 index 0000000..4bba6ef --- /dev/null +++ b/Scenes/screening_desk/middle_screen.gd @@ -0,0 +1,15 @@ +extends RichTextLabel + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +#Updates Middle Screen Info +func update(day_count, floor_count, diagnoses_count, diagnoses_quota): + var day = Globals.colorize(str(day_count), "dark_orange") + var floor = Globals.colorize(str(floor_count), "dark_orange") + var diagnoses = Globals.colorize(str(diagnoses_count) + "/" + str(diagnoses_quota), "dark_orange") + + text = "DAY: " + day + "\n\nFLOOR: " + floor + "\n\nACCURATE DIAGNOSES: " + diagnoses diff --git a/Scenes/screening_desk/middle_screen.gd.uid b/Scenes/screening_desk/middle_screen.gd.uid new file mode 100644 index 0000000..ab9f3b8 --- /dev/null +++ b/Scenes/screening_desk/middle_screen.gd.uid @@ -0,0 +1 @@ +uid://p3a2y1dqk63c diff --git a/patient.gd b/Scenes/screening_desk/patient.gd similarity index 95% rename from patient.gd rename to Scenes/screening_desk/patient.gd index a04c938..2ecae47 100644 --- a/patient.gd +++ b/Scenes/screening_desk/patient.gd @@ -2,7 +2,9 @@ extends TextureRect func _ready() -> void: - pass + + #Hiding + hide() #Change emotions following dialogue tags diff --git a/patient.gd.uid b/Scenes/screening_desk/patient.gd.uid similarity index 100% rename from patient.gd.uid rename to Scenes/screening_desk/patient.gd.uid diff --git a/patient_global.gd b/Scenes/screening_desk/patient_global.gd similarity index 94% rename from patient_global.gd rename to Scenes/screening_desk/patient_global.gd index ad0a043..cbc7934 100644 --- a/patient_global.gd +++ b/Scenes/screening_desk/patient_global.gd @@ -14,7 +14,6 @@ var abnormal: bool #Patient file var file_text : String -var file_title: String #Patient symptoms ordered from floor to floor var symptoms_arrays: Array[Array] = [ @@ -71,7 +70,6 @@ func new_patient(patient_id): var psychiatric_assessment = config.get_value("", "psychiatric_assessment") file_text = "NAME: " + patient_name + "\nAGE: " + age + "\n\nPROFESSION: " + profession + "\n\nPRE-SCREENING PSYCHIATRIC ASSESSMENT:\n\n" + "[color=orange_red]" + psychiatric_assessment + "[/color]" - file_title = "[center]PATIENT FILE #" + patient_id file_path = "res://Art/Patients/patient_" + patient_id + "/patient_" + patient_id + "_" load_emotions(config, file_path) @@ -129,6 +127,8 @@ func sort_patients(): var symptom_list: Array for patient_id in Globals.patient_list: + + #Loads symptoms for each patient patient_symptoms.clear() file_path = "res://Dialogues/Patients/patient_" + patient_id + "_file.cfg" config.load(file_path) @@ -137,6 +137,7 @@ func sort_patients(): symptom_list = config.get_value("", "abnormal_symptoms").split("\n", false) patient_symptoms.append_array(symptom_list) print("Patient #" + patient_id + " symptom list: " + str(patient_symptoms)) + #Goes through the symptoms_arrays from the last to the first, #If a symptom matches with the patient symptoms, #Add that patient to the floors from that floor to the last one @@ -190,9 +191,23 @@ func generate_patient_id() -> String: #Generates a patient ID patient_list[j].erase(patient_id) #Removes picked patient from unseen patients list print("Updated Floor " + str(j) + " list: " + str(patient_list[j])) - #Updates global variables - Globals.patient_id = patient_id - Globals.patients_seen.append(patient_id) return patient_id + + +func next_patient() -> String: #Decides next patient ID + + var next_patient_id: String + + match Globals.floor_count: + -2: + if Globals.patient_count == 0: + next_patient_id = "it_that_smiles" + else: + next_patient_id = generate_patient_id() + _: + next_patient_id = generate_patient_id() + + + return next_patient_id diff --git a/patient_global.gd.uid b/Scenes/screening_desk/patient_global.gd.uid similarity index 100% rename from patient_global.gd.uid rename to Scenes/screening_desk/patient_global.gd.uid diff --git a/Scenes/screening_desk/red_button.gd b/Scenes/screening_desk/red_button.gd new file mode 100644 index 0000000..93fa8ff --- /dev/null +++ b/Scenes/screening_desk/red_button.gd @@ -0,0 +1,14 @@ +extends TextureButton + +signal decision_made + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + self.pressed.connect(self._on_green_button_pressed) + set_disabled(true) + +func _on_green_button_pressed(): + if Globals.buttons_activated: + decision_made.emit("terminate") + set_toggle_mode(true) + set_pressed_no_signal(true) diff --git a/Scenes/screening_desk/red_button.gd.uid b/Scenes/screening_desk/red_button.gd.uid new file mode 100644 index 0000000..66c9edb --- /dev/null +++ b/Scenes/screening_desk/red_button.gd.uid @@ -0,0 +1 @@ +uid://cmbmtqoh5iytr diff --git a/Scenes/screening_desk/release.gd b/Scenes/screening_desk/release.gd new file mode 100644 index 0000000..3eadb69 --- /dev/null +++ b/Scenes/screening_desk/release.gd @@ -0,0 +1,11 @@ +extends RichTextLabel + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + Globals.release_display.connect(self._on_release_display) + text = Globals.colorize("RELEASE", "web_gray") + + +func _on_release_display(message:String): + text = message diff --git a/Scenes/screening_desk/release.gd.uid b/Scenes/screening_desk/release.gd.uid new file mode 100644 index 0000000..d1f678f --- /dev/null +++ b/Scenes/screening_desk/release.gd.uid @@ -0,0 +1 @@ +uid://bvi3qtmbubkck diff --git a/Scenes/screening_desk/screening_desk.gd b/Scenes/screening_desk/screening_desk.gd new file mode 100644 index 0000000..110c93b --- /dev/null +++ b/Scenes/screening_desk/screening_desk.gd @@ -0,0 +1,249 @@ +extends Control + +#DeskAssets +@onready var patient = $UpperHalf/ControlGlass/Patient +@onready var supervisor = $UpperHalf/ControlGlass/Supervisor +@onready var green_button = $LowerHalf/GreenButton +@onready var red_button = $LowerHalf/RedButton +@onready var journal = $LowerHalf/Journal/JournalButton +@onready var journal_layer = $JournalLayer +@onready var release = $LowerHalf/DecisionScreen/MarginContainer/HBoxContainer/Release +@onready var terminate = $LowerHalf/DecisionScreen/MarginContainer/HBoxContainer/Terminate +@onready var patient_color: Color +@onready var computer = $LowerHalf/Computer +@onready var middle_screen = $LowerHalf/MiddleScreen/MarginContainer/MiddleScreen +@onready var console_screen = $LowerHalf/Console/Margin/ConsoleScreen + +#RoomAssets +@onready var cell_top = $RoomAssets/CellTop +@onready var cell_bot = $RoomAssets/CellBot +@onready var cell_animation = $RoomAssets/CellAnimation +@onready var cell_wall = $RoomAssets/CellWall +@onready var backwall_animation = $RoomAssets/Backwall/BackwallAnimation + +#DialogueAssets +@onready var patient_dialogue_resource: Resource +@onready var balloon: Node +@onready var patient_emotions : Dictionary +@onready var message_array: Array[String] + +var main: Node +var accurate_diagnoses = 0 + + +func _ready() -> void: + + #Referencing main node + main = get_parent() + + #Connecting signals + computer.next_patient_button.pressed.connect(self._on_call_next_patient_pressed) + red_button.decision_made.connect(self._on_decision_made) + green_button.decision_made.connect(self._on_decision_made) + journal.pressed.connect(journal_layer._on_journal_pressed) + Globals.clear_patient.connect(self._on_clear_patient) + Globals.color_change.connect(self._on_color_change) + + #Hiding and showing appropriate RoomAssets + for room_asset in [cell_top, cell_bot, cell_wall]: + room_asset.hide() + for room_asset in [$RoomAssets/Glass, $RoomAssets/Room, $RoomAssets/Backwall]: + room_asset.show() + #$RoomAssets/Backwall.position = Vector2(0, -2700) + + hide() #Hiding ScreeningDesk + + message_array.resize(3) #Setting up message array + + +func new_patient(): + + var new_id = Patient.next_patient() + #Patient.new_patient("it_that_smiles") #Line for testing purposes + Patient.new_patient(new_id) #Line for generating new patient + + computer.patient_file.text = Patient.file_text + computer.recording.text = "" + patient.texture = Patient.image + + #Setting up UI + computer.next_patient_button.show() + console_screen.display(Globals.directives) + + +func _on_call_next_patient_pressed(): #Brings in next patient and sets up the desk controls + + #Hiding the next_patient button + var scenes_to_hide = [computer.next_patient_button, supervisor] + for scenes in scenes_to_hide: + scenes.hide() + + # Shows transition messages on computer and console + var message : String + message = Globals.colorize("COMPUTING CELL TRANSLATION...", "orange_red") + computer.display(message) + message = Globals.colorize("- BRINGING IN NEXT PATIENT -", "dark_orange") + console_screen.display(message) + + #Shutters entry animation + cell_animation.play("incoming") + cell_top.show() + cell_bot.show() + await cell_animation.animation_finished + + #Showing the Patient and the Backroom + var scenes_to_show = [patient, cell_wall] + for scene in scenes_to_show: + scene.show() + + #Opening Shutters + cell_animation.play("open") + await cell_animation.animation_finished + + #Activating Buttons + green_button.set_disabled(false) + red_button.set_disabled(false) + + #Coloring Release and Terminate + release.text = Globals.colorize("RELEASE", "dark_green") + terminate.text = Globals.colorize("TERMINATE", "dark_red") + + #Starting Dialogue and hiding console screen + computer.screen.hide() + console_screen.hide() + main.start_balloon("screening", "patient", Patient.dialogue_resource, "start") + + #Showing Computer Tabs and showing Patient File Screen by default + for tab in computer.tab_list: + tab.show() + tab.set_mouse_filter(Control.MOUSE_FILTER_STOP) + computer.patient_file.show() + + #Updating patient_count + Globals.patient_count += 1 + + +#Starts release or termination protocols when the corresponding button is pressed +func _on_decision_made(choice: String): + + #Hiding computer tabs screen + for node in computer.tab_list + computer.screen_list: + node.hide() + + #Setting up console and computer displays + if choice == "release": + release.text = Globals.colorize("RELEASE", "green") #Highlighting the decision + message_array = Globals.release_messages + elif choice == "terminate": + terminate.text = Globals.colorize("TERMINATE", "red") #Highlighting the decision + message_array = Globals.terminate_messages + console_screen.display(message_array[0]) + computer.display(message_array[2]) + + #Disabling Buttons + green_button.set_mouse_filter(Control.MOUSE_FILTER_IGNORE) + red_button.set_mouse_filter(Control.MOUSE_FILTER_IGNORE) + + #Final Patient Dialogue + main.start_balloon("screening", "patient", Patient.dialogue_resource, choice) + + +#Clears patient and transitions towards next patient or end of day +func _on_clear_patient(choice:String): + + # Updating middle screen info and accurate_diagnoses value + if (Patient.abnormal == true and choice == "terminate") or (Patient.abnormal == false and choice == "release"): + accurate_diagnoses += 1 + else: + accurate_diagnoses = 0 # Resetting to 0 if the player makes a wrong diagnosis + middle_screen.update(Globals.day_count, Globals.floor_count, accurate_diagnoses, Globals.diagnoses_quota) + + #Showing second console message + console_screen.display(message_array[1]) + + #Closing Shutters + cell_animation.play("close") + await cell_animation.animation_finished + + #Hiding the cell and restoring the backroom and patient's original colors + for scene in [patient, cell_wall]: + scene.hide() + patient.modulate = Patient.original_color + cell_wall.modulate = Patient.original_color + + #Hiding Computer screen and resetting Console screen once the animation is done + cell_animation.play(choice) + await cell_animation.animation_finished + computer.screen.hide() + console_screen.hide() + + #Reenabling mouse filter and resetting buttons + for button in [green_button, red_button]: + button.set_mouse_filter(Control.MOUSE_FILTER_STOP) + button.set_pressed(false) + button.set_toggle_mode(false) + button.set_disabled(true) + + #Resetting decision screen + release.text = Globals.colorize("RELEASE", "web_gray") + terminate.text = Globals.colorize("TERMINATE", "web_gray") + + #Descending Floor if diagnoses_quota reached + if accurate_diagnoses == Globals.diagnoses_quota: + descend_floor() + else: + new_patient() + + +func _on_color_change(color: String): #Modulating backroom and patient colors + + var new_color: Color + + match color: + "red": + new_color = Color(1,0.1,0.1,1) + "green": + new_color = Color(0.5,1,0.5,1) + patient.modulate = new_color + cell_wall.modulate = new_color + print("Color changed to: " + str(new_color)) + + +func descend_floor(): #Descends to next floor + + #Displaying information on screens + var message : String + message = Globals.colorize("DIAGNOSES QUOTA REACHED", "green_yellow") + "\n\n" + "SECURITY CLEARANCE UPDATED" + "\n\n" + Globals.colorize("ACCESS TO NEXT FLOOR AUTHORIZED", "green") + computer.display(message) + message = Globals.colorize("- DESCENT PROTOCOL INITIATED -\n\n- TRANSLATING TO NEXT FLOOR -", "dark_orange") + console_screen.display(message) + + #Descending animation + backwall_animation.play("going_down_1") + await backwall_animation.animation_finished + backwall_animation.play("going_down_2") + await backwall_animation.animation_finished + + #Updating middle screen info + Globals.floor_count -= 1 + accurate_diagnoses = 0 + Globals.diagnoses_quota += 1 + middle_screen.update(Globals.day_count, Globals.floor_count, accurate_diagnoses, Globals.diagnoses_quota) + + #Resetting patient_count + Globals.patient_count = 0 + + #Updating journal symptoms + journal_layer.update_journal(Globals.floor_count) + + #Hiding screen messages + computer.screen.hide() + console_screen.hide() + + #Interfloor dialogue + supervisor.dialogue("interfloor_" + str(-Globals.floor_count-1)) + await supervisor.dialogue_finished + + #Setting up new patient + new_patient() + diff --git a/screening_desk.gd.uid b/Scenes/screening_desk/screening_desk.gd.uid similarity index 100% rename from screening_desk.gd.uid rename to Scenes/screening_desk/screening_desk.gd.uid diff --git a/screening_desk.tscn b/Scenes/screening_desk/screening_desk.tscn similarity index 76% rename from screening_desk.tscn rename to Scenes/screening_desk/screening_desk.tscn index fadc6ff..40c4fb4 100644 --- a/screening_desk.tscn +++ b/Scenes/screening_desk/screening_desk.tscn @@ -1,10 +1,13 @@ -[gd_scene load_steps=43 format=3 uid="uid://chytk2cctjk3x"] +[gd_scene load_steps=59 format=3 uid="uid://chytk2cctjk3x"] -[ext_resource type="Script" uid="uid://b3ms0imu0umn8" path="res://screening_desk.gd" id="1_1s7k3"] +[ext_resource type="Script" uid="uid://b3ms0imu0umn8" path="res://Scenes/screening_desk/screening_desk.gd" id="1_1s7k3"] +[ext_resource type="Script" uid="uid://dcax2vggaexnr" path="res://Scenes/screening_desk/journal_layer.gd" id="3_8gteb"] [ext_resource type="Texture2D" uid="uid://gnvb226r1xv0" path="res://Art/Patients/patient_42/patient_42_neutral.png" id="3_qsin6"] -[ext_resource type="Script" uid="uid://vjvnh47s4akq" path="res://patient.gd" id="4_43vqp"] -[ext_resource type="Shader" uid="uid://dwepb0lm1veje" path="res://supervisor.gdshader" id="4_qsin6"] -[ext_resource type="Script" uid="uid://cdkbyikbjqlsh" path="res://supervisor.gd" id="5_43vqp"] +[ext_resource type="Script" uid="uid://vjvnh47s4akq" path="res://Scenes/screening_desk/patient.gd" id="4_43vqp"] +[ext_resource type="Shader" uid="uid://dwepb0lm1veje" path="res://Scenes/screening_desk/supervisor.gdshader" id="4_qsin6"] +[ext_resource type="Texture2D" uid="uid://c3je4gir1qlot" path="res://Art/BlackScreen.png" id="4_ysguw"] +[ext_resource type="Texture2D" uid="uid://diln53wxa3oep" path="res://Art/Rooms/screening_room/journal_open.png" id="5_31hpe"] +[ext_resource type="Script" uid="uid://cdkbyikbjqlsh" path="res://Scenes/screening_desk/supervisor.gd" id="5_43vqp"] [ext_resource type="Texture2D" uid="uid://cci0pb12chlps" path="res://Art/Rooms/screening_room/computer.png" id="6_6a8ar"] [ext_resource type="Texture2D" uid="uid://jychpkygmjib" path="res://Art/Rooms/screening_room/desk.png" id="7_dp545"] [ext_resource type="Theme" uid="uid://3k7sqw211ncl" path="res://Art/UI/button_theme.tres" id="8_hxrv4"] @@ -12,15 +15,22 @@ [ext_resource type="BitMap" uid="uid://b1y07k0opbyju" path="res://Art/Rooms/screening_room/button_bitmap.png" id="10_hxph5"] [ext_resource type="Texture2D" uid="uid://bhqx2kjgn1irf" path="res://Art/Rooms/screening_room/green_button.png" id="10_tmo4o"] [ext_resource type="Texture2D" uid="uid://bagw75cp302xk" path="res://Art/Rooms/screening_room/green_button_pressed.png" id="11_weq72"] +[ext_resource type="Script" uid="uid://chhh7v5iwiqw2" path="res://Scenes/screening_desk/computer.gd" id="11_ysguw"] [ext_resource type="Texture2D" uid="uid://cqn1o6cff1g4k" path="res://Art/Rooms/screening_room/red_button.png" id="12_7mvev"] [ext_resource type="Texture2D" uid="uid://dja217ihoi5rb" path="res://Art/Rooms/screening_room/green_button_hover.png" id="12_rpmuh"] +[ext_resource type="Script" uid="uid://cyennu12fufbt" path="res://Scenes/screening_desk/console_screen.gd" id="12_ylm1s"] [ext_resource type="Texture2D" uid="uid://kfq5b58sicqf" path="res://Art/Rooms/screening_room/red_button_pressed.png" id="13_lq4cy"] [ext_resource type="FontFile" uid="uid://dv8ppra5tgn1t" path="res://Art/Fonts/PixelatedEleganceRegular-ovyAA.ttf" id="14_0pvwy"] +[ext_resource type="Script" uid="uid://nj1oo2nh44dh" path="res://Scenes/screening_desk/green_button.gd" id="15_6lou7"] [ext_resource type="Texture2D" uid="uid://c35f0aquvroje" path="res://Art/Rooms/screening_room/red_button_hover.png" id="15_pbvyq"] [ext_resource type="Texture2D" uid="uid://4tgfgi4earv1" path="res://Art/Rooms/screening_room/journal_unpressed.png" id="17_7o31y"] [ext_resource type="Texture2D" uid="uid://1djtmkdqtplt" path="res://Art/Rooms/screening_room/journal_pressed.png" id="18_gv516"] +[ext_resource type="Script" uid="uid://cmbmtqoh5iytr" path="res://Scenes/screening_desk/red_button.gd" id="19_63o5x"] [ext_resource type="Texture2D" uid="uid://b7tbgcyxjj516" path="res://Art/Rooms/screening_room/journal_hover.png" id="19_ar3nk"] [ext_resource type="BitMap" uid="uid://byqmvpivmvsnl" path="res://Art/Rooms/screening_room/journal_bitmap.png" id="20_5vhu5"] +[ext_resource type="Script" uid="uid://bvi3qtmbubkck" path="res://Scenes/screening_desk/release.gd" id="20_43vqp"] +[ext_resource type="Script" uid="uid://dcjfpyxp3hqg8" path="res://Scenes/screening_desk/terminate.gd" id="21_w70jd"] +[ext_resource type="Script" uid="uid://p3a2y1dqk63c" path="res://Scenes/screening_desk/middle_screen.gd" id="23_68gp8"] [ext_resource type="Texture2D" uid="uid://b21h7s3820sc8" path="res://Art/Rooms/screening_room/middle_screen.png" id="24_d8gyq"] [ext_resource type="Texture2D" uid="uid://d2k6h1dqg0uox" path="res://Art/Rooms/screening_room/room_glass.png" id="24_qsin6"] [ext_resource type="Texture2D" uid="uid://twd5atevu4i3" path="res://Art/Rooms/screening_room/cell_wall.png" id="25_qsin6"] @@ -33,11 +43,49 @@ [sub_resource type="Theme" id="Theme_63o5x"] RichTextLabel/fonts/normal_font = ExtResource("14_0pvwy") +[sub_resource type="Theme" id="Theme_074om"] +default_font = ExtResource("14_0pvwy") +RichTextLabel/colors/default_color = Color(0, 0, 0, 1) +RichTextLabel/fonts/normal_font = ExtResource("14_0pvwy") + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_3lob0"] +bg_color = Color(0.843137, 0.843137, 0.843137, 1) +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(0, 0, 0, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_wj8aa"] +bg_color = Color(0.784314, 0.784314, 0.784314, 1) +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(0, 0, 0, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_5jbc5"] +bg_color = Color(0.901961, 0.901961, 0.901961, 1) +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(0, 0, 0, 1) + +[sub_resource type="Theme" id="Theme_cjapy"] +Button/colors/font_color = Color(0, 0, 0, 1) +Button/fonts/font = ExtResource("14_0pvwy") +Button/styles/hover = SubResource("StyleBoxFlat_3lob0") +Button/styles/normal = SubResource("StyleBoxFlat_wj8aa") +Button/styles/pressed = SubResource("StyleBoxFlat_5jbc5") + [sub_resource type="ShaderMaterial" id="ShaderMaterial_w70jd"] shader = ExtResource("4_qsin6") shader_parameter/progress = 0.0 shader_parameter/softness = 0.05 +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ysguw"] + [sub_resource type="Animation" id="Animation_ub1ft"] length = 0.001 tracks/0/type = "value" @@ -280,6 +328,164 @@ mouse_filter = 2 theme = SubResource("Theme_63o5x") script = ExtResource("1_1s7k3") +[node name="JournalLayer" type="CanvasLayer" parent="."] +layer = 110 +visible = false +script = ExtResource("3_8gteb") + +[node name="JournalOpen" type="Control" parent="JournalLayer"] +z_index = 8 +layout_mode = 3 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -825.0 +offset_top = -450.0 +offset_right = 825.0 +offset_bottom = 450.0 +grow_horizontal = 2 +grow_vertical = 2 +theme = SubResource("Theme_074om") + +[node name="Shader" type="TextureRect" parent="JournalLayer/JournalOpen"] +modulate = Color(1, 1, 1, 0.52549) +z_index = 2 +custom_minimum_size = Vector2(2000, 2000) +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("4_ysguw") +expand_mode = 1 + +[node name="JournalOpenTexture" type="TextureRect" parent="JournalLayer/JournalOpen"] +z_index = 2 +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -750.0 +offset_top = -420.0 +offset_right = 750.0 +offset_bottom = 420.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("5_31hpe") +stretch_mode = 3 + +[node name="JournalMargin" type="MarginContainer" parent="JournalLayer/JournalOpen"] +z_index = 2 +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 70 +theme_override_constants/margin_top = 30 +theme_override_constants/margin_right = 70 +theme_override_constants/margin_bottom = 50 + +[node name="PageArea" type="HBoxContainer" parent="JournalLayer/JournalOpen/JournalMargin"] +layout_mode = 2 +theme_override_constants/separation = 90 + +[node name="LeftPage" type="VBoxContainer" parent="JournalLayer/JournalOpen/JournalMargin/PageArea"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="PageTitle" type="RichTextLabel" parent="JournalLayer/JournalOpen/JournalMargin/PageArea/LeftPage"] +custom_minimum_size = Vector2(0, 200) +layout_mode = 2 +size_flags_stretch_ratio = 0.1 +theme_override_font_sizes/normal_font_size = 28 +bbcode_enabled = true +text = " +[center]EMPLOYEES' MANUAL[/center]" + +[node name="Instructions" type="RichTextLabel" parent="JournalLayer/JournalOpen/JournalMargin/PageArea/LeftPage"] +custom_minimum_size = Vector2(0, 200) +layout_mode = 2 +size_flags_vertical = 4 +theme_override_constants/line_separation = 20 +theme_override_font_sizes/normal_font_size = 20 +bbcode_enabled = true +text = "THE FOLLOWING [color=dark_orange]SYMPTOMS[/color] HAVE BEEN IDENTIFIED AS MARKERS OF ABNORMALITY CONVERSION. + + +IF YOU DETECT ONE THAT WAS NOT ASSESSED IN PRE-SCREENING, [color=red]TERMINATE[/color] THE SUBJECT." + +[node name="Slogan" type="RichTextLabel" parent="JournalLayer/JournalOpen/JournalMargin/PageArea/LeftPage"] +custom_minimum_size = Vector2(0, 100) +layout_mode = 2 +size_flags_vertical = 6 +theme_override_constants/line_separation = 20 +theme_override_font_sizes/normal_font_size = 28 +bbcode_enabled = true +text = "[color=dark_blue]THE REPUBLIC SHELTERS[/color]" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="CloseManual" type="Button" parent="JournalLayer/JournalOpen/JournalMargin/PageArea/LeftPage"] +custom_minimum_size = Vector2(200, 60) +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 6 +theme = SubResource("Theme_cjapy") +text = "Close manual" + +[node name="RightPage" type="VBoxContainer" parent="JournalLayer/JournalOpen/JournalMargin/PageArea"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="Symptoms" type="RichTextLabel" parent="JournalLayer/JournalOpen/JournalMargin/PageArea/RightPage"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_constants/paragraph_separation = 1 +theme_override_font_sizes/normal_font_size = 20 +bbcode_enabled = true +text = "SUICIDAL IDEATIONS +Persistent thoughts about ending one's own life + +PANIC ATTACKS +Acute episodes of severe anxiety + +PERSECUTORY DELUSIONS +False conviction of being targeted or harmed + +MEGALOMANIAC DELUSIONS +False exaggeration of self-importance or power + +MYSTICAL DELUSIONS +False certainty of spiritual, divine connection + +MANIA +Excessively elevated mood and increased energy + +AUDITORY HALLUCINATIONS +False perceptions of external sound + +VISUAL HALLUCINATIONS +False perceptions of visual stimuli + +HAPTIC HALLUCINATIONS +False perceptions of touch + +CENESTHETIC HALLUCINATIONS +False internal bodily sensations + +SELF-MUTILATION +Deliberate injury to one's own body + +HETERO-AGRESSIVE BEHAVIOUR +Hostility, verbal agression, threats" + [node name="UpperHalf" type="Control" parent="."] layout_mode = 1 anchors_preset = 15 @@ -362,6 +568,7 @@ offset_left = 6.0 offset_top = 13.0 offset_right = 734.0 offset_bottom = 313.0 +script = ExtResource("11_ysguw") [node name="ComputerTexture" type="TextureRect" parent="LowerHalf/Computer"] layout_mode = 1 @@ -429,22 +636,9 @@ theme_override_constants/margin_right = 4 theme_override_constants/margin_bottom = 4 [node name="FileContainer" type="VBoxContainer" parent="LowerHalf/Computer/Margin/ComputerScreen/ComputerTabs"] -visible = false layout_mode = 2 theme_override_constants/separation = -4 -[node name="PatientFileTitle" type="RichTextLabel" parent="LowerHalf/Computer/Margin/ComputerScreen/ComputerTabs/FileContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -size_flags_stretch_ratio = 0.9 -theme_override_fonts/normal_font = ExtResource("14_0pvwy") -theme_override_font_sizes/normal_font_size = 16 -bbcode_enabled = true -text = "PATIENT #564" -horizontal_alignment = 1 -vertical_alignment = 1 - [node name="PatientFile" type="RichTextLabel" parent="LowerHalf/Computer/Margin/ComputerScreen/ComputerTabs/FileContainer"] layout_mode = 2 size_flags_vertical = 3 @@ -466,6 +660,7 @@ ANXIETY[/color] vertical_alignment = 1 [node name="Rules" type="RichTextLabel" parent="LowerHalf/Computer/Margin/ComputerScreen/ComputerTabs"] +visible = false z_index = 1 layout_mode = 2 theme_override_constants/line_separation = 5 @@ -493,13 +688,14 @@ bbcode_enabled = true vertical_alignment = 1 [node name="NextPatient" type="PanelContainer" parent="LowerHalf/Computer/Margin"] -visible = false custom_minimum_size = Vector2(400, 100) layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 +theme_override_styles/panel = SubResource("StyleBoxEmpty_ysguw") [node name="CallNextPatient" type="Button" parent="LowerHalf/Computer/Margin/NextPatient"] +visible = false z_index = 1 layout_mode = 2 size_flags_horizontal = 3 @@ -536,7 +732,7 @@ ASSESSMENT: [color=red]ABNORMAL[/color] horizontal_alignment = 1 vertical_alignment = 1 -[node name="ConsoleScreen" type="Control" parent="LowerHalf"] +[node name="Console" type="Control" parent="LowerHalf"] z_index = 1 anchors_preset = 0 offset_left = 1194.0 @@ -544,14 +740,14 @@ offset_top = 12.0 offset_right = 1914.0 offset_bottom = 392.0 -[node name="ConsoleScreen" type="TextureRect" parent="LowerHalf/ConsoleScreen"] +[node name="ConsoleTextureRect" type="TextureRect" parent="LowerHalf/Console"] layout_mode = 0 offset_right = 676.0 offset_bottom = 376.0 texture = ExtResource("9_68gp8") stretch_mode = 2 -[node name="Margin" type="MarginContainer" parent="LowerHalf/ConsoleScreen"] +[node name="Margin" type="MarginContainer" parent="LowerHalf/Console"] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -563,7 +759,7 @@ theme_override_constants/margin_top = 28 theme_override_constants/margin_right = 36 theme_override_constants/margin_bottom = 28 -[node name="ConsoleText" type="RichTextLabel" parent="LowerHalf/ConsoleScreen/Margin"] +[node name="ConsoleScreen" type="RichTextLabel" parent="LowerHalf/Console/Margin"] custom_minimum_size = Vector2(600, 200) layout_mode = 2 theme_override_fonts/normal_font = ExtResource("14_0pvwy") @@ -588,6 +784,7 @@ MAKE ENOUGH [color=green_yellow]ACCURATE DIAGNOSES[/color] IN A ROW TO GET TO THE NEXT FLOOR" horizontal_alignment = 1 vertical_alignment = 1 +script = ExtResource("12_ylm1s") [node name="GreenButton" type="TextureButton" parent="LowerHalf"] z_index = 1 @@ -601,13 +798,13 @@ offset_right = -1003.0 offset_bottom = -4.0 grow_horizontal = 2 grow_vertical = 2 -toggle_mode = true texture_normal = ExtResource("10_tmo4o") texture_pressed = ExtResource("11_weq72") texture_hover = ExtResource("12_rpmuh") texture_disabled = ExtResource("11_weq72") texture_click_mask = ExtResource("10_hxph5") stretch_mode = 3 +script = ExtResource("15_6lou7") [node name="RedButton" type="TextureButton" parent="LowerHalf"] z_index = 1 @@ -616,12 +813,12 @@ offset_left = 1003.0 offset_top = 328.0 offset_right = 1103.0 offset_bottom = 392.0 -toggle_mode = true texture_normal = ExtResource("12_7mvev") texture_pressed = ExtResource("13_lq4cy") texture_hover = ExtResource("15_pbvyq") texture_disabled = ExtResource("13_lq4cy") stretch_mode = 3 +script = ExtResource("19_63o5x") [node name="MiddleScreen" type="Control" parent="LowerHalf"] z_index = 1 @@ -653,7 +850,7 @@ theme_override_constants/margin_top = 28 theme_override_constants/margin_right = 36 theme_override_constants/margin_bottom = 28 -[node name="MiddleInfo" type="RichTextLabel" parent="LowerHalf/MiddleScreen/MarginContainer"] +[node name="MiddleScreen" type="RichTextLabel" parent="LowerHalf/MiddleScreen/MarginContainer"] layout_mode = 2 theme_override_font_sizes/normal_font_size = 21 bbcode_enabled = true @@ -666,6 +863,7 @@ ACCURATE DIAGNOSES: [color=dark_orange]0/4[/color] " horizontal_alignment = 1 vertical_alignment = 1 +script = ExtResource("23_68gp8") [node name="DecisionScreen" type="Control" parent="LowerHalf"] z_index = 1 @@ -713,6 +911,7 @@ bbcode_enabled = true text = "[color=dark_green]RELEASE[/color]" horizontal_alignment = 1 vertical_alignment = 1 +script = ExtResource("20_43vqp") [node name="Terminate" type="RichTextLabel" parent="LowerHalf/DecisionScreen/MarginContainer/HBoxContainer"] layout_mode = 2 @@ -723,6 +922,7 @@ bbcode_enabled = true text = "[color=dark_red]TERMINATE[/color]" horizontal_alignment = 1 vertical_alignment = 1 +script = ExtResource("21_w70jd") [node name="Journal" type="Control" parent="LowerHalf"] anchors_preset = 0 diff --git a/supervisor.gd b/Scenes/screening_desk/supervisor.gd similarity index 98% rename from supervisor.gd rename to Scenes/screening_desk/supervisor.gd index ff8e140..6eebab2 100644 --- a/supervisor.gd +++ b/Scenes/screening_desk/supervisor.gd @@ -9,6 +9,10 @@ signal dialogue_finished func _ready(): + #Hiding + hide() + + #Setting up shader randomize() #Noise setup var noise := FastNoiseLite.new() diff --git a/supervisor.gd.uid b/Scenes/screening_desk/supervisor.gd.uid similarity index 100% rename from supervisor.gd.uid rename to Scenes/screening_desk/supervisor.gd.uid diff --git a/supervisor.gdshader b/Scenes/screening_desk/supervisor.gdshader similarity index 100% rename from supervisor.gdshader rename to Scenes/screening_desk/supervisor.gdshader diff --git a/supervisor.gdshader.uid b/Scenes/screening_desk/supervisor.gdshader.uid similarity index 100% rename from supervisor.gdshader.uid rename to Scenes/screening_desk/supervisor.gdshader.uid diff --git a/Scenes/screening_desk/terminate.gd b/Scenes/screening_desk/terminate.gd new file mode 100644 index 0000000..42dfd95 --- /dev/null +++ b/Scenes/screening_desk/terminate.gd @@ -0,0 +1,11 @@ +extends RichTextLabel + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + Globals.terminate_display.connect(self._on_terminate_display) + text = Globals.colorize("TERMINATE", "web_gray") + + +func _on_terminate_display(message:String): + text = message diff --git a/Scenes/screening_desk/terminate.gd.uid b/Scenes/screening_desk/terminate.gd.uid new file mode 100644 index 0000000..c1daa3f --- /dev/null +++ b/Scenes/screening_desk/terminate.gd.uid @@ -0,0 +1 @@ +uid://dcjfpyxp3hqg8 diff --git a/text_screens.gd b/Scenes/text_screen/text_screens.gd similarity index 100% rename from text_screens.gd rename to Scenes/text_screen/text_screens.gd diff --git a/text_screens.gd.uid b/Scenes/text_screen/text_screens.gd.uid similarity index 100% rename from text_screens.gd.uid rename to Scenes/text_screen/text_screens.gd.uid diff --git a/text_screens.tscn b/Scenes/text_screen/text_screens.tscn similarity index 99% rename from text_screens.tscn rename to Scenes/text_screen/text_screens.tscn index 65dfd84..a0f9f56 100644 --- a/text_screens.tscn +++ b/Scenes/text_screen/text_screens.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=3 uid="uid://igkl2384rxt1"] -[ext_resource type="Script" uid="uid://t5hihricayvb" path="res://text_screens.gd" id="1_16laq"] +[ext_resource type="Script" uid="uid://t5hihricayvb" path="res://Scenes/text_screen/text_screens.gd" id="1_16laq"] [ext_resource type="FontFile" uid="uid://dv8ppra5tgn1t" path="res://Art/Fonts/PixelatedEleganceRegular-ovyAA.ttf" id="4_fhc1y"] [node name="TextScreens" type="CanvasLayer"] diff --git a/title_screen.gd b/Scenes/title_screen/title_screen.gd similarity index 100% rename from title_screen.gd rename to Scenes/title_screen/title_screen.gd diff --git a/title_screen.gd.uid b/Scenes/title_screen/title_screen.gd.uid similarity index 100% rename from title_screen.gd.uid rename to Scenes/title_screen/title_screen.gd.uid diff --git a/title_screen.tscn b/Scenes/title_screen/title_screen.tscn similarity index 97% rename from title_screen.tscn rename to Scenes/title_screen/title_screen.tscn index 05f6cde..ceadbe8 100644 --- a/title_screen.tscn +++ b/Scenes/title_screen/title_screen.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=4 format=3 uid="uid://cahspuhi43bx7"] [ext_resource type="Texture2D" uid="uid://c3je4gir1qlot" path="res://Art/BlackScreen.png" id="1_3k8ub"] -[ext_resource type="Script" uid="uid://bkd300wbk2f8a" path="res://title_screen.gd" id="1_ejdst"] +[ext_resource type="Script" uid="uid://bkd300wbk2f8a" path="res://Scenes/title_screen/title_screen.gd" id="1_ejdst"] [ext_resource type="FontFile" uid="uid://dv8ppra5tgn1t" path="res://Art/Fonts/PixelatedEleganceRegular-ovyAA.ttf" id="3_vprse"] [node name="TitleScreenLayer" type="CanvasLayer"] diff --git a/transition_screen.gd b/Scenes/transition_screen/transition_screen.gd similarity index 100% rename from transition_screen.gd rename to Scenes/transition_screen/transition_screen.gd diff --git a/transition_screen.gd.uid b/Scenes/transition_screen/transition_screen.gd.uid similarity index 100% rename from transition_screen.gd.uid rename to Scenes/transition_screen/transition_screen.gd.uid diff --git a/transition_screen.tscn b/Scenes/transition_screen/transition_screen.tscn similarity index 98% rename from transition_screen.tscn rename to Scenes/transition_screen/transition_screen.tscn index 0f7a96d..f298da5 100644 --- a/transition_screen.tscn +++ b/Scenes/transition_screen/transition_screen.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=10 format=3 uid="uid://drk1l7ijo4xq5"] -[ext_resource type="Script" uid="uid://dywfa5vbgtrkb" path="res://transition_screen.gd" id="1_hbjtk"] +[ext_resource type="Script" uid="uid://dywfa5vbgtrkb" path="res://Scenes/transition_screen/transition_screen.gd" id="1_hbjtk"] [sub_resource type="Animation" id="Animation_n85x3"] length = 0.001 diff --git a/project.godot b/project.godot index 10c43d0..2681d43 100644 --- a/project.godot +++ b/project.godot @@ -11,15 +11,15 @@ config_version=5 [application] config/name="im_not_sick" -run/main_scene="res://MainHub.tscn" +run/main_scene="res://Scenes/main/Main.tscn" config/features=PackedStringArray("4.5", "Forward Plus") [autoload] -Globals="*res://globals.gd" -TransitionScreen="*res://transition_screen.tscn" -UI="*res://ui.tscn" -Patient="*res://patient_global.gd" +Globals="*res://Scenes/main/globals.gd" +TransitionScreen="*res://Scenes/transition_screen/transition_screen.tscn" +UI="*res://Scenes/UI/ui.tscn" +Patient="*res://Scenes/screening_desk/patient_global.gd" DialogueManager="*res://addons/dialogue_manager/dialogue_manager.gd" [dialogue_manager] diff --git a/screening_desk.gd b/screening_desk.gd deleted file mode 100644 index 0583a5c..0000000 --- a/screening_desk.gd +++ /dev/null @@ -1,368 +0,0 @@ -extends Control - -#DeskAssets -@onready var patient_file = $LowerHalf/Computer/Margin/ComputerScreen/ComputerTabs/FileContainer/PatientFile -@onready var patient_file_title = $LowerHalf/Computer/Margin/ComputerScreen/ComputerTabs/FileContainer/PatientFileTitle -@onready var patient_recording = $LowerHalf/Computer/Margin/ComputerScreen/ComputerTabs/Recording -@onready var patient = $UpperHalf/ControlGlass/Patient -@onready var supervisor = $UpperHalf/ControlGlass/Supervisor -@onready var next_patient = $LowerHalf/Computer/Margin/NextPatient -@onready var end_day = $LowerHalf/Computer/Margin/EndDay -@onready var green_button = $LowerHalf/GreenButton -@onready var red_button = $LowerHalf/RedButton -@onready var journal = $LowerHalf/Journal/JournalButton -@onready var journal_layer = UI.journal_layer -@onready var release = $LowerHalf/DecisionScreen/MarginContainer/HBoxContainer/Release -@onready var terminate = $LowerHalf/DecisionScreen/MarginContainer/HBoxContainer/Terminate -@onready var patient_color: Color -@onready var computer_tabs = $LowerHalf/Computer/Margin/ComputerScreen/ComputerTabs -@onready var computer_screen = $LowerHalf/Computer/Margin/ComputerScreen2 -@onready var tab_patient_file = $LowerHalf/Computer/Margin/ComputerScreen/Tabs/PatientFile -@onready var tab_rules = $LowerHalf/Computer/Margin/ComputerScreen/Tabs/Rules -@onready var tab_recording = $LowerHalf/Computer/Margin/ComputerScreen/Tabs/Recording -@onready var middle_screen = $LowerHalf/MiddleScreen/MarginContainer/MiddleInfo -@onready var console_screen = $LowerHalf/ConsoleScreen/Margin/ConsoleText - -#RoomAssets -@onready var cell_top = $RoomAssets/CellTop -@onready var cell_bot = $RoomAssets/CellBot -@onready var cell_animation = $RoomAssets/CellAnimation -@onready var cell_wall = $RoomAssets/CellWall -@onready var backwall_animation = $RoomAssets/Backwall/BackwallAnimation - -#DialogueAssets -@onready var patient_dialogue_resource: Resource -@onready var balloon: Node -@onready var patient_emotions : Dictionary -@onready var message_array: Array[String] - -var main: Node -var accurate_diagnoses = 0 - - -func _ready() -> void: - - #Referencing main node - main = get_parent() - - #Connecting signals - next_patient.get_node("CallNextPatient").pressed.connect(self._on_call_next_patient_pressed) - green_button.pressed.connect(self._on_green_button_pressed) - red_button.pressed.connect(self._on_red_button_pressed) - journal.pressed.connect(self._on_journal_pressed) - journal_layer.get_node("JournalOpen/JournalMargin/PageArea/LeftPage/CloseManual").pressed.connect(self._on_close_manual_pressed) - tab_patient_file.pressed.connect(self._on_tab_patient_file_pressed) - tab_rules.pressed.connect(self._on_tab_rules_pressed) - tab_recording.pressed.connect(self._on_tab_recording_pressed) - Globals.console_message.connect(self.console_display) - Globals.response_chosen.connect(self._on_response_chosen) - Globals.clear_patient.connect(self._on_clear_patient) - Globals.color_change.connect(self._on_color_change) - - #Hiding and showing appropriate RoomAssets - for room_asset in [cell_top, cell_bot, cell_wall]: - room_asset.hide() - for room_asset in [$RoomAssets/Glass, $RoomAssets/Room, $RoomAssets/Backwall]: - room_asset.show() - $RoomAssets/Backwall.position = Vector2(0, -2700) - - #Hiding ComputerScreen, DialogueText and JournalOpen - var nodes_to_hide = [next_patient, end_day, computer_screen, console_screen, journal_layer] + computer_tabs.get_children() - for node in nodes_to_hide: - node.hide() - - #Setting up Decision screen - release.text = Globals.colorize("RELEASE", "web_gray") - terminate.text = Globals.colorize("TERMINATE", "web_gray") - - for tab_button in [tab_patient_file, tab_rules, tab_recording]: #Hiding Tabs - tab_button.hide() - for button in [green_button, red_button]: #Disabling Buttons - button.set_disabled(true) - - patient.hide() #Hiding Patient - self.hide() #Hiding ScreeningDesk - - message_array.resize(3) #Setting up message array - - -func new_patient(): - - var new_id = Patient.generate_patient_id() - #Patient.new_patient("it_that_smiles") #Line for testing purposes - Patient.new_patient(new_id) #Line for generating new patient - patient_file.text = Patient.file_text - patient_file_title.text = Patient.file_title - patient_recording.text = "" - patient.texture = Patient.image - - #Setting up UI - next_patient.show() - console_display(Globals.directives) - - -func _on_call_next_patient_pressed(): #Brings in next patient and sets up the desk controls - - #Hiding the next_patient button and shows transition messages on computer and console - var scenes_to_hide = [next_patient, supervisor] - for scenes in scenes_to_hide: - scenes.hide() - var message : String - message = "TARGET ID : " + Globals.colorize("#" + Globals.patient_id, "orange_red") + "\n\n" + "COMPUTING CELL TRANSLATION..." - computer_display(message) - message = Globals.colorize("- BRINGING IN NEXT PATIENT -", "dark_orange") - console_display(message) - - #ShuttersIncoming - cell_animation.play("incoming") - cell_top.show() - cell_bot.show() - await cell_animation.animation_finished - - #Showing the Patient and the Backroom - var scenes_to_show = [patient, cell_wall] - for scene in scenes_to_show: - scene.show() - - #Opening Shutters - cell_animation.play("open") - await cell_animation.animation_finished - - #Activating Buttons - green_button.set_disabled(false) - red_button.set_disabled(false) - - #Coloring Release and Terminate - release.text = Globals.colorize("RELEASE", "dark_green") - terminate.text = Globals.colorize("TERMINATE", "dark_red") - - #Starting Dialogue and hiding console screen - computer_screen.hide() - console_screen.hide() - main.start_balloon("screening", "patient", Patient.dialogue_resource, "start") - - #Showing Computer Tabs and showing Patient File by default - for node in [tab_patient_file, tab_rules, tab_recording]: - node.show() - node.set_mouse_filter(Control.MOUSE_FILTER_STOP) - computer_tabs.get_node("FileContainer").show() - - -func _recording_text(dialogue_line): #Records the dialogues - - var line = dialogue_line.text - var character = dialogue_line.character - - patient_recording.append_text("\n\n") - patient_recording.append_text("[color=red]" + character + "[/color]" + "\n") - patient_recording.append_text(line) - - -func _on_response_chosen(response): #Adds protagonist responses to the recording tab - - patient_recording.append_text("\n\n") - patient_recording.append_text("[color=green]You[/color]" + "\n") - patient_recording.append_text(response.text) - - -func _on_tab_patient_file_pressed(): #Shows the patient file tab - - #Highlighting pressed tab button and unpressing the others - tab_patient_file.set_pressed(true) - tab_patient_file.set_mouse_filter(Control.MOUSE_FILTER_IGNORE) - for tab_button in [tab_rules, tab_recording]: - tab_button.set_pressed(false) - tab_button.set_mouse_filter(Control.MOUSE_FILTER_STOP) - - #Showing desired tab and hiding the others - for node in computer_tabs.get_children(): - node.hide() - computer_tabs.get_node("FileContainer").show() - - -func _on_tab_rules_pressed(): #Shows the rules tab - - #Highlighting pressed tab button and unpressing the others - tab_rules.set_pressed(true) - tab_rules.set_mouse_filter(Control.MOUSE_FILTER_IGNORE) - for tab_button in [tab_patient_file, tab_recording]: - tab_button.set_pressed(false) - tab_button.set_mouse_filter(Control.MOUSE_FILTER_STOP) - - #Showing desired tab and hiding the others - for node in computer_tabs.get_children(): - node.hide() - computer_tabs.get_node("Rules").show() - - -func _on_tab_recording_pressed(): #Shows the recording tab - - #Highlighting pressed tab button and unpressing the others - tab_recording.set_pressed(true) - tab_recording.set_mouse_filter(Control.MOUSE_FILTER_IGNORE) - for tab_button in [tab_patient_file, tab_rules]: - tab_button.set_pressed(false) - tab_button.set_mouse_filter(Control.MOUSE_FILTER_STOP) - - #Showing desired tab and hiding the others - for node in computer_tabs.get_children(): - node.hide() - computer_tabs.get_node("Recording").show() - - -func _on_green_button_pressed(): #Releases the patient - decision_made("release") - -func _on_red_button_pressed(): #Terminates the patient - decision_made("terminate") - - -func decision_made(choice: String): - - #Hiding computer tabs screen - for node in [tab_patient_file, tab_rules, tab_recording] + computer_tabs.get_children(): - node.hide() - - #Setting up console and computer displays - if choice == "release": - release.text = Globals.colorize("RELEASE", "green") #Highlighting the decision - message_array = Globals.release_messages - elif choice == "terminate": - terminate.text = Globals.colorize("TERMINATE", "red") #Highlighting the decision - message_array = Globals.terminate_messages - console_display(message_array[0]) - computer_display(message_array[2]) - - #Disabling Buttons - green_button.set_mouse_filter(Control.MOUSE_FILTER_IGNORE) - red_button.set_mouse_filter(Control.MOUSE_FILTER_IGNORE) - - #Final Patient Dialogue - main.start_balloon("screening", "patient", Patient.dialogue_resource, choice) - - -func _on_journal_pressed(): #Shows the journal - journal_layer.show() - -func _on_close_manual_pressed(): #Hides the journal - journal_layer.hide() - - -func _on_clear_patient(choice:String): #Clears patient and transitions towards next patient or end of day - - # Updating middle screen info and accurate_diagnoses value - if (Patient.abnormal == true and choice == "terminate") or (Patient.abnormal == false and choice == "release"): - accurate_diagnoses += 1 - else: - accurate_diagnoses = 0 # Resetting to 0 if the player makes a wrong diagnosis - update_middle_screen(Globals.day_count, Globals.floor_count, accurate_diagnoses, Globals.diagnoses_quota) - - #Showing second console message - console_display(message_array[1]) - - #Closing Shutters - cell_animation.play("close") - await cell_animation.animation_finished - - #Hiding the cell and restoring the backroom and patient's original colors - for scene in [patient, cell_wall]: - scene.hide() - patient.modulate = Patient.original_color - cell_wall.modulate = Patient.original_color - - #Hiding Computer screen and resetting Console screen once the animation is done - cell_animation.play(choice) - await cell_animation.animation_finished - computer_screen.hide() - console_screen.hide() - - #Reenabling mouse filter and resetting buttons - for button in [green_button, red_button]: - button.set_mouse_filter(Control.MOUSE_FILTER_STOP) - button.set_pressed(false) - button.set_disabled(true) - - #Resetting decision screen - release.text = Globals.colorize("RELEASE", "web_gray") - terminate.text = Globals.colorize("TERMINATE", "web_gray") - - #Descending Floor if diagnoses_quota reached - if accurate_diagnoses == Globals.diagnoses_quota: - descend_floor() - else: - new_patient() - - -func _on_color_change(color: String): #Modulating backroom and patient colors - - var new_color: Color - - match color: - "red": - new_color = Color(1,0.1,0.1,1) - "green": - new_color = Color(0.5,1,0.5,1) - patient.modulate = new_color - cell_wall.modulate = new_color - print("Color changed to: " + str(new_color)) - - -func console_display(message): #Displays a message on the console screen - var text = message - text = text.replace("\\n", "\n") #Replaces litteral backslashes by actual newlines (necessary because of Dialogue Manager) - console_screen.text = text - console_screen.show() - - -func computer_display(message): #Displays a message on the computer screen - var text = message - text = text.replace("\\n", "\n") #Replaces litteral backslashes by actual newlines (necessary because of Dialogue Manager) - computer_screen.text = text - computer_screen.show() - - -func update_middle_screen(day_count, floor_count, diagnoses_count, diagnoses_quota): #Updates Middle Screen Info - var day = Globals.colorize(str(day_count), "dark_orange") - var floor = Globals.colorize(str(floor_count), "dark_orange") - var diagnoses = Globals.colorize(str(diagnoses_count) + "/" + str(diagnoses_quota), "dark_orange") - - var text = "DAY: " + day + "\n\nFLOOR: " + floor + "\n\nACCURATE DIAGNOSES: " + diagnoses - - middle_screen.text = text - - -func descend_floor(): #Descends to next floor - - #Displaying information on screens - var message : String - message = Globals.colorize("DIAGNOSES QUOTA REACHED", "green_yellow") + "\n\n" + "SECURITY CLEARANCE UPDATED" + "\n\n" + Globals.colorize("ACCESS TO NEXT FLOOR AUTHORIZED", "green") - computer_display(message) - message = Globals.colorize("- DESCENT PROTOCOL INITIATED -\n\n- TRANSLATING TO NEXT FLOOR -", "dark_orange") - console_display(message) - - #Descending animation - backwall_animation.play("going_down_1") - await backwall_animation.animation_finished - backwall_animation.play("going_down_2") - await backwall_animation.animation_finished - - #Updating middle screen info - Globals.floor_count -= 1 - accurate_diagnoses = 0 - Globals.diagnoses_quota += 1 - update_middle_screen(Globals.day_count, Globals.floor_count, accurate_diagnoses, Globals.diagnoses_quota) - - #Updating journal symptoms - UI.update_journal(Globals.floor_count) - - #Hiding screen messages - computer_screen.hide() - console_screen.hide() - - #Interfloor dialogue - supervisor.dialogue("interfloor_" + str(-Globals.floor_count-1)) - await supervisor.dialogue_finished - - #Setting up new patient - new_patient() -