function love.load() logging = true local love_mem_usage = collectgarbage("count") local love_init_log = "love: "..love_mem_usage.." kB, time: "..os.clock().." seconds" secs = 0 menu_type = "no" debug = false debug_collision = false editor_mode = false text_size = 1 love.graphics.setColor(1,1,1) love.keyboard.setKeyRepeat(true) love.graphics.setDefaultFilter("nearest") -- good pixel game = { seconds_since_start = 0, scale = 2, width = love.graphics.getWidth(), height = love.graphics.getHeight(), framerate = 60 } require "code/require" fps_history = AvgQueue:new(30,60) logPrint(love_init_log) love_init_log = nil Camera.width = game.width Camera.height = game.height level_list = scandir("./data/levels") level_current_num = 1 level_current = level_list[level_current_num] logPrint("level_current: "..level_current) loadLevelTiles() language = "ENG" loadLocale(language) gravity = 0.14 -- Debug and log stuff memory_usage, dtcount = 0, 0 logPrint("mothback: "..collectgarbage("count").." kB, Loading time: "..os.clock().." seconds") main_player = Player:new(75,50) --Kupo:new(100,150) --Kupo:new(300,150) HookAnchor:new(200,89) HookAnchor:new(400,89) Fairy:new(200,88) --CursedBook:new(180,68) --love.audio.play(music.placeholder) end function love.textinput(text) if Prompt.active_prompt then Prompt.active_prompt:textinput(text) end end function love.keypressed(...) if Prompt.active_prompt then Prompt.active_prompt:keypressed(...) end end function love.update(dt) -- audio update love.audio.update() -- fps counter fps_current = fps_history:push(1/dt) current_dt = dt game.seconds_since_start = game.seconds_since_start + dt if DemoRecording or DemoPlayback then Demo:step() end -- things per second dtcount = dtcount + dt game.seconds_since_start = game.seconds_since_start + dt if dtcount >= 1 then secs = secs + 1 dtcount = dtcount - 1 if debug or logging then memory_usage = math.floor(collectgarbage("count")) end logWrite("Second "..secs..": "..memory_usage.." kB") end if Prompt.active_prompt then -- try to stop the keypress that closed the menu from spilling into the rest of the game Keybind:checkPressed(Keybind.menu.pause) if Prompt.active_prompt.closing then Prompt.active_prompt = nil else Prompt.active_prompt:update() end return end if love.keyboard.isDown("f7") then local test_prompt = Prompt:new({ name = "test prompt", func = function(prompt) print("test prompt got input: "..prompt.input) end, }) test_prompt:activate() end --keypressed if Keybind:checkPressed(Keybind.menu.pause) then if do_pause then do_pause = false else menu_type = "pause" initMenu(menu_type) end end --MenuStep if menu_type ~= nil then stepMenu(menu_type) end --editor if editor_mode then stepEditor() else stepGame() end end function love.wheelmoved(_, y) if editor_mode then scrollEditor(y) end end function love.draw() if game.width ~= love.graphics.getWidth() or game.height ~= love.graphics.getHeight() then game.width = love.graphics.getWidth() game.height = love.graphics.getHeight() game_resize = true else game_resize = false end if editor_mode then drawEditor() else drawGame() end if menu_type ~= nil then drawMenu(menu_type) end love.graphics.print(game.scale,10,40) if DemoRecording or DemoPlayback then Demo:draw() end if Prompt.active_prompt then Prompt.active_prompt:draw() end frameDebugFlush() end