misc menu usability updates

This commit is contained in:
betalars 2025-10-29 22:37:17 +01:00
parent 41133101d5
commit 03761e9515
12 changed files with 85 additions and 110 deletions

View File

@ -1,9 +1,11 @@
class_name SettingsPopup extends PanelContainer class_name SettingsPopup extends PanelContainer
func show_settings(id: int = 0): func show_settings(id: int = -1):
$AnimationPlayer.play("reveal") $AnimationPlayer.play("reveal")
if not id == -1:
$TabContainer.current_tab = id $TabContainer.current_tab = id
State.pass_stage_to($TabContainer) State.pass_stage_to($TabContainer)
func vanish(): func vanish():
$AnimationPlayer.play("vanish") $AnimationPlayer.play("vanish")
State.save_settings()

View File

@ -37,11 +37,11 @@ var is_active:bool = false:
func _ready() -> void: func _ready() -> void:
if is_in_beginning: if is_in_beginning:
%SaveButton.text = "menu_save_continue" %SaveButton.hide()
back_button.text = "" back_button.hide()
else: else:
%SaveButton.text = "menu_save" %SaveButton.text = "menu_save"
back_button.hide() back_button.visible = false
update_ui_from_state() update_ui_from_state()
@ -63,11 +63,7 @@ func _ready() -> void:
scale_slider.drag_ended.connect(changed.emit) scale_slider.drag_ended.connect(changed.emit)
save_button.pressed.connect(_on_save_button_pressed) save_button.pressed.connect(_on_save_button_pressed)
save_button.pressed.connect(changed.emit) save_button.pressed.connect(changed.emit)
changed.connect(_on_changed) back_button.pressed.connect(func(): is_active = false)
var has_unsaved_changes
func _on_changed():
has_unsaved_changes = true
func _on_scale_slider_dragged(update:bool): func _on_scale_slider_dragged(update:bool):
if update: if update:
@ -84,9 +80,8 @@ func update_ui_from_state():
scale_slider.value = State.ui_scaling scale_slider.value = State.ui_scaling
func _on_save_button_pressed() -> void: func _on_save_button_pressed() -> void:
is_active = false
State.save_settings() State.save_settings()
has_unsaved_changes = false is_active = false
func _input(event: InputEvent) -> void: func _input(event: InputEvent) -> void:
if event.is_action_pressed("ui_cancel") and is_active: if event.is_action_pressed("ui_cancel") and is_active:

View File

@ -43,6 +43,7 @@ text = "menu_a11y_motion"
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 0 size_flags_horizontal = 0
disabled = true
text = "use Screenreader" text = "use Screenreader"
script = SubResource("GDScript_v567h") script = SubResource("GDScript_v567h")
@ -165,17 +166,16 @@ dragger_visibility = 1
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
disabled = true disabled = true
text = "go back" text = "menu_back"
[node name="SaveButton" type="Button" parent="navbuttons"] [node name="SaveButton" type="Button" parent="navbuttons"]
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
text = "save and continue" text = "menu_save"
[node name="card" parent="." instance=ExtResource("2_24dtk")] [node name="card" parent="." instance=ExtResource("2_24dtk")]
process_mode = 4 process_mode = 4
position = Vector2(837, 159) position = Vector2(837, 159)
rotation = 0.105957024
collision_layer = 0 collision_layer = 0
collision_mask = 0 collision_mask = 0
input_pickable = false input_pickable = false

View File

@ -3,8 +3,6 @@ extends VBoxContainer
signal changed signal changed
signal leave_stage signal leave_stage
var has_unsaved_changes:= false
var has_stage:bool = false: var has_stage:bool = false:
set(stage): set(stage):
has_stage = stage has_stage = stage

View File

