extends Node signal MapChanged(map_id: Enums.MapIds) @export var initial_map_id: Enums.MapIds @onready var world: Node2D = $"../World" # Private Methods func _ready() -> void: var map_scene := MapLoader.GetMap(initial_map_id) var map := map_scene.instantiate() world.add_child(map) await map.ready _connect_loading_zone_transporters() MapChanged.emit(initial_map_id) func _on_map_transition_queued(map_id: Enums.MapIds, marker_name: String) -> void: print("Map Transition Queued: %s" % [Enums.MapIds.keys()[map_id]]) var map_scene := MapLoader.GetMap(map_id) MapLoader.SetSpawnMarker(marker_name) for child in world.get_children(): child.queue_free() await child.tree_exited var map := map_scene.instantiate() world.call_deferred("add_child", map) await map.ready _connect_loading_zone_transporters() MapChanged.emit(map_id) func _connect_loading_zone_transporters() -> void: var loading_zone_transporters := GroupUtils.GetAllLoadingZoneTransporters() print("Loading Zones: %d" % len(loading_zone_transporters)) for transporter in loading_zone_transporters: transporter.MapTransitionQueued.connect(_on_map_transition_queued)