about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2022-05-22 08:54:33 -0700
committerKartik K. Agaram <vc@akkartik.com>2022-05-22 10:40:34 -0700
commitac74592c426c0133364625fcafd1c40c993ed8ff (patch)
tree5e0341544906e9bbc6febeeb711d678cb15ca77e
parent5b9d8337c184a1d3043fb13942626a479fd68a40 (diff)
downloadtext.love-ac74592c426c0133364625fcafd1c40c993ed8ff.tar.gz
beginnings of a test harness
I have no fucking idea what I'm doing. All I know is that there's still
too many goddamn bugs[1]. Test motherfucking harness or bust. For
starters this is just the default love.run from
https://love2d.org/wiki/love.run

[1] The following file crashes if you repeatedly press cursor-down:
  <<
    a
    b

    c
    ```lines
    ```

    x
  >>
-rw-r--r--main.lua1
-rw-r--r--run.lua37
2 files changed, 38 insertions, 0 deletions
diff --git a/main.lua b/main.lua
index fc27611..551451c 100644
--- a/main.lua
+++ b/main.lua
@@ -7,6 +7,7 @@ local Drawing = require 'drawing'
 local geom = require 'geom'
 require 'help'
 require 'icons'
+require 'run'
 
 -- a line is either text or a drawing
 -- a text is a table with:
diff --git a/run.lua b/run.lua
new file mode 100644
index 0000000..a2124d0
--- /dev/null
+++ b/run.lua
@@ -0,0 +1,37 @@
+-- main entrypoint from LÖVE
+
+function love.run()
+  if love.load then love.load(love.arg.parseGameArguments(arg), arg) end
+  if love.timer then love.timer.step() end
+
+  local dt = 0
+
+  return function()
+    if love.event then
+      love.event.pump()
+      for name, a,b,c,d,e,f in love.event.poll() do
+        if name == "quit" then
+          if not love.quit or not love.quit() then
+            return a or 0
+          end
+        end
+        love.handlers[name](a,b,c,d,e,f)
+      end
+    end
+
+    if love.timer then dt = love.timer.step() end
+
+    if love.update then love.update(dt) end -- will pass 0 if love.timer is disabled
+
+    if love.graphics and love.graphics.isActive() then
+      love.graphics.origin()
+      love.graphics.clear(love.graphics.getBackgroundColor())
+
+      if love.draw then love.draw() end
+
+      love.graphics.present()
+    end
+
+    if love.timer then love.timer.sleep(0.001) end
+  end
+end