Files
imnotsick/Scenes/UI/ui.gd
T
2026-03-06 17:38:16 +01:00

69 lines
2.3 KiB
GDScript

extends CanvasLayer
#UI Elements
@onready var confirmation_mask = $ConfirmationMask
@onready var masks = $Masks
@onready var pause_menu = $PauseMenu
#GameOver Scenes
@onready var its_game_over = $ITSGameOverControl
@onready var entity_game_over = $EntityGameOverControl
#Preloading Confirmation dialog
var confirmation_dialog = preload("res://Scenes/UI/confirmation_dialog.tscn")
#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
#Signals for handling text settings
signal text_value_changed
signal auto_value_changed
#Boolean to differentiate in-game UI from title_screen UI
var in_title_screen = false
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
#Connecting signals
pause_menu.settings.text_value_changed.connect(func(): text_value_changed.emit())
pause_menu.settings.auto_value_changed.connect(func(): auto_value_changed.emit())
#Hiding everything at start
confirmation_mask.hide()
#Brings up a Confirmation Dialog
func ask_confirmation(function_yes: Callable, function_no: Callable, choice_text: String):
var choice_dialog = confirmation_dialog.instantiate()
add_child(choice_dialog)
var choice_text_label = choice_dialog.get_node("ConfirmationDialog/MarginContainer/VBoxContainer/ConfirmationText")
var choice_yes = choice_dialog.get_node("ConfirmationDialog/MarginContainer/VBoxContainer/MarginContainer/HBoxContainer/YesButton")
var choice_no = choice_dialog.get_node("ConfirmationDialog/MarginContainer/VBoxContainer/MarginContainer/HBoxContainer/NoButton")
#Clears the Confirmation Dialog and Remove the Mask no matter what choice is made
choice_yes.pressed.connect(func(): confirmation_mask.hide())
choice_yes.pressed.connect(func(): choice_dialog.queue_free())
choice_no.pressed.connect(func(): confirmation_mask.hide())
choice_no.pressed.connect(func(): choice_dialog.queue_free())
choice_yes.text = ("YES")
choice_no.text = ("NO")
choice_text_label.text = choice_text
#Connects Choices to their Functions
choice_yes.pressed.connect(function_yes, CONNECT_ONE_SHOT)
if function_no.is_valid():
choice_no.pressed.connect(function_no, CONNECT_ONE_SHOT)
choice_dialog.show()
confirmation_mask.show()