diff --git a/Dialogues/balloon.gd b/Dialogues/balloon.gd index 1480e03..229c650 100644 --- a/Dialogues/balloon.gd +++ b/Dialogues/balloon.gd @@ -64,8 +64,8 @@ var dialogue_line: DialogueLine: if dialogue_line.responses.size() > 0: balloon.focus_mode = Control.FOCUS_NONE responses_menu.show() - elif dialogue_line.time != "": - var time = dialogue_line.text.length() * 0.02 if dialogue_line.time == "auto" else dialogue_line.time.to_float() + elif UI.is_auto: + var time = UI.auto_speed await get_tree().create_timer(time).timeout next(dialogue_line.next_id) else: diff --git a/dialogue_screens.gd b/dialogue_screens.gd index 574fdf3..56052b7 100644 --- a/dialogue_screens.gd +++ b/dialogue_screens.gd @@ -5,27 +5,3 @@ var balloon: Node # Called when the node enters the scene tree for the first time. func _ready() -> void: self.hide() - - - -func start_balloon(dialogue_resource: Resource, start_title: String): - - #Freeing Previous Balloon and Disconnecting DialogueManager signals - clean_balloon() - - #Instantiating a custom balloon - var balloon_path = "res://Dialogues/balloon_big.tscn" - var Balloon: Resource = load(balloon_path) - balloon = Balloon.instantiate() - get_tree().current_scene.add_child(balloon) - - #Starting dialogue - balloon.start(dialogue_resource, start_title) - - - -func clean_balloon(): - - #Freeing Previous Balloon - if is_instance_valid(balloon): - balloon.queue_free() diff --git a/main_hub.gd b/main_hub.gd index d7f1301..a07be91 100644 --- a/main_hub.gd +++ b/main_hub.gd @@ -43,6 +43,9 @@ func _ready() -> void: UI.connect("main_menu_pressed", self._on_main_menu_pressed) screening_desk.connect("recovery_pressed", self._on_recovery_pressed) + UI.connect("text_value_changed", self._on_text_value_changed) + UI.connect("auto_value_changed", self._on_auto_value_changed) + #Updating Save/Load Slots Information based on Existing Saves update_slots() @@ -73,7 +76,7 @@ func play_intro(): TransitionScreen.transition("big", [$TextScreens, $TextScreens/MarginContainer, text_container.get_child(4), UI, UI.get_node("UI/SkipContainer")], [$DialogueScreens]) await TransitionScreen.transition_finished - $DialogueScreens.start_balloon(Globals.dialogue_intro, "start") + start_balloon("big", Globals.dialogue_intro, "start") await DialogueManager.dialogue_ended #Starting the day @@ -84,6 +87,9 @@ func play_intro(): #Starts the day func start_day(): + #Hiding Menu for cinematic impact + UI.get_node("UI/UpperContainer").hide() + #Transitioning to day screen $TextScreens/Day.text = "[center]DAY " + str(Globals.day_count) + "[/center]" @@ -91,10 +97,12 @@ func start_day(): var scenes_to_show: Array[Node] = [$TextScreens, $TextScreens/Day] TransitionScreen.transition("big", scenes_to_hide, scenes_to_show) await TransitionScreen.transition_finished - await get_tree().create_timer(3.0).timeout + await get_tree().create_timer(2.0).timeout #Transitioning to the screening desk - TransitionScreen.transition("big", [$TextScreens, $TextScreens/Day], [$ScreeningDesk, $ScreeningDesk.alone_controls, UI, UI.get_node("UI/UpperContainer")]) + scenes_to_hide = scenes_to_show + scenes_to_show = [$ScreeningDesk, $ScreeningDesk.alone_controls, UI, UI.get_node("UI/UpperContainer")] + TransitionScreen.transition("big", scenes_to_hide, scenes_to_show) await TransitionScreen.transition_finished #Setting up new patient @@ -112,7 +120,7 @@ func _on_recovery_pressed(): await TransitionScreen.transition_finished #End of day dialogue - $DialogueScreens.start_balloon(Globals.dialogue_recovery, "end_of_day_" + str(Globals.day_count)) + start_balloon("big", Globals.dialogue_recovery, "end_of_day_" + str(Globals.day_count)) await DialogueManager.dialogue_ended #Start of the next day @@ -157,16 +165,14 @@ func save_game(save_slot_number:int): #Loads save file from the selected load slot func load_game(load_slot_number:int): - #CLeaning balloons - $DialogueScreens.clean_balloon() - $ScreeningDesk.clean_balloon() + #CLearing balloon + clear_balloon() #Hiding loading menus and masks TransitionScreen.mask.visible = false UI.get_node("UI/Menu").hide() UI.get_node("UI/UpperContainer").hide() UI.get_node("UI/Load").hide() - UI.get_node("UI/LoadTitle").hide() #Opening save file var file = FileAccess.open("res://Saves/save_" + str(load_slot_number) + ".json", FileAccess.READ) @@ -207,9 +213,8 @@ func _on_main_menu_pressed(): #Removing mask TransitionScreen.mask.visible = false - #Cleaning balloons - $DialogueScreens.clean_balloon() - $ScreeningDesk.clean_balloon() + #Clearing balloon + clear_balloon() #Hiding menus UI.get_node("UI/Menu").hide() @@ -232,10 +237,8 @@ func update_slots(): #Retrieves save and load slots var save_slot_path = "UI/Save/MarginContainer/VBoxContainer/SaveSlot" + str(save_number) var load_slot_path = "UI/Load/MarginContainer/VBoxContainer/LoadSlot" + str(save_number) - var load_title_slot_path = "UI/LoadTitle/MarginContainer/VBoxContainer/LoadSlot" + str(save_number) var save_slot = UI.get_node(save_slot_path) var load_slot = UI.get_node(load_slot_path) - var load_title_slot = UI.get_node(load_title_slot_path) #Retrieves save path var save_path = "res://Saves/save_" + str(save_number) + ".json" @@ -251,6 +254,57 @@ func update_slots(): print(load_data) save_slot.text = "DAY " + str(load_data["day_count"]) + ", PATIENT " + str(load_data["patient_count"]) + "\nSAVE DATE : " + str(load_data["save_date"]) load_slot.text = save_slot.text - load_title_slot.text = save_slot.text else: print("Failed to parse Loading Data.") + + + +#Starts a balloon dialogue +func start_balloon(panel_size:String, dialogue_resource: Resource, start_title: String): + + #Clearing previous balloon + clear_balloon() + + #Instantiating a custom balloon + var Balloon: Resource = load("res://Dialogues/balloon_" + panel_size + ".tscn") + balloon = Balloon.instantiate() + get_tree().current_scene.add_child(balloon) + + #Connects emotion signals if needed + if panel_size == "small": + DialogueManager.got_dialogue.connect($ScreeningDesk._change_emotion) + DialogueManager.got_dialogue.connect($ScreeningDesk._recording_text) + + #Applies text settings to the balloon + balloon.dialogue_label.seconds_per_step = UI.text_speed + #balloon.dialogue_line.time = UI.auto_speed + + #Starts dialogue + balloon.start(dialogue_resource, start_title) + + +#Clearing balloon +func clear_balloon(): + + #Clearing Previous Balloon + if is_instance_valid(balloon): + balloon.queue_free() + + #Disconnecting emotion signals + if DialogueManager.is_connected("got_dialogue", $ScreeningDesk._change_emotion): + DialogueManager.disconnect("got_dialogue", $ScreeningDesk._change_emotion) + if DialogueManager.is_connected("got_dialogue", $ScreeningDesk._recording_text): + DialogueManager.disconnect("got_dialogue", $ScreeningDesk._recording_text) + + +#Changes text_speed value +func _on_text_value_changed(): + if is_instance_valid(balloon): + balloon.dialogue_label.seconds_per_step = UI.text_speed + + +#Changes auto_speed value +func _on_auto_value_changed(): + if is_instance_valid(balloon): + #balloon.dialogue_line.time = UI.auto_speed + pass diff --git a/project.godot b/project.godot index 7cbd853..d7e1d35 100644 --- a/project.godot +++ b/project.godot @@ -16,8 +16,8 @@ config/features=PackedStringArray("4.3", "Forward Plus") [autoload] -TransitionScreen="*res://transition_screen.tscn" DialogueManager="*res://addons/dialogue_manager/dialogue_manager.gd" +TransitionScreen="*res://transition_screen.tscn" UI="*res://ui.tscn" Globals="*res://globals.gd" CurrentPatient="*res://current_patient.gd" diff --git a/screening_desk.gd b/screening_desk.gd index 2647e41..018e811 100644 --- a/screening_desk.gd +++ b/screening_desk.gd @@ -18,11 +18,14 @@ extends Control signal recovery_pressed - +var main: Node # Called when the node enters the scene tree for the first time. func _ready() -> void: + #Referencing main node + main = get_parent() + #Connecting signals alone_controls.get_node("PatientFile").pressed.connect(self._on_patient_file_pressed) alone_controls.get_node("Guidebook").pressed.connect(self._on_guidebook_pressed) @@ -125,7 +128,7 @@ func _on_call_next_patient_pressed(): await TransitionScreen.transition_finished #Starting Dialogue - start_balloon(patient_dialogue_resource, "start") + main.start_balloon("small", patient_dialogue_resource, "start") @@ -203,24 +206,6 @@ func _on_psych_ward_pressed(): -#Starting dialogue -func start_balloon(dialogue_resource: Resource, start_title: String): - - #Freeing Previous Balloon and Disconnecting DialogueManager signals - clean_balloon() - - #Instantiating a custom balloon - var Balloon: Resource = load("res://Dialogues/balloon_small.tscn") - balloon = Balloon.instantiate() - get_tree().current_scene.add_child(balloon) - - #Starting Dialogue and connecting DialogueManager signals - DialogueManager.got_dialogue.connect(_change_emotion) - DialogueManager.got_dialogue.connect(_recording_text) - balloon.start(dialogue_resource, start_title) - - - #Clears patient and transitions towards next patient or end of day func clear_patient(choice:String): @@ -229,7 +214,7 @@ func clear_patient(choice:String): _on_examine_pressed() #Final Patient Dialogue - start_balloon(patient_dialogue_resource, choice) + main.start_balloon("small", patient_dialogue_resource, choice) await DialogueManager.dialogue_ended #Transitioning @@ -254,24 +239,11 @@ func clear_patient(choice:String): #Starting End of Day Dialogue var start_title = "end_of_day_" + str(Globals.day_count) - start_balloon(end_of_day_dialogue_resource, start_title) + main.start_balloon("small", end_of_day_dialogue_resource, start_title) func _on_recovery_pressed(): - clean_balloon() + main.clear_balloon() recovery_pressed.emit() - - - -#Cleaning balloon -func clean_balloon(): - - #Freeing Previous Balloon and Disconnecting DialogueManager signals - if is_instance_valid(balloon): - balloon.queue_free() - if DialogueManager.is_connected("got_dialogue", _change_emotion): - DialogueManager.disconnect("got_dialogue", _change_emotion) - if DialogueManager.is_connected("got_dialogue", _recording_text): - DialogueManager.disconnect("got_dialogue", _recording_text) diff --git a/title_screen.gd b/title_screen.gd index cff596e..c9b36cb 100644 --- a/title_screen.gd +++ b/title_screen.gd @@ -1,7 +1,6 @@ extends CanvasLayer signal new_game_pressed -signal settings_pressed # Called when the node enters the scene tree for the first time. @@ -24,13 +23,18 @@ func _on_new_game_pressed() -> void: func _on_load_pressed(): - UI.get_node("UI/LoadTitle").show() + UI.get_node("UI/Load").show() + UI.get_node("UI/Load/MarginContainer/VBoxContainer/Control/Back").hide() + UI.get_node("UI/Load/MarginContainer/VBoxContainer/Control/BackTitle").show() TransitionScreen.mask.visible = true func _on_settings_pressed() -> void: - settings_pressed.emit() + UI.get_node("UI/Settings").show() + UI.get_node("UI/Settings/MarginContainer/VBoxContainer/Control/Back").hide() + UI.get_node("UI/Settings/MarginContainer/VBoxContainer/Control/BackTitle").show() + TransitionScreen.mask.visible = true diff --git a/ui.gd b/ui.gd index 5c2004d..6e1ec68 100644 --- a/ui.gd +++ b/ui.gd @@ -3,14 +3,37 @@ extends CanvasLayer @onready var next = $UI/SkipContainer/NextButton @onready var confirmation_mask = $ConfirmationMask +#Signals for progressing through slides signal next_request signal next_slide + +#Signals for saving and loading signal save_slot_pressed(save_slot_number: int) signal load_slot_pressed(load_slot_number: int) + +#Signal for going back to main menu signal main_menu_pressed +#Preloading Confirmation dialog var confirmation_dialog = preload("res://confirmation_dialog.tscn") +#Text settings sliders +@export var text_slider: Node +@export var auto_slider: Node +@export var text_counter: Node +@export var auto_counter: Node +@export var autoplay: Node +@export var auto_mask: ColorRect + +#Vars and signals for handling text settings +var text_speed: float +var auto_speed: float +var is_auto = false +signal text_value_changed +signal auto_value_changed + + + # Called when the node enters the scene tree for the first time. func _ready() -> void: @@ -29,9 +52,10 @@ func _ready() -> void: $UI/Menu/MarginContainer/VBoxContainer/MainMenu.pressed.connect(_on_main_menu_pressed) $UI/Menu/MarginContainer/VBoxContainer/Quit.pressed.connect(_on_quit_game_pressed) $UI/Save/MarginContainer/VBoxContainer/Back.pressed.connect(_on_back_pressed) - $UI/Load/MarginContainer/VBoxContainer/Back.pressed.connect(_on_back_pressed) - $UI/LoadTitle/MarginContainer/VBoxContainer/Back.pressed.connect(_on_back_title_pressed) - $UI/Settings/MarginContainer/VBoxContainer/Back.pressed.connect(_on_back_pressed) + $UI/Load/MarginContainer/VBoxContainer/Control/Back.pressed.connect(_on_back_pressed) + $UI/Load/MarginContainer/VBoxContainer/Control/BackTitle.pressed.connect(_on_back_title_pressed) + $UI/Settings/MarginContainer/VBoxContainer/Control/Back.pressed.connect(_on_back_pressed) + $UI/Settings/MarginContainer/VBoxContainer/Control/BackTitle.pressed.connect(_on_back_title_pressed) #Save Slots Signals $UI/Save/MarginContainer/VBoxContainer/SaveSlot1.pressed.connect(func(): _on_save_slot_pressed(1)) @@ -45,20 +69,26 @@ func _ready() -> void: $UI/Load/MarginContainer/VBoxContainer/LoadSlot3.pressed.connect(func(): _on_load_slot_pressed(3)) $UI/Load/MarginContainer/VBoxContainer/LoadSlot4.pressed.connect(func(): _on_load_slot_pressed(4)) - #Load Title Slots Signals - $UI/LoadTitle/MarginContainer/VBoxContainer/LoadSlot1.pressed.connect(func(): _on_load_slot_pressed(1)) - $UI/LoadTitle/MarginContainer/VBoxContainer/LoadSlot2.pressed.connect(func(): _on_load_slot_pressed(2)) - $UI/LoadTitle/MarginContainer/VBoxContainer/LoadSlot3.pressed.connect(func(): _on_load_slot_pressed(3)) - $UI/LoadTitle/MarginContainer/VBoxContainer/LoadSlot4.pressed.connect(func(): _on_load_slot_pressed(4)) + #Text settings signals + text_slider.value_changed.connect(_on_text_value_changed) + auto_slider.value_changed.connect(_on_auto_value_changed) + autoplay.pressed.connect(_on_autoplay_pressed) + + text_speed = 0.1 / text_slider.value + auto_speed = 0.4 * auto_slider.value + text_counter.text = "[center]" + str(snapped((text_speed * 1000), 1)) + " ms/letter[/center]" + auto_counter.text = "[center]" + str(snapped(auto_speed, 0.01)) + " s delay[/center]" + + #Initializes the auto-advance to false + autoplay.button_pressed = false + auto_mask.visible = true #Hiding everything at start - #self.hide() - self.get_node("UI/UpperContainer").hide() - self.get_node("UI/SkipContainer").hide() + for node in $UI.get_children(): + node.hide() confirmation_mask.visible = false - #Brings up a Confirmation Dialog func ask_confirmation(function_yes: Callable, function_no: Callable, choice_text: String): @@ -133,6 +163,8 @@ func _on_save_pressed(): func _on_load_pressed(): $UI/Menu.hide() $UI/Load.show() + $UI/Load/MarginContainer/VBoxContainer/Control/BackTitle.hide() + $UI/Load/MarginContainer/VBoxContainer/Control/Back.show() @@ -147,7 +179,8 @@ func _on_back_pressed(): #Goes back to title screen func _on_back_title_pressed(): - $UI/LoadTitle.hide() + $UI/Load.hide() + $UI/Settings.hide() TransitionScreen.mask.visible = false @@ -156,6 +189,8 @@ func _on_back_title_pressed(): func _on_settings_pressed(): $UI/Menu.hide() $UI/Settings.show() + $UI/Settings/MarginContainer/VBoxContainer/Control/BackTitle.hide() + $UI/Settings/MarginContainer/VBoxContainer/Control/Back.show() @@ -204,3 +239,28 @@ func _on_load_slot_pressed(load_slot_number: int): ask_confirmation(lambda, Callable(), choice_text) else: pass + + +#Changes text_speed value +func _on_text_value_changed(new_value: float): + text_speed = 0.1 / new_value + text_counter.text = "[center]" + str(snapped((text_speed * 1000), 1)) + " ms/letter[/center]" + text_value_changed.emit() + + +#Changes auto_speed value +func _on_auto_value_changed(new_value: float): + auto_speed = 0.4 * new_value + auto_counter.text = "[center]" + str(snapped(auto_speed, 0.01)) + " s delay[/center]" + auto_value_changed.emit() + + +#Toggles auto-advance +func _on_autoplay_pressed(): + if autoplay.button_pressed: + is_auto = true + auto_mask.visible = false + else: + is_auto = false + auto_mask.visible = true + diff --git a/ui.tscn b/ui.tscn index acaf319..a11948b 100644 --- a/ui.tscn +++ b/ui.tscn @@ -10,9 +10,15 @@ border_width_top = 2 border_width_right = 2 border_width_bottom = 2 -[node name="UILayer" type="CanvasLayer"] +[node name="UILayer" type="CanvasLayer" node_paths=PackedStringArray("text_slider", "auto_slider", "text_counter", "auto_counter", "autoplay", "auto_mask")] layer = 127 script = ExtResource("1_mg12k") +text_slider = NodePath("UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer/VBoxContainer2/DialogueOptions/VBoxContainer/TextSpeed/TextSlider") +auto_slider = NodePath("UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer/VBoxContainer2/DialogueOptions/VBoxContainer/Control/AutoSpeed/AutoSlider") +text_counter = NodePath("UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer/VBoxContainer2/DialogueOptions/VBoxContainer/TextSpeed/TextCounter") +auto_counter = NodePath("UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer/VBoxContainer2/DialogueOptions/VBoxContainer/Control/AutoSpeed/AutoCounter") +autoplay = NodePath("UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer/VBoxContainer2/DialogueOptions/VBoxContainer/AutoPlay/AutoPlayCheckBox") +auto_mask = NodePath("UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer/VBoxContainer2/DialogueOptions/VBoxContainer/Control/AutoMask") [node name="UI" type="Control" parent="."] z_index = 12 @@ -239,84 +245,45 @@ theme_override_fonts/font = ExtResource("2_cohu5") theme_override_font_sizes/font_size = 27 text = "EMPTY" -[node name="Back" type="Button" parent="UI/Load/MarginContainer/VBoxContainer"] -custom_minimum_size = Vector2(80, 40) +[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_cohu5") theme_override_font_sizes/font_size = 20 text = "BACK" -[node name="LoadTitle" type="PanelContainer" parent="UI"] -visible = false -layout_mode = 2 +[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 = -200.0 -offset_top = -300.0 -offset_right = 200.0 -offset_bottom = 300.0 +offset_left = -40.0 +offset_top = -20.0 +offset_right = 40.0 +offset_bottom = 20.0 grow_horizontal = 2 grow_vertical = 2 -theme_override_styles/panel = SubResource("StyleBoxFlat_fo2i3") - -[node name="Background" type="ColorRect" parent="UI/LoadTitle"] -layout_mode = 2 -color = Color(0, 0, 0, 1) - -[node name="MarginContainer" type="MarginContainer" parent="UI/LoadTitle"] -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/LoadTitle/MarginContainer"] -layout_mode = 2 - -[node name="RichTextLabel" type="RichTextLabel" parent="UI/LoadTitle/MarginContainer/VBoxContainer"] -layout_mode = 2 -size_flags_vertical = 3 -theme_override_fonts/normal_font = ExtResource("2_cohu5") -theme_override_font_sizes/normal_font_size = 30 -bbcode_enabled = true -text = " -[center]LOAD GAME[/center]" - -[node name="LoadSlot1" type="Button" parent="UI/LoadTitle/MarginContainer/VBoxContainer"] -layout_mode = 2 -size_flags_vertical = 3 -theme_override_fonts/font = ExtResource("2_cohu5") -theme_override_font_sizes/font_size = 27 -text = "EMPTY" - -[node name="LoadSlot2" type="Button" parent="UI/LoadTitle/MarginContainer/VBoxContainer"] -layout_mode = 2 -size_flags_vertical = 3 -theme_override_fonts/font = ExtResource("2_cohu5") -theme_override_font_sizes/font_size = 27 -text = "EMPTY" - -[node name="LoadSlot3" type="Button" parent="UI/LoadTitle/MarginContainer/VBoxContainer"] -layout_mode = 2 -size_flags_vertical = 3 -theme_override_fonts/font = ExtResource("2_cohu5") -theme_override_font_sizes/font_size = 27 -text = "EMPTY" - -[node name="LoadSlot4" type="Button" parent="UI/LoadTitle/MarginContainer/VBoxContainer"] -layout_mode = 2 -size_flags_vertical = 3 -theme_override_fonts/font = ExtResource("2_cohu5") -theme_override_font_sizes/font_size = 27 -text = "EMPTY" - -[node name="Back" type="Button" parent="UI/LoadTitle/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_cohu5") @@ -324,8 +291,7 @@ theme_override_font_sizes/font_size = 20 text = "BACK" [node name="Settings" type="PanelContainer" parent="UI"] -visible = false -custom_minimum_size = Vector2(800, 800) +custom_minimum_size = Vector2(1600, 800) layout_mode = 1 anchors_preset = 8 anchor_left = 0.5 @@ -354,18 +320,242 @@ theme_override_constants/margin_bottom = 0 [node name="VBoxContainer" type="VBoxContainer" parent="UI/Settings/MarginContainer"] layout_mode = 2 -[node name="RichTextLabel" type="RichTextLabel" parent="UI/Settings/MarginContainer/VBoxContainer"] +[node name="Settings" type="RichTextLabel" parent="UI/Settings/MarginContainer/VBoxContainer"] layout_mode = 2 size_flags_vertical = 3 theme_override_fonts/normal_font = ExtResource("2_cohu5") -theme_override_font_sizes/normal_font_size = 30 +theme_override_font_sizes/normal_font_size = 35 bbcode_enabled = true text = " [center]SETTINGS[/center]" -[node name="Back" type="Button" parent="UI/Settings/MarginContainer/VBoxContainer"] -custom_minimum_size = Vector2(80, 40) +[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="MarginContainer" type="MarginContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="VBoxContainer2" type="VBoxContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer"] +layout_mode = 2 + +[node name="DialogueOptions" type="MarginContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer/VBoxContainer2"] +layout_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer/VBoxContainer2/DialogueOptions"] +layout_mode = 2 + +[node name="RichTextLabel" type="RichTextLabel" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer/VBoxContainer2/DialogueOptions/VBoxContainer"] +custom_minimum_size = Vector2(0, 50) +layout_mode = 2 +theme_override_fonts/normal_font = ExtResource("2_cohu5") +theme_override_font_sizes/normal_font_size = 25 +bbcode_enabled = true +text = "[center]DIALOGUE OPTIONS[/center]" + +[node name="TextSpeed" type="HBoxContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer/VBoxContainer2/DialogueOptions/VBoxContainer"] +custom_minimum_size = Vector2(0, 50) +layout_mode = 2 + +[node name="RichTextLabel" type="RichTextLabel" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer/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_cohu5") +theme_override_font_sizes/normal_font_size = 20 +bbcode_enabled = true +text = "TYPING SPEED" + +[node name="TextSlider" type="HSlider" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer/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/MarginContainer/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_cohu5") +theme_override_font_sizes/normal_font_size = 20 +bbcode_enabled = true + +[node name="Control" type="Control" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer/VBoxContainer2/DialogueOptions/VBoxContainer"] +custom_minimum_size = Vector2(0, 50) +layout_mode = 2 + +[node name="AutoSpeed" type="HBoxContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer/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/MarginContainer/VBoxContainer2/DialogueOptions/VBoxContainer/Control/AutoSpeed"] +custom_minimum_size = Vector2(140, 25) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 4 +theme_override_fonts/normal_font = ExtResource("2_cohu5") +theme_override_font_sizes/normal_font_size = 20 +bbcode_enabled = true +text = "ADVANCE DELAY" + +[node name="AutoSlider" type="HSlider" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer/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/MarginContainer/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_cohu5") +theme_override_font_sizes/normal_font_size = 20 +bbcode_enabled = true + +[node name="AutoMask" type="ColorRect" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer/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/MarginContainer/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/MarginContainer/VBoxContainer2/DialogueOptions/VBoxContainer/AutoPlay"] +custom_minimum_size = Vector2(140, 25) +layout_mode = 2 +size_flags_vertical = 4 +theme_override_fonts/normal_font = ExtResource("2_cohu5") +theme_override_font_sizes/normal_font_size = 20 +bbcode_enabled = true +text = "AUTOPLAY TEXT" + +[node name="AutoPlayCheckBox" type="CheckBox" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer/VBoxContainer2/DialogueOptions/VBoxContainer/AutoPlay"] +layout_mode = 2 +size_flags_vertical = 4 + +[node name="MarginContainer2" type="MarginContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="VBoxContainer2" type="VBoxContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer2"] +layout_mode = 2 + +[node name="ScreenSettings" type="MarginContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer2/VBoxContainer2"] +layout_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer2/VBoxContainer2/ScreenSettings"] +layout_mode = 2 + +[node name="RichTextLabel" type="RichTextLabel" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer2/VBoxContainer2/ScreenSettings/VBoxContainer"] +custom_minimum_size = Vector2(0, 50) +layout_mode = 2 +theme_override_fonts/normal_font = ExtResource("2_cohu5") +theme_override_font_sizes/normal_font_size = 25 +bbcode_enabled = true +text = "[center]SCREEN SETTINGS[/center]" + +[node name="ScreenDisplay" type="HBoxContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer2/VBoxContainer2/ScreenSettings/VBoxContainer"] +layout_mode = 2 +theme_override_constants/separation = 20 + +[node name="RichTextLabel" type="RichTextLabel" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer2/VBoxContainer2/ScreenSettings/VBoxContainer/ScreenDisplay"] +custom_minimum_size = Vector2(120, 28) +layout_mode = 2 +size_flags_vertical = 4 +theme_override_fonts/normal_font = ExtResource("2_cohu5") +theme_override_font_sizes/normal_font_size = 20 +bbcode_enabled = true +text = "DISPLAY" + +[node name="OptionButton" type="OptionButton" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer2/VBoxContainer2/ScreenSettings/VBoxContainer/ScreenDisplay"] +custom_minimum_size = Vector2(250, 0) +layout_mode = 2 + +[node name="ScreenResolution" type="HBoxContainer" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer2/VBoxContainer2/ScreenSettings/VBoxContainer"] +layout_mode = 2 +theme_override_constants/separation = 20 + +[node name="RichTextLabel" type="RichTextLabel" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer2/VBoxContainer2/ScreenSettings/VBoxContainer/ScreenResolution"] +custom_minimum_size = Vector2(120, 28) +layout_mode = 2 +size_flags_vertical = 4 +theme_override_fonts/normal_font = ExtResource("2_cohu5") +theme_override_font_sizes/normal_font_size = 20 +bbcode_enabled = true +text = "RESOLUTION" + +[node name="OptionButton" type="OptionButton" parent="UI/Settings/MarginContainer/VBoxContainer/GridContainer/MarginContainer2/VBoxContainer2/ScreenSettings/VBoxContainer/ScreenResolution"] +custom_minimum_size = Vector2(250, 0) +layout_mode = 2 + +[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_cohu5") +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_cohu5") @@ -407,4 +597,4 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 mouse_force_pass_scroll_events = false -color = Color(0, 0, 0, 0.470588) +color = Color(0, 0, 0, 0.784314)