require "src.init" local lg = love.graphics function love.load() main_init() local scn = new_scene() event_bind(scn.on_update, "Body", body_sys) event_bind(scn.on_update, "Player", player_movement_sys) event_bind(scn.on_update, "Sprite", sprite_anim_sys) event_bind(scn.on_draw, "Sprite", sprite_draw_sys) event_bind(scn.on_draw, "Tilemap", tilemap_draw_sys) event_bind(scn.on_ui, "Player", player_ui_sys) set_scene(scn) new_player(100, 100) box1 = phys.Box.new(20, 20, 16, 16, { layers = {}, mask = { "hard" }, }) ground1 = phys.Box.new(5, 50, 64, 16, {}) ground2 = phys.Box.new(64 - 16, 50 + 16, 16, 64, {}) local tilemap = new_tilemap(64, 64) scn.tilemap = tilemap set_tile(tilemap, 0, 0, 1) end function love.update(dt) local scn = get_current_scene() assert(scn, "No scene set.") fire_event(scn.on_update, dt) box1:update(0, 5, dt) flush_scene() end function love.draw(dt) lg.origin() lg.setCanvas({viewport, stencil=true}) lg.clear() local scn = get_current_scene() assert(scn, "No scene set.") fire_event(scn.on_draw, dt) im.begin_step() fire_event(scn.on_ui) im.draw() im.end_step() -- TODO: Take care of weird displays lg.setCanvas() local scr_width, scr_height = lg.getDimensions() WindowScale = min(scr_width / SCR_WIDTH, scr_height / SCR_HEIGHT) lg.draw( viewport, scr_width / 2, scr_height / 2, 0, WindowScale, WindowScale, SCR_WIDTH / 2, SCR_HEIGHT / 2) lg.print(tostring(love.timer.getFPS())) input_step() end