aboutsummaryrefslogtreecommitdiff
path: root/game/src/Game/Menu/OptionMenu/SettingRevertDialog.gd
blob: 7928d1529e78c6be6d6f91f848d1410ed14d41d3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
extends ConfirmationDialog
class_name SettingRevertDialog

signal dialog_accepted(button : SettingRevertButton)
signal dialog_reverted(button : SettingRevertButton)

@export var dialog_text_key : String = "< reverting in {time} seconds >"

@export_group("Nodes")
@export var timer : Timer

var _revert_node : SettingRevertButton = null

func show_dialog(button : SettingRevertButton, time : float = 0) -> void:
   timer.start(time)
   popup_centered(Vector2(1,1))
   _revert_node = button

func _notification(what : int) -> void:
   if what == NOTIFICATION_VISIBILITY_CHANGED:
      set_process(visible)
      if not visible: _revert_node = null

func _process(_delta : float) -> void:
   dialog_text = tr(dialog_text_key).format({ "time": Localisation.tr_number(int(timer.time_left)) })

func _on_canceled_or_close_requested() -> void:
   timer.stop()
   dialog_reverted.emit(_revert_node)

func _on_confirmed() -> void:
   timer.stop()
   dialog_accepted.emit(_revert_node)

func _on_resolution_revert_timer_timeout() -> void:
   dialog_reverted.emit(_revert_node)
   hide()