aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authors-ol <s+removethis@s-ol.nu>2021-05-03 16:03:30 +0000
committers-ol <s+removethis@s-ol.nu>2021-05-03 16:03:30 +0000
commit50697f5edf27e5b7c6b320b321cffdadbe2cf5dc (patch)
treecdc33d9480902767a05984480f7b65e41da72545
parentlove: add text shape, line-width modifier (diff)
downloadalive-50697f5edf27e5b7c6b320b321cffdadbe2cf5dc.tar.gz
alive-50697f5edf27e5b7c6b320b321cffdadbe2cf5dc.zip
move love main.lua to alv.copilot.love.main
-rw-r--r--alv/copilot/love.moon29
-rw-r--r--alv/copilot/love/init.moon78
-rw-r--r--alv/copilot/love/main.lua (renamed from bin/alv-love/main.lua)0
-rwxr-xr-xbin/alv-love5
4 files changed, 83 insertions, 29 deletions
diff --git a/alv/copilot/love.moon b/alv/copilot/love.moon
deleted file mode 100644
index 2a7458f..0000000
--- a/alv/copilot/love.moon
+++ /dev/null
@@ -1,29 +0,0 @@
-----
--- löve Copilot entrypoint.
---
--- @classmod LoveCopilot
-import CLICopilot from require 'alv.copilot.cli'
-
-class LoveCopilot extends CLICopilot
- new: (arg) =>
- table.remove arg, 1
- super arg
- @drawlist = {}
-
- update: =>
- @tick!
-
- draw: =>
- for id, list in pairs @drawlist
- for fn in *list
- fn!
-
- run: =>
- @setup!
-
- love.draw = @\draw
- love.update = @\update
-
-{
- :LoveCopilot
-}
diff --git a/alv/copilot/love/init.moon b/alv/copilot/love/init.moon
new file mode 100644
index 0000000..0d1515f
--- /dev/null
+++ b/alv/copilot/love/init.moon
@@ -0,0 +1,78 @@
+----
+-- löve Copilot entrypoint.
+--
+-- @classmod LoveCopilot
+import CLICopilot from require 'alv.copilot.cli'
+import T, Array from require 'alv.base'
+
+export COPILOT
+
+vec2 = Array 2, T.num
+
+class LoveCopilot extends CLICopilot
+ new: (arg) =>
+ table.remove arg, 1
+ super arg
+
+ @drawlist = {}
+ @mouse_pos = vec2\mk_sig { love.mouse.getPosition! }
+ @mouse_delta = vec2\mk_evt!
+ @mouse_presses = T['love/_click']\mk_evt!
+ @mouse_releases = T['love/_click']\mk_evt!
+ @wheel_delta = vec2\mk_evt!
+ @key_presses = T.str\mk_evt!
+ @key_releases = T.str\mk_evt!
+ @textinput = T.str\mk_evt!
+
+ draw: =>
+ love.graphics.origin!
+ love.graphics.clear!
+
+ for id, list in pairs @drawlist
+ for fn in *list
+ fn!
+
+ love.graphics.present!
+
+ run: =>
+ @setup!
+
+ love.run = ->
+ return ->
+ love.event.pump!
+ did_tick = false
+ for name, a,b,c,d,e,f in love.event.poll!
+ COPILOT = @
+ switch name
+ when 'quit'
+ return a or 0
+ when 'mousemoved'
+ @mouse_pos\set { a, b }
+ @mouse_delta\set { c, d }, true
+ when 'mousepressed'
+ @mouse_presses\set { pos: { a, b }, button: c }, true
+ when 'mousereleased'
+ @mouse_releases\set { pos: { a, b }, button: c }, true
+ when 'wheelmoved'
+ @wheel_delta\set { a, b }, true
+ when 'keypressed'
+ @key_presses\set a, true
+ when 'textinput'
+ @textinput\set a, true
+ when 'keyreleased'
+ @key_releases\set a, true
+ --else
+ -- print "unhandled: '#{name}'", a,b,c,d,e,f
+
+ COPILOT = nil
+ did_tick = true
+ @tick!
+
+ @tick! unless did_tick
+ @draw!
+
+ love.timer.sleep 0.001 if love.timer
+
+{
+ :LoveCopilot
+}
diff --git a/bin/alv-love/main.lua b/alv/copilot/love/main.lua
index 7b95a26..7b95a26 100644
--- a/bin/alv-love/main.lua
+++ b/alv/copilot/love/main.lua
diff --git a/bin/alv-love b/bin/alv-love
new file mode 100755
index 0000000..10c44ab
--- /dev/null
+++ b/bin/alv-love
@@ -0,0 +1,5 @@
+#!/bin/sh
+LOVE=$(which love11 love 2>/dev/null | head -n 1)
+BASE=$(dirname "$0")
+echo "base '$BASE'"
+exec "$LOVE" "$BASE/../alv/copilot/love" "$@"