aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main.lua7
-rw-r--r--src/ecs.lua4
-rw-r--r--src/init.lua15
-rw-r--r--src/scenes/game.lua10
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)