-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.gd
70 lines (57 loc) · 1.38 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
extends Node
@export var coin_scene : PackedScene
@export var playtime = 30
var level = 1
var score = 0
var time_left = 0
var screensize = Vector2.ZERO
var playing = false
# Called when the node enters the scene tree for the first time.
func _ready():
screensize = get_viewport().get_visible_rect().size
$Player.screensize = screensize
$Player.hide()
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
if playing and get_tree().get_nodes_in_group("coins").size() == 0:
level += 1
time_left += 5
spawn_coins()
func spawn_coins():
for i in level + 4:
var c = coin_scene.instantiate()
add_child(c)
c.screensize = screensize
c.position = Vector2(randi_range(0, screensize.x),
randi_range(0, screensize.y))
func new_game():
playing = true
level = 10
score = 0
time_left = playtime
$Player.start()
$Player.show()
$GameTimer.start()
spawn_coins()
$UI.update_score(score)
$UI.update_timer(time_left)
func _on_game_timer_timeout():
time_left -= 1
$UI.update_timer(time_left)
if time_left <= 0:
game_over()
func _on_player_hurt():
game_over()
func _on_player_pickup():
score += 1
$UI.update_score(score)
func game_over():
playing = false
$GameTimer.stop()
get_tree().call_group("coins", "queue_free")
$UI.show_game_over()
$Player.die()
func _on_ui_start_game():
new_game()
func _on_game_timer_timeout():
pass