forked from drxwat/ChickenAlarm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMain.gd
127 lines (92 loc) · 2.87 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 Node2D
var gui_time: Label
var gui_chick_num: Label
var catched_chickens := 0
var _tween: Tween
var win = false
var lose = false
onready var chickens_num := $Chickens.get_child_count()
onready var game_over_root: Control
onready var game_over_label := $CanvasLayer/GameOver/Label
onready var game_over_hover := $CanvasLayer/GameOver/hover
onready var game_over_pict := $CanvasLayer/GameOver/TextureRect
export var time_left := 180
export var win_texture: Texture
func _ready():
gui_time = $CanvasLayer/GUI/NinePatchRect2/TimeLeft
gui_time.text = format_time(time_left)
gui_chick_num = $CanvasLayer/GUI/NinePatchRect/ChickensNum
set_catched_chickens_n(catched_chickens, chickens_num)
_tween = get_node("Tween")
game_over_root = $CanvasLayer/GameOver
for dog in $Dogs.get_children():
dog.connect("on_bite", self, "on_dog_bite")
func _on_Timer_timeout():
if (time_left <= 0):
return
time_left -= 1
gui_time.text = format_time(time_left)
check_game_over()
func format_time(seconds: int):
var minutes = seconds / 60
var last_sec = seconds - (minutes * 60)
return "%s:%s" % [minutes, "0%s" % last_sec if last_sec < 10 else last_sec]
func _on_Player_on_chicken_catch(chicken_node):
catched_chickens += 1
chicken_node.queue_free()
set_catched_chickens_n(catched_chickens, chickens_num)
check_game_over()
func check_game_over():
if (catched_chickens == chickens_num):
win = true
game_over_label.text = ""
game_over()
if (time_left <= 0):
game_over_label.text = "Time is over"
lose = true
game_over()
func set_catched_chickens_n(current: int, all: int):
gui_chick_num.text = "%s / %s" % [current, all]
func game_over():
$CanvasLayer/GUI.hide()
var color = Color("#000")
game_over_label.modulate = Color('#fff')
if win:
color = Color("#fff")
game_over_label.modulate = Color('#000')
game_over_pict.texture = win_texture
game_over_hover.color = color
if (_tween.is_active()):
# warning-ignore:return_value_discarded
_tween.stop_all()
# warning-ignore:return_value_discarded
_tween.interpolate_property(
game_over_root, "modulate",
game_over_root.modulate, # from
Color(game_over_root.modulate.r, game_over_root.modulate.g, game_over_root.modulate.b, 1), # to
0.5, Tween.TRANS_LINEAR, Tween.EASE_IN_OUT
)
# warning-ignore:return_value_discarded
_tween.start()
$GameOver.play()
get_tree().paused = true
func on_dog_bite():
game_over_label.text = "You have been caught"
game_over()
func _on_MainTheme_finished():
$MainTheme.play(0)
func _on_GameOver_restart_the_game():
get_tree().paused = false
get_tree().reload_current_scene()
func _on_Help_help_opened():
if win or lose:
return
$CanvasLayer/GameOver.visible = false
$CanvasLayer/GUI.visible = false
func _on_Help_help_closed():
if win or lose:
return
$CanvasLayer/GameOver.visible = true
$CanvasLayer/GUI.visible = true
func _on_Help_exit_game():
get_tree().quit()