diff --git a/addons/escoria-core/game/core-scripts/esc_inventory_item.gd b/addons/escoria-core/game/core-scripts/esc_inventory_item.gd index fb0b8ed4..e492969b 100644 --- a/addons/escoria-core/game/core-scripts/esc_inventory_item.gd +++ b/addons/escoria-core/game/core-scripts/esc_inventory_item.gd @@ -12,4 +12,5 @@ var texture: Texture = null func _init(p_item: ESCItem) -> void: global_id = p_item.global_id texture = p_item._get_inventory_texture() + p_item.register_components() diff --git a/gymkhana/addons/escoria-ui-return-monkey-island/esc_item_with_tooltip.gd b/gymkhana/addons/escoria-ui-return-monkey-island/esc_item_with_tooltip.gd index 6b7d8a52..50cfeecb 100644 --- a/gymkhana/addons/escoria-ui-return-monkey-island/esc_item_with_tooltip.gd +++ b/gymkhana/addons/escoria-ui-return-monkey-island/esc_item_with_tooltip.gd @@ -68,6 +68,8 @@ func _ready(): ##outline.offset = Vector2(1,1) collision.add_child(outline) outline.hide() + register_components() + func _process(_delta) -> void: if(is_interactive == false): @@ -93,3 +95,19 @@ func _input(event): elif (event.is_action_released("ui_show_hints")): if(!active): highlight(false) + + func has_component(key: String)->bool: + return components.has(key) + + func get_component(key: String): + if(has_component(key)): + return components[key] + return null + +func register_components(): + for child in get_children(): + if(child is ESCItemComponent): + child = child as ESCItemComponent + components[child.get_component_type()] = child + child.register(custom_data) + \ No newline at end of file diff --git a/gymkhana/addons/escoria-ui-return-monkey-island/item_components/ESCItemComponent.gd b/gymkhana/addons/escoria-ui-return-monkey-island/item_components/ESCItemComponent.gd new file mode 100644 index 00000000..578dbbcc --- /dev/null +++ b/gymkhana/addons/escoria-ui-return-monkey-island/item_components/ESCItemComponent.gd @@ -0,0 +1,14 @@ +extends Node +class_name ESCItemComponent + +var _custom_data: Dictionary + +func get_global_id(): + return self.get_parent().global_id + +func get_component_type(): + pass + +func register(custom_data: Dictionary): + pass +