diff options
| -rw-r--r-- | src/objs/specks.lua | 19 | ||||
| -rw-r--r-- | src/scenes/game.lua | 1 |
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) |
