diff --git a/Dialogues/interfloor.dialogue b/Dialogues/interfloor.dialogue index 0d32f67..df05d9d 100644 --- a/Dialogues/interfloor.dialogue +++ b/Dialogues/interfloor.dialogue @@ -1,3 +1,15 @@ +~ interfloor_0 + +do Patient.marker.fill(0) +set Patient.dialog_tree = Patient.build_dialog_tree([]) + +do Globals.character_label_color_change.emit(Color(0,0.8,1,1)) + +Prime Supervisor: FIRST DIALOGUE - WORK IN PROGRESS + +=> END + + ~ interfloor_1 do Patient.marker.fill(0) diff --git a/main_hub.gd b/main_hub.gd index 7260012..70c8527 100644 --- a/main_hub.gd +++ b/main_hub.gd @@ -95,16 +95,21 @@ func start_day(): await get_tree().create_timer(1.0).timeout #Setting up new patient - $ScreeningDesk.console_display(Globals.directives) $ScreeningDesk.accurate_diagnoses = 0 #Resetting accurate_diagnoses value at the day's beginning - $ScreeningDesk.new_patient() $ScreeningDesk.update_middle_screen(Globals.day_count, Globals.floor_count, $ScreeningDesk.accurate_diagnoses, Globals.diagnoses_quota) #Transitioning to the screening desk scenes_to_hide = scenes_to_show - scenes_to_show = [$ScreeningDesk, $ScreeningDesk.next_patient, UI, UI.get_node("UI/UpperContainer")] + scenes_to_show = [$ScreeningDesk, UI, UI.get_node("UI/UpperContainer")] TransitionScreen.transition("big", scenes_to_hide, scenes_to_show) await TransitionScreen.transition_finished + + #Supervisor Dialogue + $ScreeningDesk.supervisor_dialogue(Globals.interfloor_dialogue, "interfloor_" + str(-Globals.floor_count-1)) + await $ScreeningDesk.supervisor_dialogue_finished + + $ScreeningDesk.console_display(Globals.directives) + $ScreeningDesk.new_patient() #Saves game state on the selected save slot diff --git a/screening_desk.gd b/screening_desk.gd index e3c30ab..5d4bf08 100644 --- a/screening_desk.gd +++ b/screening_desk.gd @@ -5,6 +5,7 @@ extends Control @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 @@ -38,6 +39,8 @@ extends Control var main: Node var accurate_diagnoses = 0 +signal supervisor_dialogue_finished + func _ready() -> void: #Referencing main node @@ -366,12 +369,25 @@ func descend_floor(): #Descends to next floor console_screen.hide() #Interfloor dialogue - var file_path = "res://Art/Patients/prime_supervisor/prime_supervisor_hologram.png" - patient.texture = load(file_path) - patient.show() - main.start_balloon("screening", Globals.interfloor_dialogue, "interfloor_" + str(-Globals.floor_count-1)) - await DialogueManager.dialogue_ended - patient.hide() + supervisor_dialogue(Globals.interfloor_dialogue, "interfloor_" + str(-Globals.floor_count-1)) + await supervisor_dialogue_finished #Setting up new patient new_patient() + + + +#Supervisor dialogue, mainly between floors +func supervisor_dialogue(dialogue_resource, dialogue_start): + + #Interfloor dialogue + supervisor.show() + supervisor.reveal_spray() + await supervisor.reveal_done + main.start_balloon("screening", dialogue_resource, dialogue_start) + await DialogueManager.dialogue_ended + supervisor.hide_spray() + await supervisor.hide_done + supervisor.hide() + + supervisor_dialogue_finished.emit() diff --git a/screening_desk.tscn b/screening_desk.tscn index e7da8c6..bbda372 100644 --- a/screening_desk.tscn +++ b/screening_desk.tscn @@ -1,9 +1,11 @@ -[gd_scene load_steps=40 format=3 uid="uid://chytk2cctjk3x"] +[gd_scene load_steps=43 format=3 uid="uid://chytk2cctjk3x"] [ext_resource type="Script" uid="uid://b3ms0imu0umn8" path="res://screening_desk.gd" id="1_1s7k3"] [ext_resource type="Texture2D" uid="uid://5f5bsergnjtv" path="res://Art/Patients/prime_supervisor/prime_supervisor_hologram.png" id="3_fev1v"] [ext_resource type="Texture2D" uid="uid://b2epvjeqvmgrs" path="res://Art/Rooms/screening_room/screening_room_glass.png" id="3_nxnrp"] [ext_resource type="Texture2D" uid="uid://by34irl73n8pb" path="res://Art/Rooms/screening_room/backroom.png" id="4_fij8w"] +[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="Texture2D" uid="uid://ds1whnmwt7xjt" path="res://Art/Rooms/screening_room/screening_room.png" id="5_aa8r5"] [ext_resource type="Texture2D" uid="uid://4qtc0tkq2wba" path="res://Art/Rooms/screening_room/shutter_top.png" id="6_1rj24"] [ext_resource type="Texture2D" uid="uid://cci0pb12chlps" path="res://Art/Rooms/screening_room/computer.png" id="6_6a8ar"] @@ -31,6 +33,11 @@ [sub_resource type="Theme" id="Theme_63o5x"] RichTextLabel/fonts/normal_font = ExtResource("14_0pvwy") +[sub_resource type="ShaderMaterial" id="ShaderMaterial_w70jd"] +shader = ExtResource("4_qsin6") +shader_parameter/progress = 0.0 +shader_parameter/softness = 0.05 + [sub_resource type="Animation" id="Animation_ub1ft"] length = 0.001 tracks/0/type = "value" @@ -296,6 +303,7 @@ grow_horizontal = 2 grow_vertical = 2 [node name="Patient" type="TextureRect" parent="UpperHalf/ControlGlass"] +visible = false z_index = 2 layout_mode = 1 anchors_preset = 7 @@ -311,6 +319,25 @@ grow_vertical = 0 texture = ExtResource("3_fev1v") stretch_mode = 3 +[node name="Supervisor" type="TextureRect" parent="UpperHalf/ControlGlass"] +visible = false +z_index = 2 +material = SubResource("ShaderMaterial_w70jd") +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -300.0 +offset_top = -450.0 +offset_right = 300.0 +grow_horizontal = 2 +grow_vertical = 0 +texture = ExtResource("3_fev1v") +stretch_mode = 3 +script = ExtResource("5_43vqp") + [node name="LowerHalf" type="Control" parent="."] z_index = 6 layout_mode = 1 diff --git a/supervisor.gd b/supervisor.gd new file mode 100644 index 0000000..4eaf99f --- /dev/null +++ b/supervisor.gd @@ -0,0 +1,54 @@ +extends TextureRect + +@onready var mat := material as ShaderMaterial + +signal reveal_done +signal hide_done + +func _ready(): + + randomize() + # --- Création du bruit --- + var noise := FastNoiseLite.new() + noise.noise_type = FastNoiseLite.TYPE_SIMPLEX + noise.frequency = 20.0 + noise.seed = randi() + + var noise_tex := NoiseTexture2D.new() + noise_tex.noise = noise + noise_tex.width = 512 + noise_tex.height = 512 + noise_tex.seamless = true + + mat.set_shader_parameter("noise_tex", noise_tex) + + +func reveal_spray(): + + mat.set_shader_parameter("progress", 0.0) + + var tween = create_tween() + tween.tween_method(set_progress, 0.0, 1.0, 3.0) \ + .set_trans(Tween.TRANS_SINE) \ + .set_ease(Tween.EASE_OUT) + + await tween.finished + reveal_done.emit() + + +func hide_spray(): + + mat.set_shader_parameter("progress", 1.0) + + var tween = create_tween() + tween.tween_method(set_progress, 1.0, 0.0, 3.0) \ + .set_trans(Tween.TRANS_SINE) \ + .set_ease(Tween.EASE_OUT) + + await tween.finished + hide_done.emit() + + +func set_progress(value: float): + + mat.set_shader_parameter("progress", value) diff --git a/supervisor.gd.uid b/supervisor.gd.uid new file mode 100644 index 0000000..817cbf9 --- /dev/null +++ b/supervisor.gd.uid @@ -0,0 +1 @@ +uid://cdkbyikbjqlsh diff --git a/supervisor.gdshader b/supervisor.gdshader new file mode 100644 index 0000000..8d3c106 --- /dev/null +++ b/supervisor.gdshader @@ -0,0 +1,12 @@ +shader_type canvas_item; + +uniform sampler2D noise_tex; +uniform float progress : hint_range(0.0, 1.0) = 0.0; +uniform float softness : hint_range(0.001, 0.2) = 0.05; + +void fragment() { + vec4 img = texture(TEXTURE, UV); + float noise = texture(noise_tex, UV).r; + float alpha = 1.0 - smoothstep(progress - softness, progress + softness, noise); + COLOR = vec4(img.rgb, img.a * alpha); +} \ No newline at end of file diff --git a/supervisor.gdshader.uid b/supervisor.gdshader.uid new file mode 100644 index 0000000..56df8b4 --- /dev/null +++ b/supervisor.gdshader.uid @@ -0,0 +1 @@ +uid://dwepb0lm1veje