From 7e7c5301c5ffd0002cc3b1b6e76a5e60ac785fd4 Mon Sep 17 00:00:00 2001 From: "Squishy (C6H12O6+NaCl+H2O)" <106439598+SweetSea-ButImNotSweet@users.noreply.github.com> Date: Sun, 14 Apr 2024 12:14:34 +0700 Subject: [PATCH] Update in vctrl system --- game/VirtualControlTexture.png | Bin 14338 -> 0 bytes game/{VirtualControl.lua => vctrl.lua} | 58 +++++++++++++++++-------- game/vctrlTexture.png | Bin 0 -> 17506 bytes main.lua | 46 +++++++++++++++++--- 4 files changed, 80 insertions(+), 24 deletions(-) delete mode 100644 game/VirtualControlTexture.png rename game/{VirtualControl.lua => vctrl.lua} (73%) create mode 100644 game/vctrlTexture.png diff --git a/game/VirtualControlTexture.png b/game/VirtualControlTexture.png deleted file mode 100644 index bb293bc5320e68c244372ab946d33e17da5118f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14338 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 UlA(?jHIk+HL{+Xt=0)KD2N$H&8vp0 then t[name]=gc_newQuad((i-1)%4*w,math.floor((i-1)/4)*w,w,w,4*w,2*w) end end -- 4x2 is the size of entire texture + 'menu_deicde','','menu_back' + } do if #name>0 then t[name]=gc_newQuad((i-1)%4*w,math.floor((i-1)/4)*w,w,w,4*w,3*w) end end -- 4x2 is the size of entire texture return t end)(),{ __index=function() return empty_quad end }) -local virtual_texture=love.graphics.newImage('game/VirtualControlTexture.png') +local virtual_texture=love.graphics.newImage('game/vctrlTexture.png') +local control_type={} -local button={} -button.__index=button -function button:new(data) +control_type.button={} +control_type.button.__index=control_type.button +function control_type.button:new(data) local data=data or {} return setmetatable({ show=data.show or true, x=data.x or 320, - y=data.y or 180, + y=data.y or 240, r=data.r or 80, -- size shape=data.shape or 'circle', key=data.key or 'X', iconSize=data.iconSize or 80, alpha=data.alpha or 0.75, - quad=virtual_quad[data.key] + quad=virtual_quad[data.icon] },self) end -function button:press() +function control_type.button:press() self.pressed=true self.lastPressTime=love.timer.getTime() - love.keypressed(self.key) + love.keypressed(self.key, love.keyboard.getScancodeFromKey(self.key)) end -function button:release() +function control_type.button:release() self.pressed=false - love.keyreleased(self.key) + love.keyreleased(self.key,love.keyboard.getScancodeFromKey(self.key)) end -function button:drag(dx,dy) +function control_type.button:drag(dx,dy) self.x,self.y=self.x+dx,self.y+dy end -function button:draw(forceLight) +function control_type.button:draw(forceLight) love.graphics.setLineWidth(4) if self.shape=='circle' then love.graphics.setColor(1,1,1,self.pressed and .5 or .05) @@ -86,7 +89,7 @@ function button:draw(forceLight) ) end end -function button:getDistance(x,y) +function control_type.button:getDistance(x,y) if self.shape=='circle' then return math_distance(x,y,self.x,self.y)/self.r elseif self.shape=='square' then @@ -95,11 +98,27 @@ function button:getDistance(x,y) end local touches={} -VCTRL={ - button:new{x=50,y=50,key='left'}, -} +VCTRL={} VCTRL.focus=nil -- Focusing buttons +---@param ... table +---@class data +---@field type string +---@field x number +---@field y number +---@field shape string +---@field key string +---@field iconSize number +---@field alpha number +---Adding (multiple) virtual button(s) +function VCTRL.new(...) + for _,d in pairs(...) do + local t=d.type + d.type=nil + table.insert(VCTRL,control_type[t]:new(d)) + end +end + function VCTRL.press(x,y,id) local obj,closestDist=false,1e99 for i=1,#VCTRL do @@ -117,17 +136,20 @@ function VCTRL.press(x,y,id) VCTRL.focus=obj end end + function VCTRL.release(id) if touches[id] then touches[id]:release() end touches[id]=nil end + function VCTRL.drag(dx,dy,id) if touches[id] then touches[id]:drag(dx,dy) end end + function VCTRL.draw(forceLight) for i=1,#VCTRL do if VCTRL[i].show then diff --git a/game/vctrlTexture.png b/game/vctrlTexture.png new file mode 100644 index 0000000000000000000000000000000000000000..85701c02b597ed5b5e64cf77e11d7418cd99b2bc GIT binary patch literal 17506 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%0A9=ts-_@*paY)9@ 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