aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/objs/specks.lua19
-rw-r--r--src/scenes/game.lua1
2 files changed, 20 insertions, 0 deletions
diff --git a/src/objs/specks.lua b/src/objs/specks.lua
index 3ea7e43..dd14a59 100644
--- a/src/objs/specks.lua
+++ b/src/objs/specks.lua
@@ -279,3 +279,22 @@ function load_speck_sys(filename)
end
return sys
end
+
+function new_speck_entity(x, y, filepath)
+ local ent = new_entity()
+ add_comp(ent, "Position", x, y)
+ add_comp(ent, "Speck_System")
+ ent.speck_sys = load_speck_sys(filepath)
+ ent.speck_sys.oneshot = true
+
+ add_comp(ent, "Speck_Entity")
+end
+
+register_comp("Speck_Entity", TAGCOMP)
+
+function speck_entity_system(ent, dt)
+ local sys = ent.speck_sys
+ if not sys.emitting and sys:is_empty() then
+ queue_entity_kill(ent)
+ end
+end
diff --git a/src/scenes/game.lua b/src/scenes/game.lua
index f64309b..641f386 100644
--- a/src/scenes/game.lua
+++ b/src/scenes/game.lua
@@ -8,6 +8,7 @@ function start_game_scene()
event_bind(scn.on_update, "Sprite", sprite_anim_sys)
event_bind(scn.on_update, "Sprite", sprite_anim_sys)
event_bind(scn.on_update, "Speck_System", speck_update_sys)
+ event_bind(scn.on_update, "Speck_Entity", speck_entity_system)
event_bind(scn.on_draw, "Sprite", sprite_draw_sys)
event_bind(scn.on_draw, "Tilemap", tilemap_draw_sys)