-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMain.gd
More file actions
80 lines (69 loc) · 1.63 KB
/
Main.gd
File metadata and controls
80 lines (69 loc) · 1.63 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
extends Node
export (PackedScene) var Coin
export (PackedScene) var Powerup
export (int) var playtime
var level
var score
var time_left
var screensize
var playing = false
func _ready():
randomize()
screensize = get_viewport().get_visible_rect().size
$Player.screensize = screensize
$Player.hide()
func new_game():
playing = true
level = 1
score = 0
time_left = playtime
$Player.start($PlayerStart.position)
$Player.show()
$GameTimer.start()
spawn_coins()
$HUD.update_score(score)
$HUD.update_timer(time_left)
func _process(delta):
if playing and $CoinContainer.get_child_count() == 0:
level += 1
time_left += 5
spawn_coins()
$PowerupTimer.wait_time = rand_range(5, 10)
$PowerupTimer.start()
func spawn_coins():
for i in range(4 + level):
var c = Coin.instance()
$CoinContainer.add_child(c)
c.screensize = screensize
c.position = Vector2(rand_range(0, screensize.x), rand_range(0, screensize.y))
$LevelSound.play()
func _on_GameTimer_timeout():
time_left -= 1
$HUD.update_timer(time_left)
if time_left <= 0:
game_over()
func _on_Player_pickup(type):
match type:
"coin":
score += 1
$HUD.update_score(score)
$CoinSound.play()
"powerup":
time_left += 5
$PowerupSound.play()
$HUD.update_timer(time_left)
func _on_Player_hurt():
game_over()
func game_over():
$EndSound.play()
playing = false
$GameTimer.stop()
for coin in $CoinContainer.get_children():
coin.queue_free()
$HUD.show_game_over()
$Player.die()
func _on_PowerupTimer_timeout():
var p = Powerup.instance()
add_child(p)
p.screensize = screensize
p.position = Vector2(rand_range(0, screensize.x), rand_range(0, screensize.y))