From f9ea0e6a5601ae1a50b0e36e981b38661a81fdd2 Mon Sep 17 00:00:00 2001 From: Maurane Date: Thu, 5 Mar 2026 18:13:49 +0100 Subject: [PATCH] new abnormal special WIP --- Art/Patients/patient_41/patient_41.aseprite | Bin 0 -> 34389 bytes Art/Patients/patient_itl/patient_itl.aseprite | Bin 4823 -> 5806 bytes Dialogues/Patients/patient_its_00.dialogue | 2 + .../prime_supervisor_loeveth.dialogue | 18 ++- Saves/save_0.json | 1 + Saves/save_1.json | 2 +- Saves/save_2.json | 2 +- Saves/save_3.json | 1 + Scenes/UI/its_game_over_control.gd | 2 +- Scenes/UI/load.gd | 2 +- Scenes/UI/pause_menu.gd | 3 +- Scenes/UI/save.gd | 2 +- Scenes/UI/ui.tscn | 57 +++++++-- Scenes/main/globals.gd | 4 +- Scenes/main/main.gd | 73 ++++------- Scenes/screening_desk/patient_global.gd | 13 +- Scenes/screening_desk/screening_desk.gd | 81 ++++++------ Scenes/title_screen/title_screen.gd | 8 +- .../transition_screen/transition_screen.tscn | 118 ------------------ 19 files changed, 150 insertions(+), 239 deletions(-) create mode 100644 Art/Patients/patient_41/patient_41.aseprite create mode 100644 Saves/save_0.json create mode 100644 Saves/save_3.json delete mode 100644 Scenes/transition_screen/transition_screen.tscn diff --git a/Art/Patients/patient_41/patient_41.aseprite b/Art/Patients/patient_41/patient_41.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..4aedb7564b2141684d31d6d7964b3d047b94f451 GIT binary patch literal 34389 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 literal 4823 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 Z)fsT(qkq!>?a%+6q62(g+rJ--{41L END @@ -99,4 +100,5 @@ do Globals.clear_patient.emit("terminate") do Globals.color_change.emit("green") [#angry] Its gaze stays fixated on you as the doors close. do Globals.clear_patient.emit("release") +do UI.save_slot_pressed.emit(0) => END \ No newline at end of file diff --git a/Dialogues/Patients/prime_supervisor_loeveth.dialogue b/Dialogues/Patients/prime_supervisor_loeveth.dialogue index b8eac14..9f6d753 100644 --- a/Dialogues/Patients/prime_supervisor_loeveth.dialogue +++ b/Dialogues/Patients/prime_supervisor_loeveth.dialogue @@ -12,6 +12,8 @@ Prime Supervisor Loeveth: [#neutral] The importance of your work here cannot be Prime Supervisor Loeveth: [#neutral] So be it. Do not disappoint me. Prime Supervisor Loeveth: [#neutral] The Republic withstands. - The Republic shelters. + set Globals.event_index = 1 + do Globals.next_event.emit(1) => END - Yes, my memory could use some refreshing. @@ -55,9 +57,10 @@ Prime Supervisor Loeveth: [#neutral] The importance of your work here cannot be Prime Supervisor Loeveth: [#neutral] So be it. Do not disappoint me. Prime Supervisor Loeveth: [#neutral] The Republic withstands. - The Republic shelters. + set Globals.event_index = 1 + do Globals.next_event.emit(1) => END - -=> END + ~ interfloor_1 @@ -74,6 +77,8 @@ Prime Supervisor: Do not get fooled by their inhuman humanity. Sort them accordi Prime Supervisor: Your [color=blue]journal[/color] has been updated with new symptoms to identify. Make sure to read it before your next patient. Prime Supervisor: Do your Duty. For the Republic. +set Globals.event_index = 1 +do Globals.next_event.emit(1) => END @@ -86,7 +91,8 @@ set Patient.dialog_tree = Patient.build_dialog_tree([]) do Globals.character_label_color_change.emit(Color(0,0.8,1,1)) WORK_IN_PROGRESS - +set Globals.event_index = 1 +do Globals.next_event.emit() => END @@ -99,7 +105,8 @@ set Patient.dialog_tree = Patient.build_dialog_tree([21,22,23,24,61,62,63]) do Globals.character_label_color_change.emit(Color(0,0.8,1,1)) WORK_IN_PROGRESS - +set Globals.event_index = 1 +do Globals.next_event.emit(1) => END @@ -112,5 +119,6 @@ set Patient.dialog_tree = Patient.build_dialog_tree([21,22,23,24,61,62,63]) do Globals.character_label_color_change.emit(Color(0,0.8,1,1)) WORK_IN_PROGRESS - +set Globals.event_index = 1 +do Globals.next_event.emit(1) => END diff --git a/Saves/save_0.json b/Saves/save_0.json new file mode 100644 index 0000000..7e8a9e1 --- /dev/null +++ b/Saves/save_0.json @@ -0,0 +1 @@ +{"accurate_diagnoses":0,"daily_patient_limit":6,"day_count":1,"diagnoses_quota":2,"event_index":0,"floor_count":-2,"its_patients_seen":[],"patient_count":0,"patient_list":["42","43","44","45","46","47","48","49","50","51"],"patients_seen":["46"],"save_date":"03/05/2026, 12:53"} \ No newline at end of file diff --git a/Saves/save_1.json b/Saves/save_1.json index a2de553..d677e5d 100644 --- a/Saves/save_1.json +++ b/Saves/save_1.json @@ -1 +1 @@ -{"daily_patient_limit":6,"day_count":1,"diagnoses_quota":2,"floor_count":-2,"its_patients_seen":[],"patient_count":0,"patient_id":"43","patient_list":["42","43","44","45","46","47","48","49","50","51"],"patients_seen":["43"],"save_date":"03/01/2026, 13:35"} \ No newline at end of file +{"accurate_diagnoses":0,"daily_patient_limit":6,"day_count":1,"diagnoses_quota":1,"event_index":1,"floor_count":-1,"its_patients_seen":[],"patient_count":1,"patient_list":["42","43","44","45","46","47","48","49","50","51"],"patients_seen":[],"save_date":"03/05/2026, 12:52"} \ No newline at end of file diff --git a/Saves/save_2.json b/Saves/save_2.json index 5e6ff1b..7e8a9e1 100644 --- a/Saves/save_2.json +++ b/Saves/save_2.json @@ -1 +1 @@ -{"daily_patient_limit":6,"day_count":1,"diagnoses_quota":2,"floor_count":-2,"its_patients_seen":[],"patient_count":1,"patient_id":"its_00","patient_list":["42","43","44","45","46","47","48","49","50","51"],"patients_seen":["43","its_00"],"save_date":"03/01/2026, 13:36"} \ No newline at end of file +{"accurate_diagnoses":0,"daily_patient_limit":6,"day_count":1,"diagnoses_quota":2,"event_index":0,"floor_count":-2,"its_patients_seen":[],"patient_count":0,"patient_list":["42","43","44","45","46","47","48","49","50","51"],"patients_seen":["46"],"save_date":"03/05/2026, 12:53"} \ No newline at end of file diff --git a/Saves/save_3.json b/Saves/save_3.json new file mode 100644 index 0000000..d9e4325 --- /dev/null +++ b/Saves/save_3.json @@ -0,0 +1 @@ +{"accurate_diagnoses":0,"daily_patient_limit":6,"day_count":1,"diagnoses_quota":2,"event_index":1,"floor_count":-2,"its_patients_seen":[],"patient_count":0,"patient_list":["42","43","44","45","46","47","48","49","50","51"],"patients_seen":["46"],"save_date":"03/05/2026, 12:53"} \ No newline at end of file diff --git a/Scenes/UI/its_game_over_control.gd b/Scenes/UI/its_game_over_control.gd index b6e176b..08e50ec 100644 --- a/Scenes/UI/its_game_over_control.gd +++ b/Scenes/UI/its_game_over_control.gd @@ -8,9 +8,9 @@ extends Control # Called when the node enters the scene tree for the first time. func _ready() -> void: + #Resets to initial state reset() - #Reveals the game over screen func reveal(): diff --git a/Scenes/UI/load.gd b/Scenes/UI/load.gd index e8cdbbf..7207fdc 100644 --- a/Scenes/UI/load.gd +++ b/Scenes/UI/load.gd @@ -19,6 +19,6 @@ func _ready() -> void: ) #Sets up save_slot array - for i in range(1, Globals.save_slot_count + 1): #Goes from 1 to 4 + for i in range(Globals.save_slot_count + 1): #Goes from 0 to 4 var slot_path = "MarginContainer/VBoxContainer/LoadSlot" + str(i) load_slot[i] = get_node(slot_path) diff --git a/Scenes/UI/pause_menu.gd b/Scenes/UI/pause_menu.gd index 4a61b5d..56edd61 100644 --- a/Scenes/UI/pause_menu.gd +++ b/Scenes/UI/pause_menu.gd @@ -33,9 +33,10 @@ func _ready() -> void: submenu.main_menu.pressed.connect(self._on_main_menu_pressed) submenu.quit.pressed.connect(func(): get_tree().quit()) - for i in range(1, Globals.save_slot_count + 1): + for i in range(1, Globals.save_slot_count + 1): #From 1 to 4, excludes the autosaveslot save.save_slot[i].pressed.connect(self._on_save_slot_pressed.bind(i)) load.load_slot[i].pressed.connect(self._on_load_slot_pressed.bind(i)) + load.load_slot[0].pressed.connect(self._on_load_slot_pressed.bind(0)) #Autosaveslot can be loaded but not saved upon #Emits save_slot signal diff --git a/Scenes/UI/save.gd b/Scenes/UI/save.gd index 9612b81..6369a55 100644 --- a/Scenes/UI/save.gd +++ b/Scenes/UI/save.gd @@ -15,6 +15,6 @@ func _ready() -> void: back.pressed.connect(func(): self.hide()) #Sets up save_slot array - for i in range(1, Globals.save_slot_count + 1): #Goes from 1 to 4 + for i in range(Globals.save_slot_count + 1): #Goes from 0 to 4 var slot_path = "MarginContainer/VBoxContainer/SaveSlot" + str(i) save_slot[i] = get_node(slot_path) diff --git a/Scenes/UI/ui.tscn b/Scenes/UI/ui.tscn index d9b6a6b..ca27f15 100644 --- a/Scenes/UI/ui.tscn +++ b/Scenes/UI/ui.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=32 format=3 uid="uid://dy40jygog8t3k"] +[gd_scene load_steps=33 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"] @@ -76,6 +76,9 @@ border_width_top = 2 border_width_right = 2 border_width_bottom = 2 +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_fevae"] +border_width_top = 2 + [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_h6tq4"] bg_color = Color(0.39215687, 0.39215687, 0.39215687, 1) border_width_left = 4 @@ -376,18 +379,36 @@ layout_mode = 2 layout_mode = 2 size_flags_vertical = 3 theme_override_fonts/normal_font = ExtResource("2_vb7na") -theme_override_font_sizes/normal_font_size = 30 +theme_override_font_sizes/normal_font_size = 35 bbcode_enabled = true text = " [center]SAVE GAME[/center]" -[node name="AutoSaveSlot" type="Button" parent="PauseMenu/Save/MarginContainer/VBoxContainer"] -custom_minimum_size = Vector2(0, 200) +[node name="SeparationLine" type="PanelContainer" parent="PauseMenu/Save/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_fevae") + +[node name="AutoSaveLabel" type="RichTextLabel" parent="PauseMenu/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 = 27 +bbcode_enabled = true +text = " +[center]AUTOSAVE[/center]" +vertical_alignment = 1 + +[node name="SaveSlot0" type="Button" parent="PauseMenu/Save/MarginContainer/VBoxContainer"] +custom_minimum_size = Vector2(0, 75) layout_mode = 2 theme_override_fonts/font = ExtResource("2_vb7na") theme_override_font_sizes/font_size = 27 text = "EMPTY" +[node name="SeparationLine2" type="PanelContainer" parent="PauseMenu/Save/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_fevae") + [node name="SaveSlot1" type="Button" parent="PauseMenu/Save/MarginContainer/VBoxContainer"] layout_mode = 2 size_flags_vertical = 3 @@ -457,23 +478,42 @@ theme_override_constants/margin_bottom = 0 [node name="VBoxContainer" type="VBoxContainer" parent="PauseMenu/Load/MarginContainer"] layout_mode = 2 +theme_override_constants/separation = 4 [node name="RichTextLabel" type="RichTextLabel" parent="PauseMenu/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 +theme_override_font_sizes/normal_font_size = 35 bbcode_enabled = true text = " -[center]LOAD GAME[/center]" +[center]SAVE GAME[/center]" -[node name="AutoSaveSlot" type="Button" parent="PauseMenu/Load/MarginContainer/VBoxContainer"] -custom_minimum_size = Vector2(0, 200) +[node name="SeparationLine" type="PanelContainer" parent="PauseMenu/Load/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_fevae") + +[node name="AutoSaveLabel" type="RichTextLabel" parent="PauseMenu/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 = 27 +bbcode_enabled = true +text = " +[center]AUTOSAVE[/center]" +vertical_alignment = 1 + +[node name="LoadSlot0" type="Button" parent="PauseMenu/Load/MarginContainer/VBoxContainer"] +custom_minimum_size = Vector2(0, 75) layout_mode = 2 theme_override_fonts/font = ExtResource("2_vb7na") theme_override_font_sizes/font_size = 27 text = "EMPTY" +[node name="SeparationLine2" type="PanelContainer" parent="PauseMenu/Load/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_fevae") + [node name="LoadSlot1" type="Button" parent="PauseMenu/Load/MarginContainer/VBoxContainer"] layout_mode = 2 size_flags_vertical = 3 @@ -512,6 +552,7 @@ theme_override_font_sizes/font_size = 20 text = "BACK" [node name="Settings" type="PanelContainer" parent="PauseMenu" node_paths=PackedStringArray("text_slider", "auto_slider", "text_counter", "auto_counter", "autoplay", "auto_mask", "display_button", "resolution_button")] +visible = false z_index = 1 custom_minimum_size = Vector2(1600, 600) layout_mode = 1 diff --git a/Scenes/main/globals.gd b/Scenes/main/globals.gd index 3c9be4a..96a063d 100644 --- a/Scenes/main/globals.gd +++ b/Scenes/main/globals.gd @@ -5,12 +5,13 @@ var day_count : int = 1 var floor_count : int = -1 var patient_count : int = 1 var its_patient_count : int = 0 +var accurate_diagnoses : int = 0 var diagnoses_quota : int = 1 var daily_patient_limit : int = 3 var patient_list = ["42", "43", "44", "45", "46", "47", "48", "49", "50", "51"] var patients_seen = [] var its_patients_seen = [] -var patient_id +var event_index = 0 #Variables for UI var save_slot_count = 4 #How many save slots there are in the game, in addition to the autosave slot @@ -38,6 +39,7 @@ signal start_balloon signal release_display signal terminate_display signal its_end +signal next_event # Called when the node enters the scene tree for the first time. func _ready() -> void: diff --git a/Scenes/main/main.gd b/Scenes/main/main.gd index 97b30aa..ff19298 100644 --- a/Scenes/main/main.gd +++ b/Scenes/main/main.gd @@ -7,7 +7,6 @@ extends Control var balloon: Node - # Called when the node enters the scene tree for the first time. func _ready() -> void: @@ -30,14 +29,15 @@ func _ready() -> void: #Connecting Signals title_screen.new_game_pressed.connect(self._on_new_game_pressed) - UI.save_slot_pressed.connect(self._on_save_slot_pressed) - UI.load_slot_pressed.connect(self._on_load_slot_pressed) + UI.save_slot_pressed.connect(self.save_game) + UI.load_slot_pressed.connect(self.load_game) UI.main_menu_pressed.connect(self._on_main_menu_pressed) UI.text_value_changed.connect(self._on_text_value_changed) UI.auto_value_changed.connect(self._on_auto_value_changed) UI.its_game_over.back_to_menu.pressed.connect(self._on_main_menu_pressed) + UI.its_game_over.reload_checkpoint.pressed.connect(self.load_game.bind(0)) Globals.character_label_color_change.connect(self._on_character_label_color_change) Globals.start_balloon.connect(self.start_balloon) @@ -56,6 +56,7 @@ func _on_new_game_pressed(): Globals.day_count = 1 Globals.floor_count = -1 Globals.patient_count = 0 + Globals.accurate_diagnoses = 0 Globals.diagnoses_quota = 1 Globals.daily_patient_limit = 6 Globals.patients_seen.clear() @@ -68,39 +69,33 @@ func _on_new_game_pressed(): start_day() - #Plays the entire introduction func play_intro(): - #PART IN PROGRESS + #WORK IN PROGRESS #Starting the day start_day() - #Starts the day func start_day(): - #Hiding Menu for cinematic impact - UI.pause_menu.menu_button.hide() - #Transitioning to day screen $TextScreens/Day.text = "[center]FLOOR " + str(Globals.floor_count) + "[/center]" - var scenes_to_hide: Array[Node] = [$TitleScreen, $TextScreens, $TextScreens/Day, $ScreeningDesk] + var scenes_to_hide: Array[Node] = [$TitleScreen, $ScreeningDesk, UI.pause_menu.menu_button, UI.its_game_over] var scenes_to_show: Array[Node] = [$TextScreens, $TextScreens/Day] UI.masks.transition(scenes_to_hide, scenes_to_show) await UI.masks.transition_finished await get_tree().create_timer(1.0).timeout #Setting up new patient - $ScreeningDesk.accurate_diagnoses = 0 #Resetting accurate_diagnoses value at the day's beginning - $ScreeningDesk.middle_screen.update(Globals.day_count, Globals.floor_count, $ScreeningDesk.accurate_diagnoses, Globals.diagnoses_quota) - - #Resetting scenes - for scene in [$ScreeningDesk, UI.its_game_over]: + $ScreeningDesk.middle_screen.update(Globals.day_count, Globals.floor_count, Globals.accurate_diagnoses, Globals.diagnoses_quota) + + for scene in [$ScreeningDesk, UI.its_game_over]: #Resetting scenes scene.reset() + $ScreeningDesk.journal_layer.update_journal(Globals.floor_count) #Updating Journal #Transitioning to the screening desk scenes_to_hide = scenes_to_show @@ -108,13 +103,7 @@ func start_day(): UI.masks.transition(scenes_to_hide, scenes_to_show) await UI.masks.transition_finished - #Supervisor Dialogue - $ScreeningDesk.supervisor.dialogue("interfloor_" + str(-Globals.floor_count-1)) - await $ScreeningDesk.supervisor.dialogue_finished - - #Setting up UI - $ScreeningDesk.console_screen.display(Globals.directives) - $ScreeningDesk.computer.next_patient_button.show() + $ScreeningDesk.event_manager(Globals.event_index) #Saves game state on the selected save slot @@ -124,11 +113,12 @@ func save_game(save_slot_number:int): var save_data = { "day_count": Globals.day_count, "floor_count": Globals.floor_count, + "event_index": Globals.event_index, "patient_count": Globals.patient_count, + "accurate_diagnoses": Globals.accurate_diagnoses, "diagnoses_quota": Globals.diagnoses_quota, "daily_patient_limit": Globals.daily_patient_limit, "patient_list": Globals.patient_list, - "patient_id": Globals.patient_id, "patients_seen": Globals.patients_seen, "its_patients_seen": Globals.its_patients_seen, "save_date": Globals.get_save_date() @@ -145,10 +135,8 @@ func save_game(save_slot_number:int): print("Failed to open file for saving.") #Updating save/load slots information - var save_slot_path = "Menu/Save/MarginContainer/VBoxContainer/SaveSlot" + str(save_slot_number) - var load_slot_path = "Menu/Load/MarginContainer/VBoxContainer/LoadSlot" + str(save_slot_number) - var save_slot = UI.get_node(save_slot_path) - var load_slot = UI.get_node(load_slot_path) + var save_slot = UI.pause_menu.save.save_slot[save_slot_number] + var load_slot = UI.pause_menu.load.load_slot[save_slot_number] save_slot.text = "FLOOR " + str(save_data["floor_count"]) + "\nSAVE DATE : " + str(save_data["save_date"]) load_slot.text = save_slot.text @@ -176,11 +164,12 @@ func load_game(load_slot_number:int): print("Loaded save: " + str(load_data)) Globals.day_count = load_data["day_count"] Globals.floor_count = load_data["floor_count"] + Globals.event_index = int(load_data["event_index"]) Globals.patient_count = load_data["patient_count"] + Globals.accurate_diagnoses = load_data["accurate_diagnoses"] Globals.diagnoses_quota = load_data["diagnoses_quota"] Globals.daily_patient_limit = load_data["daily_patient_limit"] Globals.patient_list = load_data["patient_list"] - Globals.patient_id = load_data["patient_id"] Globals.patients_seen = load_data["patients_seen"] Globals.its_patients_seen = load_data["its_patients_seen"] Patient.update_patient_list() @@ -191,31 +180,17 @@ func load_game(load_slot_number:int): start_day() - -func _on_save_slot_pressed(save_slot): - save_game(save_slot) - - - -func _on_load_slot_pressed(load_slot): - load_game(load_slot) - - - func _on_main_menu_pressed(): - #Removing mask - UI.masks.mask.visible = false + #Hiding loading menu and mask + UI.masks.mask.hide() + UI.pause_menu.reset() #Clearing balloon clear_balloon() - #Hiding menus - UI.get_node("Menu/Menu").hide() - UI.get_node("Menu/UpperContainer").hide() - #Going back to main menu - var scenes_to_hide = [$ScreeningDesk, $TextScreens, $TextScreens/Day, UI.its_game_over] + var scenes_to_hide = [$ScreeningDesk, $TextScreens, $TextScreens/Day, UI.its_game_over, UI.pause_menu.menu_button] var scenes_to_show = [$TitleScreen] UI.masks.transition(scenes_to_hide, scenes_to_show) await UI.masks.transition_finished @@ -225,12 +200,11 @@ func _on_main_menu_pressed(): scene.reset() - #Updates Save/Load Slots based on Existing Saves func update_slots(): - #Loops over the 4 save/load slots - for save_number in range(1, Globals.save_slot_count + 1): + #Loops over the 4 save/load slots + the autosaveslot + for save_number in range(Globals.save_slot_count + 1): #Retrieves save and load slots var save_slot = UI.pause_menu.save.save_slot[save_number] @@ -254,7 +228,6 @@ func update_slots(): print("Failed to parse Loading Data.") - #Starts a balloon dialogue func start_balloon(balloon_type:String, patient_type:String, dialogue_resource: Resource, start_title: String): diff --git a/Scenes/screening_desk/patient_global.gd b/Scenes/screening_desk/patient_global.gd index 77b9bd9..06dba43 100644 --- a/Scenes/screening_desk/patient_global.gd +++ b/Scenes/screening_desk/patient_global.gd @@ -11,6 +11,7 @@ var image : Texture2D var original_color: Color var emotions : Dictionary var abnormal: bool +var id : String #Patient file var file_text : String @@ -59,14 +60,11 @@ func build_dialog_tree(tree_model: Array[int]) -> Dictionary: #Builds the dialog return tree -func new_patient(patient_id): +func load_patient(patient_id): var file_path: String - - #Updating Global variables - Globals.patient_id = patient_id - Globals.patients_seen.append(patient_id) - print("Patients seen list: " + str(Globals.patients_seen)) + + id = patient_id #Loading Patient Files var config := ConfigFile.new() @@ -236,7 +234,6 @@ func next_patient() -> String: #Decides next patient ID _: next_patient_id = generate_patient_id() - return next_patient_id @@ -248,7 +245,7 @@ func update_patient_list(): if len(patient_list[i]) > 1: patient_list[i].erase(patient_id) - #Erasing its patients already seen from its patient list + #Erasing ITS patients already seen from ITS patient list for its_patient_id in Globals.its_patients_seen: if len(its_patient_list) > 1: its_patient_list.erase(its_patient_id) diff --git a/Scenes/screening_desk/screening_desk.gd b/Scenes/screening_desk/screening_desk.gd index 306c8c1..de5fc6a 100644 --- a/Scenes/screening_desk/screening_desk.gd +++ b/Scenes/screening_desk/screening_desk.gd @@ -22,7 +22,6 @@ extends Control @onready var message_array: Array[String] var main: Node -var accurate_diagnoses = 0 func _ready() -> void: @@ -37,6 +36,7 @@ func _ready() -> void: journal.pressed.connect(journal_layer._on_journal_pressed) Globals.clear_patient.connect(self._on_clear_patient) Globals.color_change.connect(self._on_color_change) + Globals.next_event.connect(self.event_manager) room_assets.reset() hide() #Hiding ScreeningDesk @@ -44,23 +44,28 @@ func _ready() -> void: message_array.resize(3) #Setting up message array -#Selecting next patient -func new_patient(): - - var new_id = Patient.next_patient() - #Patient.new_patient("49") #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 +#Manages what event should happen next +func event_manager(event_index): + match event_index: + 0: + supervisor.dialogue("interfloor_" + str(-Globals.floor_count-1)) + 1: + console_screen.display(Globals.directives) + computer.next_patient_button.show() + 2: + descend_floor() func _on_call_next_patient_pressed(): #Brings in next patient and sets up the desk controls - #Selecting next_patient - new_patient() + #Selecting next patient + Patient.load_patient(Patient.next_patient()) + #Patient.load_patient("49") #Line for testing purposes + #Updating patient information + computer.patient_file.text = Patient.file_text + computer.recording.text = "" + patient.texture = Patient.image #Hiding the next_patient button var scenes_to_hide = [computer.next_patient_button, supervisor] @@ -109,9 +114,6 @@ func _on_call_next_patient_pressed(): #Brings in next patient and sets up the de 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 @@ -144,10 +146,14 @@ 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 + Globals.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) + Globals.accurate_diagnoses = 0 # Resetting to 0 if the player makes a wrong diagnosis + middle_screen.update(Globals.day_count, Globals.floor_count, Globals.accurate_diagnoses, Globals.diagnoses_quota) + + Globals.patients_seen.append(Patient.id) #Updating Patient seens list + print("Updated patients seen list: " + str(Globals.patients_seen)) + Globals.patient_count += 1 #Updating patient_count #Showing second console message console_screen.display(message_array[1]) @@ -170,12 +176,10 @@ func _on_clear_patient(choice:String): reset() #Descending Floor if diagnoses_quota reached - if accurate_diagnoses == Globals.diagnoses_quota: - descend_floor() - else: - #Setting up UI - computer.next_patient_button.show() - console_screen.display(Globals.directives) + if Globals.accurate_diagnoses == Globals.diagnoses_quota: + Globals.event_index = 2 + + event_manager(Globals.event_index) func _on_color_change(color: String): #Modulating backroom and patient colors @@ -194,6 +198,13 @@ func _on_color_change(color: String): #Modulating backroom and patient colors func descend_floor(): #Descends to next floor + #Updating Global variables + Globals.event_index = 0 + Globals.floor_count -= 1 + Globals.accurate_diagnoses = 0 + Globals.diagnoses_quota += 1 + Globals.patient_count = 0 + #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") @@ -208,28 +219,20 @@ func descend_floor(): #Descends to next floor await room_assets.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) + middle_screen.update(Globals.day_count, Globals.floor_count, Globals.accurate_diagnoses, Globals.diagnoses_quota) - #Resetting patient_count - Globals.patient_count = 0 - #Updating journal symptoms - journal_layer.update_journal(Globals.floor_count) + 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 + #Autosaving + main.save_game(0) - #Setting up UI - computer.next_patient_button.show() - console_screen.display(Globals.directives) + #Selecting next event + event_manager(Globals.event_index) #Resets to initial state diff --git a/Scenes/title_screen/title_screen.gd b/Scenes/title_screen/title_screen.gd index bfce19a..b75d6b0 100644 --- a/Scenes/title_screen/title_screen.gd +++ b/Scenes/title_screen/title_screen.gd @@ -22,21 +22,21 @@ func _ready() -> void: hide() -func _on_new_game_pressed() -> void: +func _on_new_game_pressed() -> void: #Starst a new game new_game_pressed.emit() -func _on_load_pressed(): +func _on_load_pressed(): #Shows the Load menu UI.pause_menu.load.show() UI.masks.mask.show() UI.in_title_screen = true -func _on_settings_pressed() -> void: +func _on_settings_pressed() -> void: #Shows the Settings menu UI.pause_menu.settings.show() UI.masks.mask.show() UI.in_title_screen = true -func _on_quit_game_pressed(): +func _on_quit_game_pressed(): #Quits the game get_tree().quit() diff --git a/Scenes/transition_screen/transition_screen.tscn b/Scenes/transition_screen/transition_screen.tscn deleted file mode 100644 index 644d4d0..0000000 --- a/Scenes/transition_screen/transition_screen.tscn +++ /dev/null @@ -1,118 +0,0 @@ -[gd_scene load_steps=7 format=3 uid="uid://ct7ccfv6yj73u"] - -[ext_resource type="Script" uid="uid://dbjei4d2lfwnb" path="res://Scenes/UI/fading_mask.gd" id="2_m3r4n"] - -[sub_resource type="GDScript" id="GDScript_3575e"] -script/source = "extends CanvasLayer - -@onready var fading_mask = $FadingMask -@onready var its_game_over = $ITSGameOver -@onready var mask = $Mask - -signal transition_finished - -# Called when the node enters the scene tree for the first time. -func _ready() -> void: - pass - - -#Transitions the scenes with a fading mask -func transition(scenes_to_hide, scenes_to_show): - - #Fade in - fading_mask.fade_in() - await fading_mask.animation.animation_finished - - #Hides and show appropriates scenes - for scene in scenes_to_hide: - scene.hide() - for scene in scenes_to_show: - scene.show() - - #Fade out - fading_mask.fade_out() - await fading_mask.animation.animation_finished - transition_finished.emit() -" - -[sub_resource type="Animation" id="Animation_n85x3"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("FadingMask:modulate") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Color(0, 0, 0, 0)] -} - -[sub_resource type="Animation" id="Animation_20bx3"] -resource_name = "fade_to_black" -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("FadingMask:modulate") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 1), -"transitions": PackedFloat32Array(1, 1), -"update": 0, -"values": [Color(0, 0, 0, 0), Color(0, 0, 0, 1)] -} - -[sub_resource type="Animation" id="Animation_in743"] -resource_name = "fade_to_normal" -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("FadingMask:modulate") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 1), -"transitions": PackedFloat32Array(1, 1), -"update": 0, -"values": [Color(0, 0, 0, 1), Color(0, 0, 0, 0)] -} - -[sub_resource type="AnimationLibrary" id="AnimationLibrary_5yx4m"] -_data = { -&"RESET": SubResource("Animation_n85x3"), -&"fade_in": SubResource("Animation_20bx3"), -&"fade_out": SubResource("Animation_in743") -} - -[node name="transition_screen" type="CanvasLayer"] -layer = 98 -script = SubResource("GDScript_3575e") - -[node name="FadingMask" type="ColorRect" parent="."] -modulate = Color(0, 0, 0, 0) -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -color = Color(0, 0, 0, 1) -script = ExtResource("2_m3r4n") - -[node name="FadingMaskAnimation" type="AnimationPlayer" parent="FadingMask"] -root_node = NodePath("../..") -libraries = { -&"": SubResource("AnimationLibrary_5yx4m") -} - -[node name="Mask" 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.470588)