aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authors-ol <s+removethis@s-ol.nu>2025-09-14 11:18:20 +0000
committers-ol <s+removethis@s-ol.nu>2025-09-14 15:36:31 +0000
commita34bb68d111881619aacbc4463c4087a7edc49fd (patch)
tree7155cbd4f6846e3f2a56378d977805358d8c7d3b
parentlib/love: set and get window size (diff)
downloadalive-a34bb68d111881619aacbc4463c4087a7edc49fd.tar.gz
alive-a34bb68d111881619aacbc4463c4087a7edc49fd.zip
lib/love: fix event polling
-rw-r--r--alv-lib/love.moon48
1 files changed, 26 insertions, 22 deletions
diff --git a/alv-lib/love.moon b/alv-lib/love.moon
index 39434d4..0500b6c 100644
--- a/alv-lib/love.moon
+++ b/alv-lib/love.moon
@@ -315,7 +315,7 @@ mouse_pos = Constant.meta
@out = COPILOT.mouse_pos
super Input.hot @out
- poll: =>
+ poll: => @out\dirty!
mouse_delta = Constant.meta
meta:
@@ -329,7 +329,7 @@ mouse_delta = Constant.meta
@out = COPILOT.mouse_delta
super Input.hot @out
- poll: =>
+ poll: => @out\dirty!
mouse_presses = Constant.meta
meta:
@@ -354,7 +354,7 @@ If `button` is passed, outputs a vec2! stream."
super :event
@out = COPILOT.mouse_presses
- poll: =>
+ poll: => COPILOT.mouse_presses\dirty!
tick: =>
{ :button, :event } = @unwrap_all!
@@ -384,7 +384,7 @@ If `button` is passed, outputs a vec2! stream."
super :event
@out = COPILOT.mouse_releases
- poll: =>
+ poll: => COPILOT.mouse_releases\dirty!
tick: =>
{ :button, :event } = @unwrap_all!
@@ -413,6 +413,8 @@ mouse_down = Constant.meta
@setup_out '~', T.bool, false
poll: =>
+ return true if COPILOT.mouse_presses\dirty!
+ return true if COPILOT.mouse_releases\dirty!
tick: =>
{ :button, :press, :release } = @unwrap_all!
@@ -440,7 +442,7 @@ wheel_delta = Constant.meta
@out = COPILOT.wheel_delta
super Input.hot @out
- poll: =>
+ poll: => @out\dirty!
key_presses = Constant.meta
meta:
@@ -463,7 +465,7 @@ If `key` is passed, outputs a bang! stream."
super :event
@out = COPILOT.key_presses
- poll: =>
+ poll: => COPILOT.key_presses\dirty!
tick: =>
{ :key, :event } = @unwrap_all!
@@ -491,28 +493,13 @@ If `key` is passed, outputs a bang! stream."
super :event
@out = COPILOT.key_releases
- poll: =>
+ poll: => COPILOT.key_releases\dirty!
tick: =>
{ :key, :event } = @unwrap_all!
if event and event == key
@out\set true
-window_size = Constant.meta
- meta:
- name: 'window-size'
- summary: "outputs window size."
- examples: { '(love/window-size)' }
- description: "vec2! stream of mouse wheel movements."
-
- value: class extends Op
- setup: (inputs) =>
- assert #inputs == 0, Error "argument", "no arguments expected"
- @out = COPILOT.window_size
- super Input.hot @out
-
- poll: =>
-
key_down = Constant.meta
meta:
name: 'key-down?'
@@ -535,6 +522,8 @@ key_down = Constant.meta
@setup_out '~', T.bool, false
poll: =>
+ return true if COPILOT.key_presses\dirty!
+ return true if COPILOT.key_releases\dirty!
tick: =>
{ :key, :press, :release } = @unwrap_all!
@@ -549,6 +538,21 @@ key_down = Constant.meta
@out\set @state
+window_size = Constant.meta
+ meta:
+ name: 'window-size'
+ summary: "outputs window size."
+ examples: { '(love/window-size)' }
+ description: "vec2! stream of mouse wheel movements."
+
+ value: class extends Op
+ setup: (inputs) =>
+ assert #inputs == 0, Error "argument", "no arguments expected"
+ @out = COPILOT.window_size
+ super Input.hot @out
+
+ poll: => @out\dirty!
+
Constant.meta
meta:
name: 'love'