43 lines
1.1 KiB
GDScript
43 lines
1.1 KiB
GDScript
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)
|