class_name UI
extends CanvasLayer


@onready var crosshair: CenterContainer = $Crosshair
@onready var inventory: Inventory = $Inventory
@onready var quick_slots: MarginContainer = $QuickSlots
@onready var pause_menu: PauseMenu = $PauseMenu
@onready var settings_menu: SettingsMenu = $SettingsMenu
@onready var waila: Waila = $Waila


func _ready() -> void:
	SignalManager.close_pause_menu.connect(_on_close_pause_menu)
	SignalManager.open_pause_menu.connect(_on_open_pause_menu)
	SignalManager.close_settings_menu.connect(_on_close_settings_menu)
	SignalManager.open_settings_menu.connect(_on_open_settings_menu)
	SignalManager.resume_game.connect(_on_resume_game)

	_on_resume_game()


func hide_menus() -> void:
	pause_menu.visible = false
	settings_menu.visible = false
	inventory.visible = false

func hide_ui_elements() -> void:
	crosshair.visible = false
	quick_slots.visible = false
	waila.visible = false


func _on_close_pause_menu() -> void:
	SignalManager.resume_game.emit()

func _on_close_settings_menu() -> void:
	SignalManager.resume_game.emit()

func _on_open_pause_menu() -> void:
	Input.mouse_mode = Input.MOUSE_MODE_VISIBLE

	hide_ui_elements()
	hide_menus()
	pause_menu.visible = true

	get_tree().paused = true

func _on_open_settings_menu() -> void:
	Input.mouse_mode = Input.MOUSE_MODE_VISIBLE

	hide_ui_elements()
	hide_menus()
	settings_menu.visible = true

	get_tree().paused = true

func _on_resume_game() -> void:
	Input.mouse_mode = Input.MOUSE_MODE_CAPTURED

	hide_menus()
	crosshair.visible = true
	quick_slots.visible = true and GameSettingsManager.settings.game_options.enable_quickslots_ui
	waila.visible = true

	get_tree().paused = false