diff options
| author | s-ol <s+removethis@s-ol.nu> | 2025-09-14 11:18:20 +0000 |
|---|---|---|
| committer | s-ol <s+removethis@s-ol.nu> | 2025-09-14 15:36:31 +0000 |
| commit | a34bb68d111881619aacbc4463c4087a7edc49fd (patch) | |
| tree | 7155cbd4f6846e3f2a56378d977805358d8c7d3b | |
| parent | lib/love: set and get window size (diff) | |
| download | alive-a34bb68d111881619aacbc4463c4087a7edc49fd.tar.gz alive-a34bb68d111881619aacbc4463c4087a7edc49fd.zip | |
lib/love: fix event polling
| -rw-r--r-- | alv-lib/love.moon | 48 |
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' |
