From 39e19c7522eabee7da9f4e01dc0e940b7678cf87 Mon Sep 17 00:00:00 2001 From: ne_mene Date: Fri, 3 Apr 2026 21:02:39 +0200 Subject: global events --- main.lua | 7 ++++++- src/ecs.lua | 4 ++++ src/init.lua | 15 +++++++++++++++ src/scenes/game.lua | 10 ---------- 4 files changed, 25 insertions(+), 11 deletions(-) diff --git a/main.lua b/main.lua index f0e1a39..ce6e306 100644 --- a/main.lua +++ b/main.lua @@ -18,6 +18,7 @@ function love.update(dt) assert(scn, "No scene set.") fire_event(scn.on_update, dt) + fire_event(global_on_update, dt) flush_scene() get_active_camera():update(dt) @@ -25,7 +26,7 @@ end function love.draw(dt) lg.origin() - lg.setCanvas({viewport, stencil=true}) + lg.setCanvas({ viewport, stencil = true }) use_camera_transform() lg.clear() @@ -33,6 +34,8 @@ function love.draw(dt) assert(scn, "No scene set.") fire_event(scn.on_draw, dt) + fire_event(global_on_draw, dt) + flush_scene() lg.origin() lg.setCanvas() @@ -50,6 +53,8 @@ function love.draw(dt) im.begin_step() fire_event(scn.on_ui) + fire_event(global_on_ui) + flush_scene() im.draw() im.end_step() diff --git a/src/ecs.lua b/src/ecs.lua index a1dab27..8685b2f 100644 --- a/src/ecs.lua +++ b/src/ecs.lua @@ -2,6 +2,10 @@ local current_scene = nil local comp_inits = {} local comp_deinits = {} +global_on_update = new_event() +global_on_draw = new_event() +global_on_ui = new_event() + function TAGCOMP(_) end function new_scene() diff --git a/src/init.lua b/src/init.lua index 66f1b9e..bcf5518 100644 --- a/src/init.lua +++ b/src/init.lua @@ -34,6 +34,19 @@ lf = love.filesystem lw = love.window lmath = love.math +function init_global_systems() + event_bind(global_on_update, "Body", body_sys) + event_bind(global_on_update, "State_Machine", state_update_sys) + event_bind(global_on_update, "Sprite", sprite_anim_sys) + event_bind(global_on_update, "Speck_System", speck_update_sys) + event_bind(global_on_update, "Speck_Entity", speck_entity_system) + event_bind(global_on_update, "Camera", camera_move_system) + + event_bind(global_on_draw, "Sprite", sprite_draw_sys) + event_bind(global_on_draw, "Tilemap", tilemap_draw_sys) + event_bind(global_on_draw, "Speck_System", speck_draw_sys) +end + local function load_dir(path) local files = lf.getDirectoryItems(path) @@ -58,5 +71,7 @@ function main_init() load_dir("src/objs") load_dir("src/scenes") + + init_global_systems() end diff --git a/src/scenes/game.lua b/src/scenes/game.lua index 45083ca..918caa9 100644 --- a/src/scenes/game.lua +++ b/src/scenes/game.lua @@ -2,17 +2,7 @@ function start_game_scene() local scn = new_scene() - event_bind(scn.on_update, "Body", body_sys) event_bind(scn.on_update, "Player", player_update_sys) - event_bind(scn.on_update, "State_Machine", state_update_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_update, "Camera", camera_move_system) - - event_bind(scn.on_draw, "Sprite", sprite_draw_sys) - event_bind(scn.on_draw, "Tilemap", tilemap_draw_sys) - event_bind(scn.on_draw, "Speck_System", speck_draw_sys) event_bind(scn.on_update, "Room_Editor", room_editor_ui_sys) event_bind(scn.on_ui, "Room_Editor", tile_place_sys) -- cgit v1.3-2-g0d8e