-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.gd
127 lines (94 loc) · 2.26 KB
/
main.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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
extends Node
var score = 0
var level = 1
var lives = 3
var lost_lvl = false
var randex = randi_range(0, 6)
var array = [randex]
signal show_screen
var hud_enabled = true
var maze = load("res://tile_map.tscn")
func clear_screen():
get_tree().call_group("mobs", "queue_free")
$Player.hide()
$TileMap.clear()
func start_game():
score = 0
level = 1
lives = 3
lost_lvl = false
$HUD.show_game_begin()
func new_game():
score = 0
level = 1
lives = 3
lost_lvl = false
$HUD.update_score(score)
next_level()
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass # Replace with function body.
#func on_fringe_changed():
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
if Input.is_action_just_pressed("reset"):
var new_maze = maze.instantiate()
var existing_maze = get_children().filter(func(x):
return "TileMap" in x.name)[0]
existing_maze.queue_free()
add_child(new_maze)
func next_level():
$popups.hide_popup()
lost_lvl = false
$HUD.update_score(score)
maze = load("res://tile_map.tscn")
show_screen.emit()
$Player._start($StartPosition.position)
$ScoreTimer.start()
$MobSpawner/SpawnTimer.set_paused(false)
#await get_tree().create_timer(15.0).timeout
#exit_found()
func _on_score_timer_timeout():
score += 1
$HUD.update_score(score)
if Globals.was_hit == true:
lose_life()
func exit_found():
$MobSpawner/SpawnTimer.set_paused(true)
$ScoreTimer.stop()
clear_screen()
level += 1
$popups.show_popup(randex)
while (array.find(randex) != -1):
randex = randi_range(0, 6)
array.push_back(randex)
func lose_life():
$MobSpawner/SpawnTimer.set_paused(true)
$ScoreTimer.stop()
Globals.was_hit = false
clear_screen()
lives -= 1
lost_lvl = true
$popups.show_popup(randex)
while (array.find(randex) != -1):
randex = randi_range(0, 6)
array.push_back(randex)
func check_levels():
$popups.hide_popup()
if lives == 0:
$HUD.show_game_over()
clear_screen()
elif lost_lvl == true:
$HUD.show_level_over(lives, level)
clear_screen()
elif level == 4:
$HUD.show_game_won()
clear_screen()
else:
$HUD.show_level_won(level)
clear_screen()
func check_start():
if lives == 0 or level == 4:
new_game()
else:
next_level()