@ -104,9 +104,9 @@ unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 4 size_flags_vertical = 4
max_value = 1.0 max_value = 1.5
step = 0.05 step = 0.05
value = 0.5 value = 1.0
ticks_on_borders = true ticks_on_borders = true
[node name="MusicPreview" type="AudioStreamPlayer" parent="VBoxContainer/GridContainer/MusicSlider"] [node name="MusicPreview" type="AudioStreamPlayer" parent="VBoxContainer/GridContainer/MusicSlider"]
@ -131,9 +131,9 @@ unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 4 size_flags_vertical = 4
max_value = 1.0 max_value = 1.5
step = 0.05 step = 0.05
value = 0.5 value = 1.0
[node name="Label4" type="Label" parent="VBoxContainer/GridContainer"] [node name="Label4" type="Label" parent="VBoxContainer/GridContainer"]
layout_mode = 2 layout_mode = 2
@ -144,9 +144,9 @@ unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 4 size_flags_vertical = 4
max_value = 1.0 max_value = 1.5
step = 0.05 step = 0.05
value = 0.5 value = 1.0
[node name="Label5" type="Label" parent="VBoxContainer/GridContainer"] [node name="Label5" type="Label" parent="VBoxContainer/GridContainer"]
layout_mode = 2 layout_mode = 2
@ -157,9 +157,9 @@ unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 4 size_flags_vertical = 4
max_value = 1.0 max_value = 1.5
step = 0.05 step = 0.05
value = 0.5 value = 1.0
[node name="ForceStereoCheck" type="CheckBox" parent="."] [node name="ForceStereoCheck" type="CheckBox" parent="."]
unique_name_in_owner = true unique_name_in_owner = true

View File

