41 lines
1.1 KiB
GDScript3
41 lines
1.1 KiB
GDScript3
|
extends Node
|
||
|
|
||
|
const DEFAULT_SCREEN_SIZE = Vector2(640, 360)
|
||
|
|
||
|
var map = null setget set_map
|
||
|
var global_data := {}
|
||
|
|
||
|
onready var DataManager = get_node("DataManager")
|
||
|
onready var MapContainer = get_node("Ingame/Viewport/MapContainer")
|
||
|
onready var Player = get_node("Ingame/Viewport/MapContainer/Player")
|
||
|
onready var Camera = get_node("Ingame/Viewport/MapContainer/Camera")
|
||
|
onready var Dialog = get_node("UI/Dialog")
|
||
|
|
||
|
func set_map(value):
|
||
|
if !value == null:
|
||
|
if !map == null:
|
||
|
map.queue_free()
|
||
|
yield(map, "tree_exited")
|
||
|
var instanced_map = _map_to_node(value)
|
||
|
if instanced_map != null:
|
||
|
MapContainer.add_child(instanced_map)
|
||
|
map = instanced_map
|
||
|
print("Map set!")
|
||
|
else:
|
||
|
if !map == null:
|
||
|
map.queue_free()
|
||
|
|
||
|
|
||
|
# Pass either a String, a PackedScene or a Node
|
||
|
# directly to certainly get a Node
|
||
|
func _map_to_node(node_information) -> Node:
|
||
|
if node_information is String:
|
||
|
return load(node_information).instance()
|
||
|
elif node_information is PackedScene:
|
||
|
return node_information.instance()
|
||
|
elif node_information is Node:
|
||
|
return node_information
|
||
|
else:
|
||
|
push_error("No supported format was passed for the map!")
|
||
|
return null
|