1
0
Fork 0
1bit-godot-course/metroidvania/Scenes/World/World.gd

46 lines
1.3 KiB
GDScript3
Raw Normal View History

2021-01-29 16:09:52 +00:00
extends Node
2021-05-22 06:44:00 +00:00
var MainInstances = ResourceLoader.MainInstances
2021-05-20 21:14:20 +00:00
onready var currentLevel = $Level_00
2021-01-29 16:09:52 +00:00
func _ready():
VisualServer.set_default_clear_color(Color.black)
2021-05-22 16:33:00 +00:00
2021-05-23 11:42:57 +00:00
Music.list_play()
2021-05-22 16:33:00 +00:00
if SaverLoader.is_loading:
SaverLoader.load_game()
SaverLoader.is_loading = false
2021-05-22 06:44:00 +00:00
MainInstances.Player.connect("hit_door", self, "_on_Player_hit_door")
MainInstances.Player.connect("died", self, "_on_Player_died")
2021-05-22 06:44:00 +00:00
func _on_Player_hit_door(door):
# Executes the function after the current tick of the game is done, to make
# sure everything is ready to be switched since we're doing calculations
# based on the current level
call_deferred("change_levels", door)
func change_levels(door):
var offset = currentLevel.position
currentLevel.queue_free()
var NewLevel = load(door.new_level_path)
var newLevel = NewLevel.instance()
add_child(newLevel)
var newDoor = get_door_with_connection(door)
var exit_position = newDoor.position - offset
newLevel.position = door.position - exit_position
func get_door_with_connection(outgoingDoor):
var doors = get_tree().get_nodes_in_group("Door")
for door in doors:
if door.connection == outgoingDoor.connection and door != outgoingDoor:
return door
return null
2021-05-23 12:00:04 +00:00
func _on_Player_died():
yield(get_tree().create_timer(1.0), "timeout")
get_tree().change_scene("res://Scenes/Menus/GameOverMenu.tscn")