aboutsummaryrefslogtreecommitdiff
path: root/game/src/OptionMenu/ResolutionSelector.gd
diff options
context:
space:
mode:
author Nemrav <>2023-05-15 02:03:50 +0200
committer Nemrav <>2023-05-18 01:26:24 +0200
commit56675b0401573f799271eff4716cd6788c98ce7b (patch)
tree367e5097a9680dd25f4c3cd11568375e49358c0b /game/src/OptionMenu/ResolutionSelector.gd
parent5b207ea57ec278daf5b8b44fdf72757fda1a7bd0 (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/ResolutionSelector.gd')
-rw-r--r--game/src/OptionMenu/ResolutionSelector.gd30
1 files changed, 30 insertions, 0 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()