238 lines
6.2 KiB
Plaintext
238 lines
6.2 KiB
Plaintext
function gui.enableAutoWindowScaling(b)
|
|
_GuiPro.DPI_ENABLED=b or true
|
|
_defaultfont=love.graphics.newFont(12*love.window.getPixelScale())
|
|
end
|
|
function filter(name, x, y, w, h, sx ,sy ,sw ,sh)
|
|
if type(name)~="string" then
|
|
sh=sw
|
|
sw=sy
|
|
sy=sx
|
|
sx=h
|
|
h=w
|
|
w=y
|
|
y=x
|
|
x=name
|
|
end
|
|
return x,y,w,h,sx,sy,sw,sh
|
|
end
|
|
function gui:newBase(tp,name, x, y, w, h, sx ,sy ,sw ,sh)
|
|
_GuiPro.count=_GuiPro.count+1
|
|
local c = {}
|
|
setmetatable(c, gui)
|
|
if self==gui then
|
|
c.Parent=_GuiPro
|
|
else
|
|
c.Parent=self
|
|
end
|
|
c.segments=nil
|
|
c.ry=nil
|
|
c.rx=nil
|
|
c.DPI=1
|
|
if _GuiPro.DPI_ENABLED then
|
|
c.DPI=love.window.getPixelScale()
|
|
x, y, w, h=c.DPI*x,c.DPI*y,c.DPI*w,c.DPI*h
|
|
end
|
|
c.centerFontY=true
|
|
c.FormFactor="rectangle"
|
|
c.Type=tp
|
|
c.Active=true
|
|
c.form="rectangle"
|
|
c.Draggable=false
|
|
c.Name=name or "Gui"..tp
|
|
c:SetName(name)
|
|
c.BorderSize=1
|
|
c.BorderColor={0,0,0}
|
|
c.BorderVisibility=1
|
|
c.VIS=true
|
|
c.Visible=true
|
|
c.oV=true
|
|
c.Children={}
|
|
c.hovering=false
|
|
c.rclicked=false
|
|
c.lclicked=false
|
|
c.mclicked=false
|
|
c.clicked=false
|
|
c.Visibility=1
|
|
c.ClipDescendants=false
|
|
c.TextWrap=true
|
|
c.scale={}
|
|
c.scale.size={}
|
|
c.scale.size.x=sw or 0
|
|
c.scale.size.y=sh or 0
|
|
c.offset={}
|
|
c.offset.size={}
|
|
c.offset.size.x=w or 0
|
|
c.offset.size.y=h or 0
|
|
c.scale.pos={}
|
|
c.scale.pos.x=sx or 0
|
|
c.scale.pos.y=sy or 0
|
|
c.offset.pos={}
|
|
c.offset.pos.x=x or 0
|
|
c.offset.pos.y=y or 0
|
|
c.width = 0
|
|
c.height = 0
|
|
c.LRE=false
|
|
c.RRE=false
|
|
c.MRE=false
|
|
c.Color = {255, 255, 255}
|
|
function c:setRoundness(rx,ry,segments)
|
|
self.segments=segments
|
|
self.ry=ry
|
|
self.rx=rx
|
|
end
|
|
function c.stfunc()
|
|
love.graphics.rectangle("fill", c.x, c.y, c.width, c.height,c.rx,c.ry,c.segments)
|
|
end
|
|
function c:hasRoundness()
|
|
return (self.ry or self.rx)
|
|
end
|
|
c.funcs={function(b,self)
|
|
if b=="l" then
|
|
self.LRE=true
|
|
end
|
|
end,
|
|
function(b,self)
|
|
if b=="r" then
|
|
self.RRE=true
|
|
end
|
|
end,
|
|
function(b,self)
|
|
if b=="m" then
|
|
self.MRE=true
|
|
end
|
|
end}
|
|
c.funcs2={function(b,self)
|
|
if b=="l" then
|
|
self.LRE=false
|
|
end
|
|
end,
|
|
function(b,self)
|
|
if b=="r" then
|
|
self.RRE=false
|
|
end
|
|
end,
|
|
function(b,self)
|
|
if b=="m" then
|
|
self.MRE=false
|
|
end
|
|
end}
|
|
c.HE=false
|
|
c.funcs3={function(self)
|
|
self.HE=true
|
|
end}
|
|
c.funcs4={function(self)
|
|
self.HE=false
|
|
end}
|
|
c.funcs5={}
|
|
c.tid={}
|
|
c.touchcount=0
|
|
c.x=(c.Parent.width*c.scale.pos.x)+c.offset.pos.x+c.Parent.x
|
|
c.y=(c.Parent.height*c.scale.pos.y)+c.offset.pos.y+c.Parent.y
|
|
c.width=(c.Parent.width*c.scale.size.x)+c.offset.size.x
|
|
c.height=(c.Parent.height*c.scale.size.y)+c.offset.size.y
|
|
c.func6={}
|
|
c.func7={function() _GuiPro.DragItem={} end}
|
|
c.func8={function(self) _GuiPro.DragItem=self end}
|
|
c.func9={}
|
|
c.func10={}
|
|
function c:ImageRule()
|
|
if self.Image then
|
|
local sx=self.width/self.ImageWidth
|
|
local sy=self.height/self.ImageHeigth
|
|
love.graphics.setColor(self.Color[1],self.Color[2],self.Color[3],self.ImageVisibility*255)
|
|
if self.width~=self.ImageWidth and self.height~=self.ImageHeigth then
|
|
love.graphics.draw(self.Image,self.x,self.y,math.rad(self.rotation),sx,sy)
|
|
else
|
|
love.graphics.draw(self.Image,self.Quad,self.x,self.y,math.rad(self.rotation),sx,sy)
|
|
end
|
|
end
|
|
end
|
|
function c:VideoRule()
|
|
if self.Video then
|
|
local sx=self.width/self.VideoWidth
|
|
local sy=self.height/self.VideoHeigth
|
|
love.graphics.setColor(self.Color[1],self.Color[2],self.Color[3],self.VideoVisibility*255)
|
|
if self.width~=self.VideoWidth and self.height~=self.VideoHeigth then
|
|
love.graphics.draw(self.Video,self.x,self.y,math.rad(self.rotation),sx,sy)
|
|
else
|
|
love.graphics.draw(self.Video,self.Quad,self.x,self.y,math.rad(self.rotation),sx,sy)
|
|
end
|
|
end
|
|
end
|
|
function c:repeatImage(b,b2)
|
|
if b then
|
|
self.Image:setWrap(b,b2 or "repeat")
|
|
function self:ImageRule()
|
|
love.graphics.setColor(self.Color[1],self.Color[2],self.Color[3],self.ImageVisibility*255)
|
|
love.graphics.draw(self.Image,self.Quad,self.x,self.y,math.rad(self.rotation))
|
|
end
|
|
else
|
|
sx=self.width/self.ImageWidth
|
|
sy=self.height/self.ImageHeigth
|
|
love.graphics.setColor(self.Color[1],self.Color[2],self.Color[3],self.ImageVisibility*255)
|
|
love.graphics.draw(self.Image,self.Quad,self.x,self.y,math.rad(self.rotation),sx,sy)
|
|
end
|
|
end
|
|
function c:Mutate(t)
|
|
for i,v in pairs(t) do
|
|
_GuiPro.self=self
|
|
if type(i)=="number" then
|
|
loadstring("_GuiPro.self:"..v)()
|
|
else
|
|
self[i]=v
|
|
end
|
|
end
|
|
return self
|
|
end
|
|
c:WhileHovering(function(self)
|
|
self.omx=self.nmx
|
|
self.omy=self.nmy
|
|
self.nmx=love.mouse.getX()
|
|
self.nmy=love.mouse.getY()
|
|
if self.omx~=self.nmx or self.omy~=self.nmy then
|
|
for i=1,#self.func10 do
|
|
if self and self.nmx and self.nmy and self.omx and self.omy then
|
|
self.func10[i](self,self.nmx,self.nmy,self.omx,self.omy)
|
|
end
|
|
end
|
|
end
|
|
if self.WasBeingDragged==true and love.mouse.isDown(self.dragbut or "m")==false and self.Type~="TextImageButtonFrameDrag" then
|
|
for i=1,#self.func7 do
|
|
self.func7[i](self,(love.mouse.getX())-self.width/2,(love.mouse.getY())-self.height/2)
|
|
end
|
|
end
|
|
if _GuiPro.hasDrag==false and love.mouse.isDown(self.dragbut or "m") then
|
|
for i=1,#self.func8 do
|
|
self.func8[i](self,(love.mouse.getX())-self.width/2,(love.mouse.getY())-self.height/2)
|
|
end
|
|
end
|
|
if self.IsBeingDragged==true then
|
|
_GuiPro.hasDrag=true
|
|
self.WasBeingDragged=true
|
|
elseif self.WasBeingDragged==true and self.IsBeingDragged==false then
|
|
self.WasBeingDragged=false
|
|
_GuiPro.hasDrag=false
|
|
end
|
|
if self.Draggable==true and love.mouse.isDown(self.dragbut or "m") and _GuiPro.hasDrag==false then
|
|
for i=1,#self.func6 do
|
|
self.func6[i](self,(love.mouse.getX())-self.width/2,(love.mouse.getY())-self.height/2)
|
|
end
|
|
_GuiPro.hasDrag=true
|
|
if self.FormFactor:lower()=="circle" or self.FormFactor:lower()=="c" or self.FormFactor:lower()=="cir" then
|
|
self.IsBeingDragged=true
|
|
x=(love.mouse.getX()-self.x)
|
|
y=(love.mouse.getY()-self.y)
|
|
self:Move(x,y)
|
|
elseif self.FormFactor:lower()=="rectangle" or self.FormFactor:lower()=="r" or self.FormFactor:lower()=="rect" then
|
|
self.IsBeingDragged=true
|
|
x=(love.mouse.getX()-self.x)-self.width/2
|
|
y=(love.mouse.getY()-self.y)-self.height/2
|
|
self:Move(x,y)
|
|
end
|
|
else
|
|
self.IsBeingDragged=false
|
|
end
|
|
end)
|
|
table.insert(c.Parent.Children,c)
|
|
return c
|
|
end |