MagicNStuff/source/addons/panku_console/common/module_manager.gd
2025-02-25 22:07:11 +01:00

55 lines
1.3 KiB
GDScript

class_name PankuModuleManager
var _modules:Array[PankuModule]
var _modules_table:Dictionary
var _core:PankuConsole
func init_manager(_core:PankuConsole, _modules:Array[PankuModule]):
self._modules = _modules
self._core = _core
load_modules()
func load_modules():
# The extra tree structure is purely used for avoiding using RefCounted which may cause uncessary leaked instance warnings.
var manager_node:Node = Node.new()
manager_node.name = "_Modules_"
_core.add_child(manager_node)
for _m in _modules:
var module:PankuModule = _m
_modules_table[module.get_module_name()] = module
module.name = module.get_module_name()
manager_node.add_child(module)
for _m in _modules:
var module:PankuModule = _m
module.core = _core
module._init_module()
#print("[info] %s module loaded!" % module.get_module_name())
func update_modules(delta:float):
for _m in _modules:
var module:PankuModule = _m
module.update_module(delta)
func get_module(module_name:String):
return _modules_table[module_name]
func has_module(module_name:String):
return _modules_table.has(module_name)
func get_module_option_objects():
var objects = []
for _m in _modules:
var module:PankuModule = _m
if module._opt != null:
objects.append(module._opt)
return objects
func quit_modules():
for _m in _modules:
var module:PankuModule = _m
module.quit_module()