diff options
author | Nemrav <> | 2023-05-15 02:03:50 +0200 |
---|---|---|
committer | Nemrav <> | 2023-05-18 01:26:24 +0200 |
commit | 56675b0401573f799271eff4716cd6788c98ce7b (patch) | |
tree | 367e5097a9680dd25f4c3cd11568375e49358c0b /game/src/OptionMenu | |
parent | 5b207ea57ec278daf5b8b44fdf72757fda1a7bd0 (diff) |
keep-video-settings-dialog and game-session ui layering fix
Bring resolution dialog local inline with standards
put changes-dialog functionality in ResolutionSelector
fix revert-dialog width
cleanup resolution-dialog signals
resolution dialog works for all resolutions
resolution dialog remove unnecessary timer var
resolution dialog better export vars
resolution dialog correct var style
Diffstat (limited to 'game/src/OptionMenu')
-rw-r--r-- | game/src/OptionMenu/ResolutionSelector.gd | 30 | ||||
-rw-r--r-- | game/src/OptionMenu/VideoTab.tscn | 19 |
2 files changed, 48 insertions, 1 deletions
diff --git a/game/src/OptionMenu/ResolutionSelector.gd b/game/src/OptionMenu/ResolutionSelector.gd index 2fdcba2..fee6e31 100644 --- a/game/src/OptionMenu/ResolutionSelector.gd +++ b/game/src/OptionMenu/ResolutionSelector.gd @@ -3,10 +3,16 @@ extends SettingOptionButton # REQUIREMENTS # * UIFUN-21 # * UIFUN-28 +# * UIFUN-301 +# * UIFUN-302 @export var default_value : Vector2i = Resolution.error_resolution +var previous_resolution : Vector2i = Resolution.error_resolution +@export var revert_dialog : ConfirmationDialog +@export var timer : Timer + func _find_resolution_index_by_value(value : Vector2i) -> int: for item_index in item_count: if get_item_metadata(item_index) == value: @@ -63,7 +69,31 @@ func _set_value_from_file(load_value): func _on_item_selected(index : int): if _valid_index(index): + previous_resolution = Resolution.get_current_resolution() Resolution.set_resolution(get_item_metadata(index)) + var new_resolution = get_item_metadata(index) + + #has_focus() indicates the user is calling _on_item_selected, not some other function + if has_focus() and previous_resolution != new_resolution: + print("Start Revert Countdown!") + start_revert_countdown() else: push_error("Invalid ResolutionSelector index: %d" % index) reset_setting() + +func _process(_delta): + revert_dialog.dialog_text = tr("OPTIONS_VIDEO_RESOLUTION_DIALOG_TEXT").format({"time":round(timer.time_left)}) + +func start_revert_countdown() -> void: + timer.start() + revert_dialog.popup_centered(Vector2(1,1)) + +func _on_confirmed() -> void: + timer.stop() + +func _cancel_changes() -> void: + Resolution.set_resolution(previous_resolution) + _sync_resolutions() + print("Resolution reset to (%dx%d)" % [previous_resolution.x,previous_resolution.y]) + timer.stop() + revert_dialog.hide() diff --git a/game/src/OptionMenu/VideoTab.tscn b/game/src/OptionMenu/VideoTab.tscn index 7c9e2ad..0802eb9 100644 --- a/game/src/OptionMenu/VideoTab.tscn +++ b/game/src/OptionMenu/VideoTab.tscn @@ -31,7 +31,7 @@ columns = 2 layout_mode = 2 text = "OPTIONS_VIDEO_RESOLUTION" -[node name="ResolutionSelector" type="OptionButton" parent="VBoxContainer/GridContainer"] +[node name="ResolutionSelector" type="OptionButton" parent="VBoxContainer/GridContainer" node_paths=PackedStringArray("revert_dialog", "timer")] editor_description = "UI-19" layout_mode = 2 focus_neighbor_bottom = NodePath("../ScreenModeSelector") @@ -40,9 +40,23 @@ selected = 0 popup/item_0/text = "MISSING" popup/item_0/id = 0 script = ExtResource("1_i8nro") +revert_dialog = NodePath("ConfirmationDialog") +timer = NodePath("Timer") section_name = "video" setting_name = "resolution" +[node name="ConfirmationDialog" type="ConfirmationDialog" parent="VBoxContainer/GridContainer/ResolutionSelector"] +editor_description = "UI-873" +disable_3d = true +title = "OPTIONS_VIDEO_RESOLUTION_DIALOG_TITLE" +size = Vector2i(730, 100) +ok_button_text = "DIALOG_OK" +cancel_button_text = "DIALOG_CANCEL" + +[node name="Timer" type="Timer" parent="VBoxContainer/GridContainer/ResolutionSelector"] +wait_time = 5.0 +one_shot = true + [node name="GuiScaleLabel" type="Label" parent="VBoxContainer/GridContainer"] layout_mode = 2 text = "OPTIONS_VIDEO_GUI_SCALE" @@ -155,6 +169,9 @@ setting_name = "quality_preset" default_selected = 1 [connection signal="item_selected" from="VBoxContainer/GridContainer/ResolutionSelector" to="VBoxContainer/GridContainer/ResolutionSelector" method="_on_item_selected"] +[connection signal="canceled" from="VBoxContainer/GridContainer/ResolutionSelector/ConfirmationDialog" to="VBoxContainer/GridContainer/ResolutionSelector" method="_cancel_changes"] +[connection signal="confirmed" from="VBoxContainer/GridContainer/ResolutionSelector/ConfirmationDialog" to="VBoxContainer/GridContainer/ResolutionSelector" method="_on_confirmed"] +[connection signal="timeout" from="VBoxContainer/GridContainer/ResolutionSelector/Timer" to="VBoxContainer/GridContainer/ResolutionSelector" method="_cancel_changes"] [connection signal="item_selected" from="VBoxContainer/GridContainer/GuiScaleSelector" to="VBoxContainer/GridContainer/GuiScaleSelector" method="_on_item_selected"] [connection signal="item_selected" from="VBoxContainer/GridContainer/ScreenModeSelector" to="VBoxContainer/GridContainer/ScreenModeSelector" method="_on_item_selected"] [connection signal="item_selected" from="VBoxContainer/GridContainer/MonitorDisplaySelector" to="VBoxContainer/GridContainer/MonitorDisplaySelector" method="_on_item_selected"] |