beta-1.0
This commit is contained in:
46
Scripts/map_transitioner.gd
Normal file
46
Scripts/map_transitioner.gd
Normal file
@@ -0,0 +1,46 @@
|
||||
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_signals() -> void:
|
||||
_connect_loading_zone_transporters()
|
||||
|
||||
|
||||
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)
|
||||
Reference in New Issue
Block a user