From c1ba40ac70a634d90ce7345cc5f8509116bd51ff Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Tue, 17 May 2022 23:16:08 -0700 Subject: [PATCH] delegate update events to drawings --- drawing.lua | 25 +++++++++++++++++++++++++ main.lua | 22 +--------------------- 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/drawing.lua b/drawing.lua index 5ea47f9..0b479fc 100644 --- a/drawing.lua +++ b/drawing.lua @@ -69,6 +69,31 @@ function Drawing.mouse_pressed(drawing, x,y, button) Lines.current = drawing end +-- a couple of operations on drawings need to constantly check the state of the mouse +function Drawing.update() + if Lines.current == nil then return end + local drawing = Lines.current + assert(drawing.mode == 'drawing') + local x, y = love.mouse.getX(), love.mouse.getY() + if love.mouse.isDown('1') then + if Drawing.in_drawing(drawing, x,y) then + if drawing.pending.mode == 'freehand' then + table.insert(drawing.pending.points, {x=Drawing.coord(love.mouse.getX()-16), y=Drawing.coord(love.mouse.getY()-drawing.y)}) + elseif drawing.pending.mode == 'move' then + local mx,my = Drawing.coord(x-16), Drawing.coord(y-drawing.y) + drawing.pending.target_point.x = mx + drawing.pending.target_point.y = my + end + end + elseif Current_drawing_mode == 'move' then + if Drawing.in_drawing(drawing, x, y) then + local mx,my = Drawing.coord(x-16), Drawing.coord(y-drawing.y) + drawing.pending.target_point.x = mx + drawing.pending.target_point.y = my + end + end +end + function Drawing.mouse_released(x,y, button) if Current_drawing_mode == 'move' then Current_drawing_mode = Previous_drawing_mode diff --git a/main.lua b/main.lua index 4ee4b5c..95bdc50 100644 --- a/main.lua +++ b/main.lua @@ -126,27 +126,7 @@ function love.draw() end function love.update(dt) - if Lines.current == nil then return end - local drawing = Lines.current - assert(drawing.mode == 'drawing') - local x, y = love.mouse.getX(), love.mouse.getY() - if love.mouse.isDown('1') then - if Drawing.in_drawing(drawing, x,y) then - if drawing.pending.mode == 'freehand' then - table.insert(drawing.pending.points, {x=Drawing.coord(love.mouse.getX()-16), y=Drawing.coord(love.mouse.getY()-drawing.y)}) - elseif drawing.pending.mode == 'move' then - local mx,my = Drawing.coord(x-16), Drawing.coord(y-drawing.y) - drawing.pending.target_point.x = mx - drawing.pending.target_point.y = my - end - end - elseif Current_drawing_mode == 'move' then - if Drawing.in_drawing(drawing, x, y) then - local mx,my = Drawing.coord(x-16), Drawing.coord(y-drawing.y) - drawing.pending.target_point.x = mx - drawing.pending.target_point.y = my - end - end + Drawing.update(dt) end function love.mousepressed(x,y, button)