-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGame.gd
86 lines (74 loc) · 2.45 KB
/
Game.gd
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
extends Node2D
const TitleScene = preload("res://Title.tscn")
const PauseOverlay = preload("res://PauseOverlay.tscn")
const Credits = preload("res://Credits.tscn")
const Help = preload("res://Help.tscn")
const Settings = preload("res://settings/Settings.tscn")
enum OverlayType {
HELP,
PAUSE,
SETTINGS,
CREDITS,
}
const OverlayPackages = [
Help,
PauseOverlay,
Settings,
Credits
]
# Used for pause screen
var overlays = [null, null, null, null]
func _ready():
OS.set_window_size(Vector2(1280, 720))
var title = TitleScene.instance()
Global.current_scene_id = Global.Scene.TITLE
Global.current_scene = title
title.connect("settings_pressed", self, "_on_settings_pressed")
title.connect("help_pressed", self, "_on_help_pressed")
title.connect("credits_pressed", self, "_on_credits_pressed")
self.add_child(title)
func _input(event):
if !event.is_pressed():
return
if event.is_action("pause"):
show_overlay(OverlayType.PAUSE)
if overlays[OverlayType.PAUSE] == null:
if event.is_action("settings"):
show_overlay(OverlayType.SETTINGS)
elif event.is_action("help_screen"):
show_overlay(OverlayType.HELP)
func show_overlay(overlay_type):
if overlays[overlay_type] != null:
if overlay_type == OverlayType.PAUSE:
get_tree().paused = false
overlays[overlay_type].queue_free()
overlays[overlay_type] = null
return
match overlay_type:
OverlayType.PAUSE:
overlays[overlay_type] = create_overlay_instance(overlay_type)
get_tree().paused = true
OverlayType.SETTINGS:
if Global.current_scene_id == Global.Scene.COMBAT:
return
overlays[overlay_type] = create_overlay_instance(overlay_type)
OverlayType.CREDITS:
overlays[overlay_type] = create_overlay_instance(overlay_type)
overlays[overlay_type].connect("closed_scene", Global.current_scene, "_opened_overlay_closed")
overlays[overlay_type].from_title = true
_:
overlays[overlay_type] = create_overlay_instance(overlay_type)
self.add_child(overlays[overlay_type])
func create_overlay_instance(overlay_type):
var overlay_instance = OverlayPackages[overlay_type].instance()
overlay_instance.connect("closed_scene", self, "_opened_overlay_closed")
overlay_instance.overlay_type = overlay_type
return overlay_instance
func _on_settings_pressed():
show_overlay(OverlayType.SETTINGS)
func _on_help_pressed():
show_overlay(OverlayType.HELP)
func _on_credits_pressed():
show_overlay(OverlayType.CREDITS)
func _opened_overlay_closed(overlay_type):
overlays[overlay_type] = null