From 50697f5edf27e5b7c6b320b321cffdadbe2cf5dc Mon Sep 17 00:00:00 2001 From: s-ol Date: Mon, 3 May 2021 18:03:30 +0200 Subject: move love main.lua to alv.copilot.love.main --- alv/copilot/love.moon | 29 ----------------- alv/copilot/love/init.moon | 78 ++++++++++++++++++++++++++++++++++++++++++++++ alv/copilot/love/main.lua | 3 ++ bin/alv-love | 5 +++ bin/alv-love/main.lua | 3 -- 5 files changed, 86 insertions(+), 32 deletions(-) delete mode 100644 alv/copilot/love.moon create mode 100644 alv/copilot/love/init.moon create mode 100644 alv/copilot/love/main.lua create mode 100755 bin/alv-love delete mode 100644 bin/alv-love/main.lua 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/alv/copilot/love/main.lua b/alv/copilot/love/main.lua new file mode 100644 index 0000000..7b95a26 --- /dev/null +++ b/alv/copilot/love/main.lua @@ -0,0 +1,3 @@ +require('moonscript') +local Copilot = require('alv.copilot.love').LoveCopilot +Copilot(arg):run() 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" "$@" diff --git a/bin/alv-love/main.lua b/bin/alv-love/main.lua deleted file mode 100644 index 7b95a26..0000000 --- a/bin/alv-love/main.lua +++ /dev/null @@ -1,3 +0,0 @@ -require('moonscript') -local Copilot = require('alv.copilot.love').LoveCopilot -Copilot(arg):run() -- cgit v1.2.3