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_update, "Room_Editor", room_editor_ui_sys) event_bind(scn.on_ui, "Room_Editor", tile_place_sys) set_scene(scn) player = new_player(100, 100) 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) local room_editor = new_entity() add_comp(room_editor, "Room_Editor") end function love.update(dt) local scn = get_current_scene() assert(scn, "No scene set.") fire_event(scn.on_update, 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) ground1:draw() ground2:draw() player.box:draw() -- 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.setColor(1, 1, 1) lg.draw( viewport, scr_width / 2, scr_height / 2, 0, WindowScale, WindowScale, SCR_WIDTH / 2, SCR_HEIGHT / 2) im.begin_step() fire_event(scn.on_ui) im.draw() im.end_step() lg.print(tostring(love.timer.getFPS())) lg.print("left "..tostring(player.box:touching_left()), 0, 20) lg.print("right "..tostring(player.box:touching_right()), 0, 40) lg.print("horizontal "..tostring(player.box:touching_horizontal()), 0, 60) lg.print("up "..tostring(player.box:touching_up()), 0, 80) lg.print("down "..tostring(player.box:touching_down()), 0, 100) lg.print("vertical "..tostring(player.box:touching_vertical()), 0, 120) lg.print("any "..tostring(player.box:touching()), 0, 140) input_step() end