diff options
| author | s-ol <s+removethis@s-ol.nu> | 2021-05-03 16:03:30 +0000 |
|---|---|---|
| committer | s-ol <s+removethis@s-ol.nu> | 2021-05-03 16:03:30 +0000 |
| commit | 50697f5edf27e5b7c6b320b321cffdadbe2cf5dc (patch) | |
| tree | cdc33d9480902767a05984480f7b65e41da72545 | |
| parent | love: add text shape, line-width modifier (diff) | |
| download | alive-50697f5edf27e5b7c6b320b321cffdadbe2cf5dc.tar.gz alive-50697f5edf27e5b7c6b320b321cffdadbe2cf5dc.zip | |
move love main.lua to alv.copilot.love.main
| -rw-r--r-- | alv/copilot/love.moon | 29 | ||||
| -rw-r--r-- | alv/copilot/love/init.moon | 78 | ||||
| -rw-r--r-- | alv/copilot/love/main.lua (renamed from bin/alv-love/main.lua) | 0 | ||||
| -rwxr-xr-x | bin/alv-love | 5 |
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" "$@" |
