-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathmain.gd
More file actions
153 lines (103 loc) · 3.31 KB
/
main.gd
File metadata and controls
153 lines (103 loc) · 3.31 KB
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
extends Node2D
var HomeView = preload("res://views/home.tscn");
var GameView = preload("res://views/game.tscn");
var LoseView = preload("res://views/lose.tscn");
var AboutView = preload("res://views/about.tscn");
var SaveView = preload("res://views/save.tscn");
var RankView = preload("res://views/rank.tscn");
var OptionsView = preload("res://views/options.tscn");
var LeaderboardView = preload("res://views/leaderboard.tscn");
var StatisticView = preload("res://views/statistics.tscn");
var current;
func _ready():
if (Settings.settings.musics):
$Music.play();
Settings.connect("settings_updated", self, "_on_settings_updated");
current = create_home();
add_child(current);
pass
func create_home():
var home = HomeView.instance();
home.connect("play", self, 'on_play');
home.connect("info", self, 'on_info');
home.connect("options", self, 'on_options');
home.connect("statistics", self, 'on_statistics');
home.connect("leaderboard", self, 'on_leaderboard');
return home;
func create_about():
var about = AboutView.instance();
about.connect("back", self, 'on_home');
return about;
func create_game():
var game = GameView.instance();
game.set_life(3);
game.connect("lose", self, "on_lose");
return game;
func create_lose(score, stats, save = false):
var lose = LoseView.instance();
lose.connect("restart", self, "on_play");
lose.connect("home", self, "on_home");
lose.connect("save", self, "on_save");
lose.score = score;
lose.stats = stats;
lose.save = save;
return lose;
func create_save(score, stats):
var save = SaveView.instance();
save.connect("cancel", self, "on_lose");
save.connect("send", self, "on_rank");
save.score = score;
save.stats = stats;
return save;
func create_rank(data):
var rank = RankView.instance();
rank.connect("restart", self, "on_play");
rank.connect("home", self, "on_home");
rank.data = data;
return rank;
func create_leaderboard():
var leaderboard = LeaderboardView.instance();
leaderboard.connect("back", self, "on_home");
return leaderboard;
func create_options():
var options = OptionsView.instance();
options.connect("back", self, "on_home");
return options;
func create_statistics():
var statistics = StatisticView.instance();
statistics.connect("back", self, "on_home");
return statistics;
func update_current_view(view):
$Fade.fade_in();
yield($Fade/Animation, "animation_finished");
current.queue_free();
add_child(view);
current = view;
$Fade.fade_out();
yield($Fade/Animation, "animation_finished");
func _on_settings_updated(settings):
if (settings.musics and $Music.playing == true):
return;
if (settings.musics):
return $Music.play();
$Music.stop();
func on_home():
update_current_view(create_home());
func on_info():
update_current_view(create_about());
func on_play():
update_current_view(create_game());
func on_options():
update_current_view(create_options());
func on_statistics():
update_current_view(create_statistics());
func on_lose(score, stats, save = false):
if (save and Settings.settings.sfx):
$AudioLose.play();
update_current_view(create_lose(score, stats, save));
func on_save(score, stats):
update_current_view(create_save(score, stats));
func on_rank(data):
update_current_view(create_rank(data));
func on_leaderboard():
update_current_view(create_leaderboard());