diff options
Diffstat (limited to 'Global.gd')
-rw-r--r-- | Global.gd | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/Global.gd b/Global.gd new file mode 100644 index 0000000..d9414c8 --- /dev/null +++ b/Global.gd @@ -0,0 +1,60 @@ +extends Node + + +const Levels = [ + "Level_0001", + "Level_0001", + "Level_0001", + "Level_0001", + "Level_0001", + "Level_0001", + "Level_0001", + "Level_0001", + "Level_0001", +] + +var Level_Map = [] + + +func _ready(): + for level in self.Levels: + self.Level_Map.push_back({ + time = 0, + cleared_by = -1, + meta = { + path = "res://Levels/%s.tscn" % level, + name = level, + }, + }) + + +func change_scene_to_instance(instance): + call_deferred("_deferred_change_scene_to_instance", instance) +func _deferred_change_scene_to_instance(instance): + get_tree().current_scene.free() + get_tree().get_root().add_child(instance) + get_tree().set_current_scene(instance) + + +func get_level(idx): + return self.Level_Map[idx] + + +func start_level(idx): + var global_level = self.get_level(idx) + + var Level = load(global_level.meta.path) + var instance_level = Level.instance() + instance_level.idx = idx + self.change_scene_to_instance(instance_level) + + +func end_level(instance_level): + var global_level = self.get_level(instance_level.idx) + + var time = stepify(instance_level.timer, 0.01) + if (global_level.time == 0 or time < global_level.time): + global_level.time = time + global_level.cleared_by = randi() & 1 + + get_tree().change_scene("res://UI/LevelSelect.tscn") |