You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1012 B
GDScript
36 lines
1012 B
GDScript
extends Node3D
|
|
|
|
class_name LevelManager
|
|
|
|
var map: Node3D
|
|
var starting_map = "level0101.tscn"
|
|
|
|
func _ready():
|
|
Global.level_mgr = self
|
|
|
|
func init():
|
|
MetSys.set_save_data()
|
|
goto_map(MetSys.get_full_room_path(starting_map))
|
|
MetSys.room_changed.connect(on_room_changed, CONNECT_DEFERRED)
|
|
|
|
func goto_map(map_path: String):
|
|
var prev_map_position := Vector2i.MAX
|
|
if map:
|
|
# If some map is already loaded (which is true anytime other than the beginning), remember its position and free it.
|
|
prev_map_position = MetSys.get_current_room_instance().get_base_coords()
|
|
map.queue_free()
|
|
map = null
|
|
|
|
map = load(map_path).instantiate()
|
|
add_child(map)
|
|
MetSys.current_layer = MetSys.get_current_room_instance().get_layer()
|
|
var level_size = MetSys.get_current_room_instance().get_size()
|
|
print(level_size)
|
|
SignalManager.level_size_change.emit(level_size)
|
|
|
|
func on_room_changed(target_map: String):
|
|
if target_map.is_absolute_path():
|
|
goto_map(target_map)
|
|
else:
|
|
goto_map(MetSys.get_full_room_path(target_map))
|