@ -19,9 +19,9 @@ var current_music_decay:float = 0
func _ready() -> void: func _ready() -> void:
if is_in_beginning: if is_in_beginning:
%SaveButton.text = "save and continue" %SaveButton.hide()
else: else:
%SaveButton.text = "save and exit" %SaveButton.text = "menu_save_exit"
update_ui_from_state() update_ui_from_state()
@ -30,8 +30,6 @@ func _ready() -> void:
allow_skip_button.pressed.connect(func(value): State.allow_skipping = value) allow_skip_button.pressed.connect(func(value): State.allow_skipping = value)
allow_skip_button.pressed.connect(changed.emit) allow_skip_button.pressed.connect(changed.emit)
changed.connect(func(): has_unsaved_changes = true)
%SaveButton.pressed.connect(_on_exit_button_pressed) %SaveButton.pressed.connect(_on_exit_button_pressed)
%ExpandButton.pressed.connect( %ExpandButton.pressed.connect(
func(): func():
@ -44,9 +42,9 @@ func update_ui_from_state():
allow_skip_button.button_pressed = State.allow_skipping allow_skip_button.button_pressed = State.allow_skipping
func _on_exit_button_pressed() -> void: func _on_exit_button_pressed() -> void:
leave_stage.emit()
State.save_settings() State.save_settings()
has_unsaved_changes = false has_unsaved_changes = false
leave_stage.emit()
State.leave_stage(self) State.leave_stage(self)
func _input(event: InputEvent) -> void: func _input(event: InputEvent) -> void:

View File

@ -16,7 +16,7 @@ metadata/_tab_index = 1
[node name="Label" type="Label" parent="."] [node name="Label" type="Label" parent="."]
layout_mode = 2 layout_mode = 2
theme_type_variation = &"HeaderLarge" theme_type_variation = &"HeaderLarge"
text = "Gameplay Settings" text = "setting_gameplay_title"
[node name="Label2" type="Label" parent="."] [node name="Label2" type="Label" parent="."]
visible = false visible = false
@ -43,6 +43,7 @@ text = "gameplay_invert_y_mouse"
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
tooltip_text = "gameplay_simplify_tooltop" tooltip_text = "gameplay_simplify_tooltop"
disabled = true
text = "gameplay_simplified" text = "gameplay_simplified"
[node name="GridContainer" type="GridContainer" parent="VBoxContainer"] [node name="GridContainer" type="GridContainer" parent="VBoxContainer"]
@ -65,7 +66,7 @@ ticks_on_borders = true
[node name="Label2" type="Label" parent="VBoxContainer/GridContainer"] [node name="Label2" type="Label" parent="VBoxContainer/GridContainer"]
layout_mode = 2 layout_mode = 2
text = "Field of View" text = "gameplay_fov"
[node name="FOVSlider" type="HSlider" parent="VBoxContainer/GridContainer"] [node name="FOVSlider" type="HSlider" parent="VBoxContainer/GridContainer"]
unique_name_in_owner = true unique_name_in_owner = true

View File

@ -35,7 +35,6 @@ signal roll_credits
@onready var credits_button: Button = $PanelContainer/CreditsButton @onready var credits_button: Button = $PanelContainer/CreditsButton
@onready var quit_button: Button = $PanelContainer/QuitButton @onready var quit_button: Button = $PanelContainer/QuitButton
@onready var save_game_handle: SaveGameHandle = %SaveGameHandle @onready var save_game_handle: SaveGameHandle = %SaveGameHandle
@export var save_game_exists: bool = false: @export var save_game_exists: bool = false:
set(value): set(value):
save_game_exists = value save_game_exists = value
@ -55,6 +54,7 @@ func _ready() -> void:
load_game_button.disabled = not save_game_handle.has_existing_saves() load_game_button.disabled = not save_game_handle.has_existing_saves()
settings_button.pressed.connect(settings_popup.show_settings) settings_button.pressed.connect(settings_popup.show_settings)
quit_button.pressed.connect(get_tree().quit) quit_button.pressed.connect(get_tree().quit)
credits_button.pressed.connect(roll_credits.emit)
State.take_stage(self) State.take_stage(self)

View File

@ -68,12 +68,6 @@ var fps_enabled: bool:
if not ignore_changes: changed.emit() if not ignore_changes: changed.emit()
@onready var shadow_selector: OptionButton = %ShadowQuality @onready var shadow_selector: OptionButton = %ShadowQuality
@export_enum("no", "1x", "2x", "4x", "8x") var texture_filtering:int = 3:
set(value):
texture_filtering = value
if not ignore_changes: changed.emit()
@onready var texture_selector: OptionButton = %TextureFiltering
@export_enum("no", "1x", "2x", "4x") var msaa = 0: @export_enum("no", "1x", "2x", "4x") var msaa = 0:
set(value): set(value):
msaa = value msaa = value
@ -107,7 +101,6 @@ func _ready() -> void:
upscale_selector.item_selected.connect(func(value): upscale_mode = value) upscale_selector.item_selected.connect(func(value): upscale_mode = value)
lightning_selector.item_selected.connect(func(value): lighting_quality = value) lightning_selector.item_selected.connect(func(value): lighting_quality = value)
shadow_selector.item_selected.connect(func(value): shadow_quality = value) shadow_selector.item_selected.connect(func(value): shadow_quality = value)
texture_selector.item_selected.connect(func(value): texture_filtering = value)
msaa_selector.item_selected.connect(func(value): msaa = value) msaa_selector.item_selected.connect(func(value): msaa = value)
vsync_selector.item_selected.connect(func(value): vsync_mode = value) vsync_selector.item_selected.connect(func(value): vsync_mode = value)
@ -119,6 +112,7 @@ func _ready() -> void:
preset_selected = preset_selected preset_selected = preset_selected
%ConfirmButton.pressed.connect(_on_confirm_button_pressed)
%ExitButton.pressed.connect(_on_exit_button_pressed) %ExitButton.pressed.connect(_on_exit_button_pressed)
%ConfirmExit.pressed.connect(_on_exit_confirmed) %ConfirmExit.pressed.connect(_on_exit_confirmed)
%ConfirmSave.pressed.connect(_on_confirm_button_pressed) %ConfirmSave.pressed.connect(_on_confirm_button_pressed)
@ -136,6 +130,7 @@ func load_settings():
var parsed: Dictionary = JSON.parse_string(raw_json) var parsed: Dictionary = JSON.parse_string(raw_json)
for key in parsed.keys(): for key in parsed.keys():
if key in self:
set(key, parsed[key]) set(key, parsed[key])
else: else:
@ -154,7 +149,6 @@ func propagate_settings():
fps_selector.value = max_fps fps_selector.value = max_fps
lightning_selector.select(lighting_quality) lightning_selector.select(lighting_quality)
shadow_selector.select(shadow_quality) shadow_selector.select(shadow_quality)
texture_selector.select(texture_filtering)
msaa_selector.select(msaa) msaa_selector.select(msaa)
vsync_selector.select(vsync_mode) vsync_selector.select(vsync_mode)
@ -167,7 +161,6 @@ func save_settings():
"max_fps": max_fps, "max_fps": max_fps,
"lighting_quality": lighting_quality, "lighting_quality": lighting_quality,
"shadow_quality": shadow_quality, "shadow_quality": shadow_quality,
"texture_filtering": texture_filtering,
"msaa": msaa, "msaa": msaa,
"vsync_mod": vsync_mode, "vsync_mod": vsync_mode,
"preset_selected": preset_selected "preset_selected": preset_selected
@ -199,29 +192,33 @@ func _on_confirm_button_pressed() -> void:
ProjectSettings.set_setting("rendering/scaling_3d/mode", upscale_mode) ProjectSettings.set_setting("rendering/scaling_3d/mode", upscale_mode)
RenderingServer.viewport_set_scaling_3d_scale(get_tree().root.get_viewport_rid(), upscale_mode) RenderingServer.viewport_set_scaling_3d_scale(get_tree().root.get_viewport_rid(), upscale_mode)
ProjectSettings.set_setting("application/run/max_fps", max_fps if fps_enabled else 0) ProjectSettings.set_setting("application/run/max_fps", max_fps if fps_enabled else 0)
Engine.max_fps = max_fps if fps_enabled else 0
match lighting_quality: match lighting_quality:
0: 0:
State.ssil_enable = false State.ssil_enable = false
State.sdfgi_enable = false State.sdfgi_enable = false
ProjectSettings.set_setting("rendering/shading/overrides/force_lambert_over_burley", true)
1: 1:
State.ssil_enable = false State.ssil_enable = false
State.sdfgi_enable = true State.sdfgi_enable = true
ProjectSettings.set_setting("rendering/global_illumination/sdfgi/probe_ray_count", 8) ProjectSettings.set_setting("rendering/global_illumination/sdfgi/probe_ray_count", 8)
ProjectSettings.set_setting("rendering/shading/overrides/force_lambert_over_burley", true) RenderingServer.environment_set_sdfgi_ray_count(RenderingServer.ENV_SDFGI_RAY_COUNT_8)
2: 2:
State.ssil_enable = false State.ssil_enable = false
State.sdfgi_enable = true State.sdfgi_enable = true
ProjectSettings.set_setting("rendering/global_illumination/sdfgi/probe_ray_count", 16) ProjectSettings.set_setting("rendering/global_illumination/sdfgi/probe_ray_count", 16)
ProjectSettings.set_setting("rendering/shading/overrides/force_lambert_over_burley", false) ProjectSettings.set_setting("rendering/shading/overrides/force_lambert_over_burley", false)
RenderingServer.environment_set_sdfgi_ray_count(RenderingServer.ENV_SDFGI_RAY_COUNT_16)
3: 3:
State.ssil_enable = true State.ssil_enable = true
State.sdfgi_enable = true State.sdfgi_enable = true
ProjectSettings.set_setting("rendering/global_illumination/sdfgi/probe_ray_count", 32) ProjectSettings.set_setting("rendering/global_illumination/sdfgi/probe_ray_count", 32)
ProjectSettings.set_setting("rendering/shading/overrides/force_lambert_over_burley", false) ProjectSettings.set_setting("rendering/shading/overrides/force_lambert_over_burley", false)
RenderingServer.environment_set_sdfgi_ray_count(RenderingServer.ENV_SDFGI_RAY_COUNT_32)
ProjectSettings.set_setting("rendering/lights_and_shadows/positional_shadow/soft_shadow_filter_quality", shadow_quality) ProjectSettings.set_setting("rendering/lights_and_shadows/positional_shadow/soft_shadow_filter_quality", shadow_quality)
RenderingServer.directional_soft_shadow_filter_set_quality(shadow_quality*2+1)
ProjectSettings.set_setting("rendering/lights_and_shadows/directional_shadow/soft_shadow_filter_quality", shadow_quality) ProjectSettings.set_setting("rendering/lights_and_shadows/directional_shadow/soft_shadow_filter_quality", shadow_quality)
ProjectSettings.set_setting("rendering/textures/default_filters/anisotropic_filtering_level", texture_filtering) RenderingServer.positional_soft_shadow_filter_set_quality(shadow_quality*2+1)
ProjectSettings.set_setting("rendering/anti_aliasing/quality/msaa_3d", msaa) ProjectSettings.set_setting("rendering/anti_aliasing/quality/msaa_3d", msaa)
ProjectSettings.set_setting("display/window/vsync/vsync_mode", vsync_mode) ProjectSettings.set_setting("display/window/vsync/vsync_mode", vsync_mode)
@ -236,7 +233,6 @@ func _on_performance_preset_pressed() -> void:
fps_enabled = true fps_enabled = true
lighting_quality = 0 lighting_quality = 0
shadow_quality = 0 shadow_quality = 0
texture_filtering = 1
msaa = 0 msaa = 0
vsync_mode = DisplayServer.VSyncMode.VSYNC_DISABLED vsync_mode = DisplayServer.VSyncMode.VSYNC_DISABLED
@ -256,7 +252,6 @@ func _on_balanced_preset_pressed() -> void:
fps_enabled = true fps_enabled = true
lighting_quality = 2 lighting_quality = 2
shadow_quality = 1 shadow_quality = 1
texture_filtering = 3
msaa = 1 msaa = 1
vsync_mode = DisplayServer.VSyncMode.VSYNC_ENABLED vsync_mode = DisplayServer.VSyncMode.VSYNC_ENABLED
@ -276,7 +271,6 @@ func _on_quality_preset_pressed() -> void:
fps_enabled = false fps_enabled = false
lighting_quality = 3 lighting_quality = 3
shadow_quality = 2 shadow_quality = 2
texture_filtering = 4
msaa = 3 msaa = 3
vsync_mode = DisplayServer.VSyncMode.VSYNC_ENABLED vsync_mode = DisplayServer.VSyncMode.VSYNC_ENABLED

View File

@ -260,28 +260,6 @@ popup/item_1/id = 1
popup/item_2/text = "quality" popup/item_2/text = "quality"
popup/item_2/id = 2 popup/item_2/id = 2
[node name="FilterLabel" type="Label" parent="GridContainer"]
layout_mode = 2
text = "Texture Filtering"
[node name="TextureFiltering" type="OptionButton" parent="GridContainer"]
unique_name_in_owner = true
layout_mode = 2
selected = 1
item_count = 6
popup/item_0/text = "disabled"
popup/item_0/id = 0
popup/item_1/text = "1x (very fast)"
popup/item_1/id = 1
popup/item_2/text = "2x (fast)"
popup/item_2/id = 2
popup/item_3/text = "4x (average)"
popup/item_3/id = 3
popup/item_4/text = "8x (slow)"
popup/item_4/id = 4
popup/item_5/text = "16x (slowest)"
popup/item_5/id = 5
[node name="AlaisingLabel" type="Label" parent="GridContainer"] [node name="AlaisingLabel" type="Label" parent="GridContainer"]
layout_mode = 2 layout_mode = 2
text = "Anti Aliasing" text = "Anti Aliasing"
@ -318,10 +296,16 @@ popup/item_2/id = 2
popup/item_3/text = "Letterbox" popup/item_3/text = "Letterbox"
popup/item_3/id = 3 popup/item_3/id = 3
[node name="HBoxContainer" type="HBoxContainer" parent="GridContainer/vSync"]
visible = false
layout_mode = 0
offset_right = 40.0
offset_bottom = 40.0
[node name="ExitButton" type="Button" parent="GridContainer"] [node name="ExitButton" type="Button" parent="GridContainer"]
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
text = "close" text = "menu_back"
[node name="ConfirmButton" type="Button" parent="GridContainer"] [node name="ConfirmButton" type="Button" parent="GridContainer"]
unique_name_in_owner = true unique_name_in_owner = true

View File

@ -1,7 +1,6 @@
[gd_scene load_steps=7 format=3 uid="uid://gldtxysavetf"] [gd_scene load_steps=7 format=3 uid="uid://gldtxysavetf"]
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="1_8giso"] [ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="1_8giso"]
[ext_resource type="Script" uid="uid://0tb763w0vfv7" path="res://tab_container.gd" id="2_lw8rc"]
[ext_resource type="PackedScene" uid="uid://b3wlecqvelh22" path="res://logic-scenes/main menu/acessability_settings.tscn" id="3_2p4fc"] [ext_resource type="PackedScene" uid="uid://b3wlecqvelh22" path="res://logic-scenes/main menu/acessability_settings.tscn" id="3_2p4fc"]
[ext_resource type="PackedScene" uid="uid://chal0ioagspx0" path="res://logic-scenes/main menu/content_settings.tscn" id="3_fso6q"] [ext_resource type="PackedScene" uid="uid://chal0ioagspx0" path="res://logic-scenes/main menu/content_settings.tscn" id="3_fso6q"]
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_s5ssh"] [ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_s5ssh"]
@ -107,6 +106,10 @@ func hide():
self.visible = false self.visible = false
" "
[sub_resource type="GDScript" id="GDScript_l80pk"]
script/source = "extends TabContainer
"
[node name="Startup Menu" type="Panel"] [node name="Startup Menu" type="Panel"]
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
@ -116,6 +119,7 @@ grow_vertical = 2
script = SubResource("GDScript_a78qq") script = SubResource("GDScript_a78qq")
[node name="Label" type="Label" parent="."] [node name="Label" type="Label" parent="."]
visible = false
layout_mode = 1 layout_mode = 1
anchors_preset = 5 anchors_preset = 5
anchor_left = 0.5 anchor_left = 0.5
@ -137,74 +141,80 @@ anchor_bottom = 1.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
[node name="PanelContainer" type="PanelContainer" parent="CenterContainer"] [node name="HSplitContainer" type="VSplitContainer" parent="CenterContainer"]
layout_mode = 2 layout_mode = 2
[node name="StartFrame" type="TextureRect" parent="CenterContainer/PanelContainer"] [node name="PanelContainer" type="PanelContainer" parent="CenterContainer/HSplitContainer"]
layout_mode = 2
[node name="StartFrame" type="TextureRect" parent="CenterContainer/HSplitContainer/PanelContainer"]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 8 size_flags_horizontal = 8
texture = ExtResource("1_8giso") texture = ExtResource("1_8giso")
expand_mode = 2 expand_mode = 2
stretch_mode = 4 stretch_mode = 4
[node name="VBoxContainer" type="VBoxContainer" parent="CenterContainer/PanelContainer"] [node name="VBoxContainer" type="VBoxContainer" parent="CenterContainer/HSplitContainer/PanelContainer"]
layout_mode = 2 layout_mode = 2
[node name="TabContainer" type="TabContainer" parent="CenterContainer/PanelContainer/VBoxContainer"] [node name="TabContainer" type="TabContainer" parent="CenterContainer/HSplitContainer/PanelContainer/VBoxContainer"]
layout_mode = 2 layout_mode = 2
current_tab = 1 current_tab = 1
tabs_visible = false tabs_visible = false
use_hidden_tabs_for_min_size = true use_hidden_tabs_for_min_size = true
script = ExtResource("2_lw8rc") script = SubResource("GDScript_l80pk")
[node name="Accessibility" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer" instance=ExtResource("3_2p4fc")] [node name="Accessibility" parent="CenterContainer/HSplitContainer/PanelContainer/VBoxContainer/TabContainer" instance=ExtResource("3_2p4fc")]
unique_name_in_owner = true
visible = false visible = false
layout_mode = 2 layout_mode = 2
is_in_beginning = true is_in_beginning = true
[node name="Content Notes" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer" instance=ExtResource("3_fso6q")] [node name="ContentNotes" parent="CenterContainer/HSplitContainer/PanelContainer/VBoxContainer/TabContainer" instance=ExtResource("3_fso6q")]
unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
is_in_beginning = true
[node name="Managing Expectations" type="VBoxContainer" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer"] [node name="Managing Expectations" type="VBoxContainer" parent="CenterContainer/HSplitContainer/PanelContainer/VBoxContainer/TabContainer"]
visible = false visible = false
layout_mode = 2 layout_mode = 2
metadata/_tab_index = 2 metadata/_tab_index = 2
[node name="VSeparator" type="VSeparator" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/Managing Expectations"] [node name="VSeparator" type="VSeparator" parent="CenterContainer/HSplitContainer/PanelContainer/VBoxContainer/TabContainer/Managing Expectations"]
custom_minimum_size = Vector2(0, 50) custom_minimum_size = Vector2(0, 50)
layout_mode = 2 layout_mode = 2
[node name="Label" type="RichTextLabel" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/Managing Expectations"] [node name="Label" type="RichTextLabel" parent="CenterContainer/HSplitContainer/PanelContainer/VBoxContainer/TabContainer/Managing Expectations"]
layout_mode = 2 layout_mode = 2
bbcode_enabled = true bbcode_enabled = true
text = "[center][i]I assure you I did my best, text = "[center][i]I assure you I did my best,
But I am only human and this is just one game.[/i][/center]" But I am only human and this is just one game.[/i][/center]"
fit_content = true fit_content = true
[node name="VSeparator2" type="VSeparator" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/Managing Expectations"] [node name="VSeparator2" type="VSeparator" parent="CenterContainer/HSplitContainer/PanelContainer/VBoxContainer/TabContainer/Managing Expectations"]
custom_minimum_size = Vector2(0, 25) custom_minimum_size = Vector2(0, 25)
layout_mode = 2 layout_mode = 2
[node name="navbuttons" type="VSplitContainer" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/Managing Expectations"] [node name="StartBottom" type="TextureRect" parent="CenterContainer/HSplitContainer/PanelContainer/VBoxContainer"]
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 10
[node name="Next" type="Button" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/Managing Expectations/navbuttons"]
layout_mode = 2
text = "menu_okay"
[node name="previous" type="Button" parent="CenterContainer/PanelContainer/VBoxContainer/TabContainer/Managing Expectations/navbuttons"]
layout_mode = 2
text = "menu_back"
[node name="StartBottom" type="TextureRect" parent="CenterContainer/PanelContainer/VBoxContainer"]
custom_minimum_size = Vector2(0, 32) custom_minimum_size = Vector2(0, 32)
layout_mode = 2 layout_mode = 2
texture = ExtResource("3_s5ssh") texture = ExtResource("3_s5ssh")
expand_mode = 2 expand_mode = 2
stretch_mode = 5 stretch_mode = 5
[node name="navbuttons" type="HSplitContainer" parent="CenterContainer/HSplitContainer"]
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 6
[node name="previous" type="Button" parent="CenterContainer/HSplitContainer/navbuttons"]
layout_mode = 2
text = "menu_back"
[node name="Next" type="Button" parent="CenterContainer/HSplitContainer/navbuttons"]
layout_mode = 2
text = "menu_next"
[node name="continue" type="Button" parent="."] [node name="continue" type="Button" parent="."]
layout_mode = 1 layout_mode = 1
anchors_preset = 7 anchors_preset = 7
@ -237,7 +247,7 @@ grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
text = "I stream this game, please show content notes." text = "I stream this game, please show content notes."
[connection signal="pressed" from="CenterContainer/PanelContainer/VBoxContainer/TabContainer/Managing Expectations/navbuttons/Next" to="." method="hide"] [connection signal="pressed" from="CenterContainer/HSplitContainer/navbuttons/previous" to="CenterContainer/HSplitContainer/PanelContainer/VBoxContainer/TabContainer" method="previous"]
[connection signal="pressed" from="CenterContainer/PanelContainer/VBoxContainer/TabContainer/Managing Expectations/navbuttons/previous" to="CenterContainer/PanelContainer/VBoxContainer/TabContainer" method="previous"] [connection signal="pressed" from="CenterContainer/HSplitContainer/navbuttons/Next" to="." method="hide"]
[connection signal="pressed" from="continue" to="." method="hide"] [connection signal="pressed" from="continue" to="." method="hide"]
[connection signal="toggled" from="continue/CheckBox" to="." method="_on_streaming_notes_toggled"] [connection signal="toggled" from="continue/CheckBox" to="." method="_on_streaming_notes_toggled"]

View File

@ -16,18 +16,11 @@ func _on_tab_changed(tab_id: int):
if child.has_stage: if child.has_stage:
child_has_stage = true child_has_stage = true
if child_has_stage: if child_has_stage:
State.pass_stage_to(get_child(tab_id)) State.transition_stage_to(get_child(tab_id))
pass_to_actor = get_child(tab_id) pass_to_actor = get_child(tab_id)
func _on_stage_left(): func _on_stage_left():
await get_tree().process_frame await get_tree().process_frame
if not pass_to_actor.has_stage: if not pass_to_actor.has_stage:
var unsaved := false
for child in get_children():
if child.has_unsaved_changes:
unsaved = true
if unsaved:
get_parent().vanish() get_parent().vanish()
else:
get_parent().ask_confirmation()