May be bugs in supporting libraries, but the multitasking library is fully updated. The guimanager may have a bug or 2, but I haven't found any ground breaking bugs that haven't been fixed
131 lines
5.0 KiB
Plaintext
131 lines
5.0 KiB
Plaintext
function gui:drawR()
|
|
if love.mouse.isDown("l")==false and love.mouse.isDown("m")==false and love.mouse.isDown("r")==false then
|
|
_GuiPro.DragItem={}
|
|
_GuiPro.hasDrag=false
|
|
end
|
|
if self.Visible==true and self.VIS==true then
|
|
local b=true
|
|
for i,v in pairs(_GuiPro.Clips) do
|
|
if self:isDescendant(v)==true then
|
|
b=false
|
|
end
|
|
end
|
|
if b==true then
|
|
love.graphics.setStencilTest()
|
|
love.graphics.setScissor()
|
|
end
|
|
self.x=(self.Parent.width*self.scale.pos.x)+self.offset.pos.x+self.Parent.x
|
|
self.y=(self.Parent.height*self.scale.pos.y)+self.offset.pos.y+self.Parent.y
|
|
self.width=(self.Parent.width*self.scale.size.x)+self.offset.size.x
|
|
self.height=(self.Parent.height*self.scale.size.y)+self.offset.size.y
|
|
if self.DrawRulesB then
|
|
for dr=1,#self.DrawRulesB do
|
|
self.DrawRulesB[dr](self)
|
|
end
|
|
end
|
|
if (love.mouse.getX() > self.x and love.mouse.getX() < self.x+self.width and love.mouse.getY() > self.y and love.mouse.getY() < self.y+self.height and self:Clickable() and self:eventable()) or self:touchable("r") and self.Active==true then
|
|
self.hovering=true
|
|
if love.mouse.isDown("l") or self:touchable("r") and _GuiPro.hasDrag==false then
|
|
if string.find(self.Type, "Button") then
|
|
love.graphics.setColor(self.Color[1]-10, self.Color[2]-10, self.Color[3]-10,self.Visibility)
|
|
else
|
|
love.graphics.setColor(self.Color[1],self.Color[2],self.Color[3],self.Visibility)
|
|
end
|
|
self.lclicked=true
|
|
elseif love.mouse.isDown("r") or self:touchable("r") and _GuiPro.hasDrag==false then
|
|
if string.find(self.Type, "Button") then
|
|
love.graphics.setColor(self.Color[1]-10, self.Color[2]-10, self.Color[3]-10,self.Visibility)
|
|
else
|
|
love.graphics.setColor(self.Color[1],self.Color[2],self.Color[3],self.Visibility)
|
|
end
|
|
self.rclicked=true
|
|
elseif love.mouse.isDown("m") or self:touchable("r") and _GuiPro.hasDrag==false then
|
|
if string.find(self.Type, "Button") then
|
|
love.graphics.setColor(self.Color[1]-10, self.Color[2]-10, self.Color[3]-10,self.Visibility)
|
|
else
|
|
love.graphics.setColor(self.Color[1],self.Color[2],self.Color[3],self.Visibility)
|
|
end
|
|
self.mclicked=true
|
|
else
|
|
if string.find(self.Type, "Button") or self:touchable("r") and _GuiPro.hasDrag==false then
|
|
love.graphics.setColor(self.Color[1]-5, self.Color[2]-5, self.Color[3]-5,self.Visibility)
|
|
else
|
|
love.graphics.setColor(self.Color[1],self.Color[2],self.Color[3],self.Visibility)
|
|
end
|
|
self.rclicked=false
|
|
self.lclicked=false
|
|
self.mclicked=false
|
|
end
|
|
else
|
|
love.graphics.setColor(self.Color[1],self.Color[2],self.Color[3],self.Visibility)
|
|
self.hovering=false
|
|
self.rclicked=false
|
|
self.lclicked=false
|
|
self.mclicked=false
|
|
end
|
|
if self.ClipDescendants==true then
|
|
_GuiPro.Clips[tostring(self)]=self
|
|
love.graphics.setScissor(self.x, self.y, self.width, self.height)
|
|
end
|
|
if self:hasRoundness() then
|
|
love.graphics.stencil(self.stfunc, "replace", 1)
|
|
love.graphics.setStencilTest("greater", 0)
|
|
end
|
|
|
|
love.graphics.rectangle("fill", self.x, self.y, self.width, self.height,(self.rx or 1)*self.DPI,(self.ry or 1)*self.DPI,(self.segments or 1)*self.DPI)
|
|
if string.find(self.Type, "Image") then
|
|
self:ImageRule()
|
|
end
|
|
if self.Type=="Video" then
|
|
self:VideoRule()
|
|
end
|
|
if self:hasRoundness() then
|
|
love.graphics.setStencilTest()
|
|
end
|
|
love.graphics.setColor(self.BorderColor[1], self.BorderColor[2], self.BorderColor[3],self.Visibility)
|
|
for b=0,self.BorderSize-1 do
|
|
love.graphics.rectangle("line", self.x-(b/2), self.y-(b/2), self.width+b, self.height+b,(self.rx or 1)*self.DPI,(self.ry or 1)*self.DPI,(self.segments or 1)*self.DPI)
|
|
end
|
|
if string.find(self.Type, "Text") then
|
|
if self.text~=nil then
|
|
if self.AutoScaleText then
|
|
self.FontSize=math.floor(self.height/1.45833)
|
|
end
|
|
love.graphics.setColor(self.TextColor[1],self.TextColor[2],self.TextColor[3],self.TextVisibility)
|
|
if self.Font==_defaultfont then
|
|
love.graphics.setFont(self.Font)
|
|
love.graphics.printf(
|
|
self.text,
|
|
(self.x+2+(self.marginL or 0) or self.XTween)*self.DPI,
|
|
(self.y+math.floor((self.FontHeight-self.FontSize)/2)+self.Tween)*self.DPI,
|
|
(self.width+(0 or (self.marginR or 0)))*self.DPI,
|
|
self.TextFormat,
|
|
self.TextRotation)
|
|
else
|
|
if type(self.Font)=="string" then
|
|
self.Font=love.graphics.newFont(self.Font,self.FontSize)
|
|
self.FontHeight=self.Font:getHeight()
|
|
else
|
|
love.graphics.setFont(self.Font)
|
|
end
|
|
if type(self.FontSize)=="string" then
|
|
self.FontSize=tonumber(self.FontSize)
|
|
love.graphics.setNewFont(self.FontSize)
|
|
end
|
|
love.graphics.printf(
|
|
self.text,
|
|
(self.x+2+(self.marginL or 0) or self.XTween)*self.DPI,
|
|
(self.y+math.floor((self.FontHeight-self.FontSize)/2)+self.Tween)*self.DPI,
|
|
(self.width+(0 or (self.marginR or 0)))*self.DPI,
|
|
self.TextFormat,
|
|
self.TextRotation)
|
|
end
|
|
end
|
|
end
|
|
if self.DrawRulesE then
|
|
for dr=1,#self.DrawRulesE do
|
|
self.DrawRulesE[dr](self)
|
|
end
|
|
end
|
|
end
|
|
end |