diff --git a/base/scenes/enemies/test_enemy.tscn b/base/scenes/enemies/test_enemy.tscn index d68e3ca..dd11428 100644 --- a/base/scenes/enemies/test_enemy.tscn +++ b/base/scenes/enemies/test_enemy.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=13 format=3 uid="uid://twqkevpn0q1a"] +[gd_scene load_steps=14 format=3 uid="uid://twqkevpn0q1a"] [ext_resource type="Texture2D" uid="uid://b0gyyb6xwfjex" path="res://base/assets/sprites/test_enemy/0000.png" id="1_7qny8"] [ext_resource type="Script" uid="uid://j0w37fjl13ox" path="res://base/scripts/enemies/directional_sprite3d.gd" id="2_hmq60"] @@ -10,6 +10,7 @@ [ext_resource type="Texture2D" uid="uid://bu54h8g5r50qp" path="res://base/assets/sprites/test_enemy/0006.png" id="8_snoby"] [ext_resource type="Texture2D" uid="uid://c57drlhnuicu5" path="res://base/assets/sprites/test_enemy/0007.png" id="9_83myg"] [ext_resource type="Script" uid="uid://biqn05eyrhdya" path="res://base/scripts/enemies/floor_mover.gd" id="10_rvsun"] +[ext_resource type="Script" uid="uid://c8ngo2rpuroum" path="res://base/scripts/effects_system/effect_handler.gd" id="11_ajcop"] [sub_resource type="GDScript" id="GDScript_rvsun"] resource_name = "temp" @@ -60,3 +61,8 @@ script = SubResource("GDScript_rvsun") [node name="CollisionShape3D" type="CollisionShape3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.766538, 0) shape = SubResource("CapsuleShape3D_rvsun") + +[node name="Entity" type="Node" parent="."] + +[node name="EffectHandler" type="Node" parent="."] +script = ExtResource("11_ajcop") diff --git a/base/scripts/effects_system/effect_handler.gd b/base/scripts/effects_system/effect_handler.gd new file mode 100644 index 0000000..6ef8400 --- /dev/null +++ b/base/scripts/effects_system/effect_handler.gd @@ -0,0 +1,21 @@ +extends Node + +signal effect_added(effect : StringName) +signal effect_removed(effect : StringName) + +## Add effect to +func add_effect(effectScene : PackedScene): + var effect = effectScene.instantiate() + effect.owner = owner + if get_node(effect.name) != null: + remove_effect(effect.name) + add_child(effect) + effect_added.emit(effect.name) + +func remove_effect(effect : StringName): + var path = NodePath(effect) + if get_node(path) == null: + printerr("Effect does not exist: ", effect) + return + effect_removed.emit(effect) + get_node(path).queue_free() diff --git a/base/scripts/effects_system/effect_handler.gd.uid b/base/scripts/effects_system/effect_handler.gd.uid new file mode 100644 index 0000000..0b707bc --- /dev/null +++ b/base/scripts/effects_system/effect_handler.gd.uid @@ -0,0 +1 @@ +uid://c8ngo2rpuroum diff --git a/base/scripts/entity.gd b/base/scripts/entity.gd index 1506645..8067e21 100644 --- a/base/scripts/entity.gd +++ b/base/scripts/entity.gd @@ -1,4 +1,4 @@ -extends Node3D +extends Node ## Base class for all hp-based objects class_name Entity @@ -68,8 +68,6 @@ func kill(source : Entity): context.target = self killed.emit(context) GameSignalBus.entity_killed.emit(context) - - deconstruct() ## Method used to properly deconstruct entity