summaryrefslogtreecommitdiffstats
path: root/pause_menu.gd
blob: ce09867d7d9b1399907a7b4a5c1bbadee3c96a86 (plain)
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
38
39
40
41
class_name PauseMenu
extends CanvasLayer

var active_page_index: int
var pages: Array[PauseMenuPage] = []

func _ready():
	pages = []
	var children = get_children()
	for child in children:
		if child is PauseMenuPage:
			pages.push_back(child)
			remove_child.call_deferred(child)

func _on_tree_entered() -> void:
	get_tree().paused = true
	get_tree().call_group("ui_movement", "set_visible", false)

	if pages.size() > 0:
		set_page(0)

func _exit_tree():
	get_tree().paused = false
	get_tree().call_group("ui_movement", "set_visible", true)

func _process(_delta: float):
	if visible and Input.is_action_just_pressed("action"):
		set_page((active_page_index + 1) % pages.size())

func get_map() -> PauseMenuMap:
	for page in pages:
		if page is PauseMenuMap: return page

	return null

func set_page(i: int):
	var prev_page = pages[active_page_index]
	remove_child.call_deferred(prev_page)
	
	active_page_index = i
	add_child.call_deferred(pages[i])