2D multiplayer platformer using Godot Engine
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

33 lines
1.0 KiB

class_name Layers
static var LOOKUP: Dictionary[String, Definition]
static func _static_init() -> void:
for e in ProjectSettings.get_global_class_list():
var value_script := load(e.path) as GDScript
if not value_script: continue # not a script
var layer_script := value_script.get_script_constant_map().get("Layer") as GDScript
if not layer_script: continue # doesn't have an inner class called "Layer"
LOOKUP[e.class.to_lower()] = Definition.new(value_script, layer_script)
static func lookup(layer_name: String) -> Definition:
return LOOKUP.get(layer_name.to_lower())
static func load(layer_name: String, buffer: StreamBuffer) -> Node:
var definition := lookup(layer_name)
if not definition: return null
var layer: Node = definition.layer.load(buffer)
layer.name = layer_name
return layer
class Definition:
var value: GDScript
var layer: GDScript
var default: Variant:
get: return value.DEFAULT
func _init(value: GDScript, layer: GDScript) -> void:
self.value = value
self.layer = layer