-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathGlobal.gd
80 lines (55 loc) · 1.76 KB
/
Global.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
extends Node
onready var world = get_node("/root/World")
onready var gui = world.get_node("Interface")
const player_scene = preload("res://Entities/Player/Player.tscn")
var rng = RandomNumberGenerator.new()
export var level_scenes = [
preload("res://Levels/Tutorial1.tscn"),
preload("res://Levels/Tutorial2.tscn"),
preload("res://Levels/LevelOne.tscn"),
preload("res://Levels/LevelTwo.tscn")
]
var player = null
var current_level = -1
var current_level_instance = null
var score = 0 setget set_score;
func set_score(value):
score = value
gui.update_score(score)
func _ready():
load_next_level()
rng.randomize()
gui.update_score(score)
func spawn_player(position) -> void:
var spawn_player = false
if player == null:
player = player_scene.instance()
spawn_player = true
player.global_position = position
if spawn_player: add_entity_to_world(player)
func add_entity_to_world(entity):
call_deferred("_add_child_to_world", entity)
func _add_child_to_world(entity):
world.add_child(entity)
func load_next_level() -> void:
if current_level_instance != null:
current_level_instance.queue_free()
for node in world.get_tree().get_nodes_in_group("money"):
node.queue_free()
current_level += 1
if current_level >= level_scenes.size() -1:
current_level = rng.randi_range(2, level_scenes.size() -1)
var level_scene = level_scenes[current_level]
current_level_instance = level_scene.instance()
add_entity_to_world(current_level_instance)
func pause():
get_tree().paused = true
func unpause():
get_tree().paused = false
func update_player_health(new_health):
gui.update_health(new_health)
func get_vial_count():
var vials = world.get_tree().get_nodes_in_group("vial")
var size = vials.size()
gui.update_vial_count(size)
return size