mirror of
https://github.com/rayaman/multi.git
synced 2026-09-05 07:27:35 -04:00
Added intergration loveManager
Adds multi.intergrations.loveManager,lua Created an example file for you to look at
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
function gui:AdvTextBox(txt,x,y,w,h,sx,sy,sw,sh)
|
||||
name="AdvTextBox"
|
||||
x,y,w,h,sx,sy,sw,sh=filter(name, x, y, w, h, sx ,sy ,sw ,sh)
|
||||
local c=self:newBase("AdvTextBoxFrame",name, x, y, w, 30, sx ,sy ,sw ,sh)
|
||||
c.Draggable=true
|
||||
c.dragbut="r"
|
||||
c.BorderSize=0
|
||||
c:ApplyGradient{Color.Blue,Color.sexy_purple}
|
||||
c:newTextLabel(txt,"Holder",0,0,0,h-30,0,1,1,0).Color=Color.sexy_purple
|
||||
c.funcO={}
|
||||
c.funcX={}
|
||||
c:OnDragStart(function(self)
|
||||
self:TopStack()
|
||||
end)
|
||||
--local temp = c:newTextButton("X","Close",-25,5,20,20,1)
|
||||
--temp.Tween=-5
|
||||
--temp.XTween=-2
|
||||
--temp:OnReleased(function(b,self) for i=1,#self.Parent.funcX do self.Parent.funcX[i](self.Parent) end end)
|
||||
--temp.Color=Color.Red
|
||||
c.tLink=c:newTextBox("puttext","TextBox",5,h-95,-40,30,0,1,1,1)
|
||||
c.tLink.Color=Color.light_gray
|
||||
c.tLink.ClearOnFocus=true
|
||||
c.tLink:OnFocus(function(self) self.ClearOnFocus=false end)
|
||||
local temp=c:newTextButton("OK","Ok",-35,h-65,30,30,1,1)
|
||||
temp:OnReleased(function(b,self) for i=1,#self.Parent.funcO do self.Parent.funcO[i](self.Parent,self.Parent.tLink.text) end end)
|
||||
temp.Color=Color.Green
|
||||
temp.XTween=-2
|
||||
local temp=c:newTextButton("X","Cancel",-35,h-95,30,30,1,1)
|
||||
temp:OnReleased(function(b,self) for i=1,#self.Parent.funcX do self.Parent.funcX[i](self.Parent,self.Parent.tLink.text) end end)
|
||||
temp.Color=Color.Red
|
||||
temp.XTween=-2
|
||||
function c:Close()
|
||||
self.Visible=false
|
||||
end
|
||||
function c:Open()
|
||||
self.Visible=true
|
||||
end
|
||||
function c:OnOk(func)
|
||||
table.insert(self.funcO,func)
|
||||
end
|
||||
function c:OnX(func)
|
||||
table.insert(self.funcX,func)
|
||||
end
|
||||
return c
|
||||
end
|
||||
@@ -0,0 +1,36 @@
|
||||
function _GuiPro.gradient(colors)
|
||||
local direction = colors.direction or "horizontal"
|
||||
colors.direction=nil
|
||||
trans = colors.trans or 255
|
||||
trans=math.floor(trans)
|
||||
if direction == "horizontal" then
|
||||
direction = true
|
||||
elseif direction == "vertical" then
|
||||
direction = false
|
||||
else
|
||||
error("Invalid direction '" .. tostring(direction) "' for gradient. Horizontal or vertical expected.")
|
||||
end
|
||||
local result = love.image.newImageData(direction and 1 or #colors, direction and #colors or 1)
|
||||
for __i, color in ipairs(colors) do
|
||||
local x, y
|
||||
if direction then
|
||||
x, y = 0, __i - 1
|
||||
else
|
||||
x, y = __i - 1, 0
|
||||
end
|
||||
result:setPixel(x, y, color[1], color[2], color[3], trans)
|
||||
end
|
||||
result = love.graphics.newImage(result)
|
||||
result:setFilter('linear', 'linear')
|
||||
return result
|
||||
end
|
||||
function _GuiPro.drawinrect(img, x, y, w, h, r, ox, oy, kx, ky)
|
||||
love.graphics.draw(img, x, y, r, w / img:getWidth(), h / img:getHeight(), ox, oy, kx, ky)
|
||||
end
|
||||
function gui:ApplyGradient(rules)
|
||||
self.Image=nil
|
||||
self.Type=self.Type.."w/GradImage"
|
||||
self.rotation=0
|
||||
self.ImageVisibility=rules.visibility or 1
|
||||
self:SetImage(_GuiPro.gradient(rules))
|
||||
end
|
||||
@@ -0,0 +1,10 @@
|
||||
function gui:BottomStack()
|
||||
childs=self.Parent:getChildren()
|
||||
for i=1,#childs do
|
||||
if childs[i]==self then
|
||||
table.remove(self.Parent.Children,i)
|
||||
table.insert(self.Parent.Children,1,self)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,4 @@
|
||||
function gui:Center()
|
||||
local x,y=self:getFullSize()
|
||||
self:SetDualDim(-math.floor(x/2),-math.floor(y/2),nil,nil,.5,.5)
|
||||
end
|
||||
@@ -0,0 +1,9 @@
|
||||
function gui:Destroy()
|
||||
check=self.Parent:getChildren()
|
||||
local cc=0
|
||||
for cc=1,#check do
|
||||
if check[cc]==self then
|
||||
table.remove(self.Parent.Children,cc)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,25 @@
|
||||
function gui:GetAllChildren()
|
||||
local Stuff = {}
|
||||
function Seek(Items)
|
||||
for i=1,#Items do
|
||||
if Items[i].Visible==true then
|
||||
table.insert(Stuff,Items[i])
|
||||
local NItems = Items[i]:getChildren()
|
||||
if NItems ~= nil then
|
||||
Seek(NItems)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
local Objs = self:getChildren()
|
||||
for i=1,#Objs do
|
||||
if Objs[i].Visible==true then
|
||||
table.insert(Stuff,Objs[i])
|
||||
local Items = Objs[i]:getChildren()
|
||||
if Items ~= nil then
|
||||
Seek(Items)
|
||||
end
|
||||
end
|
||||
end
|
||||
return Stuff
|
||||
end
|
||||
@@ -0,0 +1,3 @@
|
||||
function gui:GetChild(name)
|
||||
return self.Children[name] or self
|
||||
end
|
||||
@@ -0,0 +1,3 @@
|
||||
function InGrid(i,x,y,s)
|
||||
return math.floor((i-1)/x)*s,(i-1)*s-(math.floor((i-1)/y)*(s*x))
|
||||
end
|
||||
@@ -0,0 +1,5 @@
|
||||
function InGridX(i,w,h,xs,ys)
|
||||
local xc,yc=math.floor(w/xs),math.floor(h/ys)
|
||||
local xi,yi=(i-1)%xc,math.floor((i-1)/xc)
|
||||
return xi*xs,yi*ys
|
||||
end
|
||||
@@ -0,0 +1,5 @@
|
||||
function InGridY(i,w,h,xs,ys)
|
||||
local xc,yc=math.floor(w/xs),math.floor(h/ys)
|
||||
local xi,yi=math.floor((i-1)/yc),(i-1)%yc
|
||||
return xi*xs,yi*ys
|
||||
end
|
||||
@@ -0,0 +1,3 @@
|
||||
function gui:IsHovering()
|
||||
return (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)
|
||||
end
|
||||
@@ -0,0 +1,4 @@
|
||||
function gui:Move(x,y)
|
||||
self.offset.pos.x=self.offset.pos.x+x
|
||||
self.offset.pos.y=self.offset.pos.y+y
|
||||
end
|
||||
@@ -0,0 +1,46 @@
|
||||
function gui:SetDualDim(x, y, w, h, sx ,sy ,sw ,sh)
|
||||
if _GuiPro.DPI_ENABLED then
|
||||
if x then
|
||||
x=self.DPI*x
|
||||
end
|
||||
if y then
|
||||
y=self.DPI*y
|
||||
end
|
||||
if w then
|
||||
w=self.DPI*w
|
||||
end
|
||||
if h then
|
||||
h=self.DPI*h
|
||||
end
|
||||
end
|
||||
if sx then
|
||||
self.scale.pos.x=sx
|
||||
end
|
||||
if sy then
|
||||
self.scale.pos.y=sy
|
||||
end
|
||||
if x then
|
||||
self.offset.pos.x=x
|
||||
end
|
||||
if y then
|
||||
self.offset.pos.y=y
|
||||
end
|
||||
if sw then
|
||||
self.scale.size.x=sw
|
||||
end
|
||||
if sh then
|
||||
self.scale.size.y=sh
|
||||
end
|
||||
if w then
|
||||
self.offset.size.x=w
|
||||
end
|
||||
if h then
|
||||
self.offset.size.y=h
|
||||
end
|
||||
if self.Image then
|
||||
self:SetImage(self.Image)
|
||||
end
|
||||
end
|
||||
function gui:setDualDim(...)
|
||||
self:SetDualDim(...)
|
||||
end
|
||||
@@ -0,0 +1,5 @@
|
||||
_GuiPro.CursorN=love.mouse.getSystemCursor("arrow")
|
||||
_GuiPro.CursorH=love.mouse.getSystemCursor("hand")
|
||||
function gui:SetHand(img,x,y)
|
||||
_GuiPro.CursorN=love.mouse.newCursor(img,x,y)
|
||||
end
|
||||
@@ -0,0 +1,3 @@
|
||||
function gui:SetHover(img,x,y)
|
||||
_GuiPro.CursorH=love.mouse.newCursor(img,x,y)
|
||||
end
|
||||
@@ -0,0 +1,4 @@
|
||||
function gui:SetName(name)
|
||||
self.Parent.Children[name]=self
|
||||
self.Name=name
|
||||
end
|
||||
@@ -0,0 +1,10 @@
|
||||
function gui:TopStack()
|
||||
childs=self.Parent:getChildren()
|
||||
for i=1,#childs do
|
||||
if childs[i]==self then
|
||||
table.remove(self.Parent.Children,i)
|
||||
table.insert(self.Parent.Children,self)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,3 @@
|
||||
function gui:addDominance()
|
||||
_GuiPro.TopHovered=self
|
||||
end
|
||||
@@ -0,0 +1,6 @@
|
||||
function gui:addHotKey(key)
|
||||
local temp=self:newFrame(0,0,0,0)
|
||||
temp.Visible=false
|
||||
temp:setHotKey(key)
|
||||
return temp
|
||||
end
|
||||
@@ -0,0 +1,7 @@
|
||||
function alphanumsort(o)
|
||||
local function padnum(d) local dec, n = string.match(d, "(%.?)0*(.+)")
|
||||
return #dec > 0 and ("%.12f"):format(d) or ("%s%03d%s"):format(dec, #n, n)
|
||||
end
|
||||
table.sort(o, function(a,b) return tostring(a):gsub("%.?%d+",padnum)..("%3d"):format(#b)< tostring(b):gsub("%.?%d+",padnum)..("%3d"):format(#a) end)
|
||||
return o
|
||||
end
|
||||
@@ -0,0 +1,3 @@
|
||||
function gui:anchorRight(n)
|
||||
self:SetDualDim(-(self.width+n),nil,nil,nil,1)
|
||||
end
|
||||
@@ -0,0 +1,3 @@
|
||||
function gui:centerX()
|
||||
self:SetDualDim(-(self.width/2),nil,nil,nil,.5)
|
||||
end
|
||||
@@ -0,0 +1,3 @@
|
||||
function gui:centerY()
|
||||
self:SetDualDim(nil,-(self.height/2),nil,nil,nil,.5)
|
||||
end
|
||||
@@ -0,0 +1,3 @@
|
||||
function gui:disrespectHierarchy()
|
||||
_GuiPro.Hierarchy=false
|
||||
end
|
||||
@@ -0,0 +1,3 @@
|
||||
function gui:getChildren()
|
||||
return self.Children
|
||||
end
|
||||
@@ -0,0 +1,3 @@
|
||||
function gui:getColor(cindex)
|
||||
return Color[cindex]
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
function gui:getFullSize()
|
||||
local maxx,maxy=-math.huge,-math.huge
|
||||
local temp = self:GetAllChildren()
|
||||
for i=1,#temp do
|
||||
if temp[i].width>maxx then
|
||||
maxx=temp[i].width+temp[i].offset.pos.x
|
||||
elseif temp[i].height>maxy then
|
||||
maxy=temp[i].height+temp[i].offset.pos.y
|
||||
end
|
||||
end
|
||||
return maxx,maxy
|
||||
end
|
||||
@@ -0,0 +1,5 @@
|
||||
function gui:getHighest()
|
||||
if self.Children[#self.Children]~=nil then
|
||||
return self.Children[#self.Children]
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,5 @@
|
||||
function gui:getLowest()
|
||||
if self.Children[1]~=nil then
|
||||
return self.Children[1]
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,9 @@
|
||||
function gui:isDescendant(obj)
|
||||
local things=obj:GetAllChildren()
|
||||
for i=1,#things do
|
||||
if things[i]==self then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
@@ -0,0 +1,3 @@
|
||||
function gui:isHighest()
|
||||
return (self==self.Parent:getHighest())
|
||||
end
|
||||
@@ -0,0 +1,3 @@
|
||||
function gui:isLowest()
|
||||
return (self==self.Parent:getLowest())
|
||||
end
|
||||
@@ -0,0 +1,6 @@
|
||||
function gui.massMutate(t,...)
|
||||
local mut={...}
|
||||
for i=1,#mut do
|
||||
mut[i]:Mutate(t)
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,41 @@
|
||||
if love.filesystem.exists("CheckBoxes.png") then
|
||||
_GuiPro.UC=gui:getTile("CheckBoxes.png",0,0,16,16)
|
||||
_GuiPro.C=gui:getTile("CheckBoxes.png",16,0,16,16)
|
||||
_GuiPro.UCH=gui:getTile("CheckBoxes.png",0,16,16,16)
|
||||
_GuiPro.CH=gui:getTile("CheckBoxes.png",16,16,16,16)
|
||||
end
|
||||
function gui:newCheckBox(name,x,y)
|
||||
if not(_GuiPro.UC) then error("CheckBoxes.png not found! Cannot currently use checkbox without the data") end
|
||||
if type(name)~="String" then
|
||||
x,y,name=name,x,"CheckBox"
|
||||
end
|
||||
local c=self:newImageLabel(_GuiPro.UC,name, x, y, 16,16)
|
||||
c.Visibility=0
|
||||
c.check=false
|
||||
c:OnEnter(function(self)
|
||||
if self.check then
|
||||
self:SetImage(_GuiPro.CH)
|
||||
else
|
||||
self:SetImage(_GuiPro.UCH)
|
||||
end
|
||||
end)
|
||||
function c:isChecked()
|
||||
return self.check
|
||||
end
|
||||
c:OnExit(function(self)
|
||||
if self.check then
|
||||
self:SetImage(_GuiPro.C)
|
||||
else
|
||||
self:SetImage(_GuiPro.UC)
|
||||
end
|
||||
end)
|
||||
c:OnReleased(function(b,self)
|
||||
self.check=not(self.check)
|
||||
if self.check then
|
||||
self:SetImage(_GuiPro.CH)
|
||||
else
|
||||
self:SetImage(_GuiPro.UCH)
|
||||
end
|
||||
end)
|
||||
return c
|
||||
end
|
||||
@@ -0,0 +1,36 @@
|
||||
function gui:newMessageBox(txt,x,y,w,h,sx,sy,sw,sh)
|
||||
name="MessageBox"
|
||||
x,y,w,h,sx,sy,sw,sh=filter(name, x, y, w, h, sx ,sy ,sw ,sh)
|
||||
local c=self:newBase("MessageBoxFrame",name, x, y, w, 30, sx ,sy ,sw ,sh)
|
||||
c.Draggable=true
|
||||
c.dragbut="r"
|
||||
c:ApplyGradient{Color.Blue,Color.sexy_purple}
|
||||
c.BorderSize=0
|
||||
c:newTextLabel(txt,"Holder",0,0,0,h-30,0,1,1,0).Color=Color.sexy_purple
|
||||
c.funcO={}
|
||||
c.funcX={}
|
||||
c:OnDragStart(function(self)
|
||||
self:TopStack()
|
||||
end)
|
||||
local temp = c:newTextButton("X","Close",-25,5,20,20,1)
|
||||
temp.Tween=-5
|
||||
temp.XTween=-2
|
||||
temp:OnReleased(function(b,self) for i=1,#self.Parent.funcX do self.Parent.funcX[i](self.Parent) end end)
|
||||
temp.Color=Color.Red
|
||||
local temp=c:newTextButton("OK","Ok",0,h-65,0,30,.25,1,.5)
|
||||
temp:OnReleased(function(b,self) for i=1,#self.Parent.funcO do self.Parent.funcO[i](self.Parent) end end)
|
||||
temp.Color=Color.Green
|
||||
function c:Close()
|
||||
self.Visible=false
|
||||
end
|
||||
function c:Open()
|
||||
self.Visible=true
|
||||
end
|
||||
function c:OnOk(func)
|
||||
table.insert(self.funcO,func)
|
||||
end
|
||||
function c:OnX(func)
|
||||
table.insert(self.funcX,func)
|
||||
end
|
||||
return c
|
||||
end
|
||||
@@ -0,0 +1,49 @@
|
||||
function gui:newPart(x, y,w ,h , sx ,sy ,sw ,sh)
|
||||
local c = {}
|
||||
setmetatable(c, gui)
|
||||
if self==gui then
|
||||
c.Parent=_GuiPro
|
||||
else
|
||||
c.Parent=self
|
||||
end
|
||||
c.funcs={}
|
||||
c.funcs2={}
|
||||
c.funcs3={}
|
||||
c.funcs4={}
|
||||
c.funcs5={}
|
||||
c.func6={}
|
||||
c.func7={}
|
||||
c.func8={}
|
||||
c.func9={}
|
||||
c.func10={}
|
||||
c.form="rectangle"
|
||||
c.Color = {255, 255, 255}
|
||||
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.VIS=true
|
||||
c.Visible=true
|
||||
c.Visibility=1
|
||||
c.BorderColor={0,0,0}
|
||||
c.BorderSize=0
|
||||
c.Type="Part"
|
||||
c.Name="GuiPart"
|
||||
_GuiPro.count=_GuiPro.count+1
|
||||
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
|
||||
table.insert(c.Parent.Children,c)
|
||||
return c
|
||||
end
|
||||
@@ -0,0 +1,45 @@
|
||||
function gui:newProgressBar(txt,x,y,w,h,sx,sy,sw,sh)
|
||||
name="newProgressBar"
|
||||
x,y,w,h,sx,sy,sw,sh=filter(name, x, y, w, h, sx ,sy ,sw ,sh)
|
||||
local c=self:newBase("newProgressBarFrame",name, x, y, w, 30, sx ,sy ,sw ,sh)
|
||||
c.Draggable=true
|
||||
c.dragbut="r"
|
||||
c.BorderSize=0
|
||||
c:ApplyGradient{Color.Blue,Color.sexy_purple}
|
||||
c:newTextLabel(txt,"Holder",0,0,0,h-30,0,1,1,0).Color=Color.sexy_purple
|
||||
c.funcO={}
|
||||
c.funcX={}
|
||||
c:OnDragStart(function(self)
|
||||
self:TopStack()
|
||||
end)
|
||||
local temp = c:newTextButton("X","Close",-25,5,20,20,1)
|
||||
temp.Tween=-5
|
||||
temp.XTween=-2
|
||||
temp:OnReleased(function(b,self) for i=1,#self.Parent.funcX do self.Parent.funcX[i](self.Parent) end end)
|
||||
temp.Color=Color.Red
|
||||
c.BarBG=c:newTextButton("",5,h-65,-10,30,0,1,1)
|
||||
c.BarBG:ApplyGradient{Color.Red,Color.light_red}
|
||||
c.Bar=c.BarBG:newTextLabel("",0,0,0,0,0,0,0,1)
|
||||
c.Bar:ApplyGradient{Color.Green,Color.light_green}
|
||||
c.BarDisp=c.BarBG:newTextLabel("0%","0%",0,0,0,0,0,0,1,1)
|
||||
c.BarDisp.Visibility=0
|
||||
c.BarDisp.Link=c.Bar
|
||||
c.BarDisp:OnUpdate(function(self)
|
||||
self.text=self.Link.scale.size.x*100 .."%"
|
||||
end)
|
||||
c.Func1={}
|
||||
function c:On100(func)
|
||||
table.insert(self.Func1,func)
|
||||
end
|
||||
c:OnUpdate(function(self)
|
||||
if self.Bar.scale.size.x*100>=100 then
|
||||
for P=1,#self.Func1 do
|
||||
self.Func1[P](self)
|
||||
end
|
||||
end
|
||||
end)
|
||||
function c:SetPercentage(n)
|
||||
self.Bar:SetDualDim(0,0,0,0,0,0,n/100,1)
|
||||
end
|
||||
return c
|
||||
end
|
||||
@@ -0,0 +1,42 @@
|
||||
function gui:newScrollBar(color1,color2)
|
||||
local scrollbar=self:newFrame(-20,0,20,0,1,0,0,1)
|
||||
scrollbar.funcS={}
|
||||
scrollbar.Color=color1 or Color.saddle_brown
|
||||
scrollbar:OnClicked(function(b,self,x,y)
|
||||
love.mouse.setX(self.x+10)
|
||||
if y>=10 and y<=self.height-10 then
|
||||
self.mover:SetDualDim(0,y-10)
|
||||
end
|
||||
if y<10 then
|
||||
love.mouse.setY(10+self.y)
|
||||
end
|
||||
if y>self.height-10 then
|
||||
love.mouse.setY((self.height-10)+self.y)
|
||||
end
|
||||
for i=1,#self.funcS do
|
||||
self.funcS[i](self,self:getPosition())
|
||||
end
|
||||
end)
|
||||
scrollbar:OnEnter(function(self)
|
||||
self:addDominance()
|
||||
end)
|
||||
scrollbar:OnExit(function(self)
|
||||
self:removeDominance()
|
||||
end)
|
||||
scrollbar.mover=scrollbar:newTextButton("","",0,0,20,20)
|
||||
scrollbar.mover.Color=color2 or Color.light_brown
|
||||
function scrollbar:getPosition()
|
||||
return ((self.mover.offset.pos.y)/(self.height-20))*100
|
||||
end
|
||||
function scrollbar:setPosition(n)
|
||||
print((self.height-20),n)
|
||||
self.mover.offset.pos.y=((self.height-20)/(100/n))
|
||||
for i=1,#self.funcS do
|
||||
self.funcS[i](self,self:getPosition())
|
||||
end
|
||||
end
|
||||
function scrollbar:OnScroll(func)
|
||||
table.insert(self.funcS,func)
|
||||
end
|
||||
return scrollbar
|
||||
end
|
||||
@@ -0,0 +1,98 @@
|
||||
function gui:newScrollMenu(title,tabN,onloop,x, y, w, h, sx ,sy ,sw ,sh)
|
||||
local Main = self:newFrame(x, y, w, h, sx ,sy ,sw ,sh)
|
||||
local Title=Main:newTextButton(title,"Title",0,0,0,20,0,0,1)
|
||||
Title.Tween=-4
|
||||
Title.FontSize=12
|
||||
Title:OnReleased(function(b,self)
|
||||
self.Parent.Tick=not(self.Parent.Tick)
|
||||
end)
|
||||
local scroll=Main:newTextButton("","Scroll",-20,20,20,-20,1,0,0,1)
|
||||
scroll:OnClicked(function(b,self,x,y)
|
||||
self.Parent.Mover:SetDualDim(0,y-10,20,20)
|
||||
if self.Parent.Mover.offset.pos.y<0 then
|
||||
self.Parent.Mover:SetDualDim(0,0,20,20)
|
||||
end
|
||||
if self.Parent.Mover.offset.pos.y>self.Parent.height-40 then
|
||||
self.Parent.Mover:SetDualDim(0,self.Parent.height-40,20,20)
|
||||
end
|
||||
local temp = #self.Parent.TList
|
||||
self.Parent.pos=(math.floor((temp*self.Parent.Mover.offset.pos.y)/self.height))+1
|
||||
end)
|
||||
Main:OnUpdate(function(self)
|
||||
if self.Tick==false then
|
||||
self.Visibility=0
|
||||
end
|
||||
end)
|
||||
scroll:OnUpdate(function(self)
|
||||
self.Visible=self.Parent.Tick
|
||||
end)
|
||||
local Mover=scroll:newTextLabel("",0,0,20,20)
|
||||
Main.Mover=Mover
|
||||
Main.TList=tabN
|
||||
Main.pos=1
|
||||
Main.Tick=true
|
||||
function Main:Update(title,tabN,onloop)
|
||||
ch=self:getChildren()
|
||||
for i=#ch,1,-1 do
|
||||
ch[i]:Destroy()
|
||||
end
|
||||
Title=Main:newTextButton(title,"Title",0,0,0,20,0,0,1)
|
||||
Title.Tween=-4
|
||||
Title.FontSize=12
|
||||
Title:OnReleased(function(b,self)
|
||||
self.Parent.Tick=not(self.Parent.Tick)
|
||||
end)
|
||||
scroll=Main:newTextButton("","Scroll",-20,20,20,-20,1,0,0,1)
|
||||
scroll:OnClicked(function(b,self,x,y)
|
||||
self.Parent.Mover:SetDualDim(0,y-10,20,20)
|
||||
if self.Parent.Mover.offset.pos.y<0 then
|
||||
self.Parent.Mover:SetDualDim(0,0,20,20)
|
||||
end
|
||||
if self.Parent.Mover.offset.pos.y>self.Parent.height-40 then
|
||||
self.Parent.Mover:SetDualDim(0,self.Parent.height-40,20,20)
|
||||
end
|
||||
local temp = #self.Parent.TList
|
||||
self.Parent.pos=(math.floor((temp*self.Parent.Mover.offset.pos.y)/self.height))+1
|
||||
end)
|
||||
local Mover=scroll:newTextLabel("",0,0,20,20)
|
||||
Main.Mover=Mover
|
||||
Main.TList=tabN
|
||||
Main.pos=1
|
||||
Main.Tick=true
|
||||
scroll:OnUpdate(function(self)
|
||||
self.Visible=self.Parent.Tick
|
||||
end)
|
||||
for i=1,math.floor(Main.height/20)-1 do
|
||||
local temp=Main:newTextButton("","Item"..i,0,i*20,-20,20,0,0,1)
|
||||
temp.FontSize=10
|
||||
temp.Tween=-4
|
||||
temp.pos=i
|
||||
temp:OnUpdate(function(self)
|
||||
self.text=self.Parent.TList[(self.Parent.pos+self.pos)-1]
|
||||
self.Visible=self.Parent.Tick
|
||||
end)
|
||||
if onloop then
|
||||
onloop(temp,i)
|
||||
end
|
||||
end
|
||||
end
|
||||
io.write(tostring(Main.height).."\n")
|
||||
for i=1,math.floor(Main.height/20)-1 do
|
||||
local temp=Main:newTextButton("Item"..i,0,i*20,-20,20,0,0,1)
|
||||
temp.FontSize=10
|
||||
temp.Tween=-4
|
||||
temp.pos=i
|
||||
temp:OnUpdate(function(self)
|
||||
if self.Parent.TList[(self.Parent.pos+self.pos)-1]~=nil then
|
||||
self.text=self.Parent.TList[(self.Parent.pos+self.pos)-1]
|
||||
else
|
||||
self.text=""
|
||||
end
|
||||
self.Visible=self.Parent.Tick
|
||||
end)
|
||||
if onloop then
|
||||
onloop(temp,i)
|
||||
end
|
||||
end
|
||||
return Main
|
||||
end
|
||||
@@ -0,0 +1,6 @@
|
||||
function gui:destroyAllChildren()
|
||||
local c=self.Children
|
||||
for i=1,#c do
|
||||
c[i]:Destroy()
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,3 @@
|
||||
function gui:removeDominance()
|
||||
_GuiPro.TopHovered=nil
|
||||
end
|
||||
@@ -0,0 +1,3 @@
|
||||
function gui:respectHierarchy()
|
||||
_GuiPro.Hierarchy=true
|
||||
end
|
||||
@@ -0,0 +1,4 @@
|
||||
function gui.round(num, idp)
|
||||
local mult = 10^(idp or 0)
|
||||
return math.floor(num * mult + 0.5) / mult
|
||||
end
|
||||
@@ -0,0 +1,3 @@
|
||||
function gui.setBG(i)
|
||||
gui.ff:SetImage(i)
|
||||
end
|
||||
@@ -0,0 +1,14 @@
|
||||
function gui:setColor(a,b,c)
|
||||
if type(a)=="string" then
|
||||
self.Color=Color[a]
|
||||
elseif type(a)=="number" then
|
||||
self.Color=Color.new(a,b,c)
|
||||
end
|
||||
end
|
||||
function gui:setTextColor(a,b,c)
|
||||
if type(a)=="string" then
|
||||
self.TextColor=Color[a]
|
||||
elseif type(a)=="number" then
|
||||
self.TextColor=Color.new(a,b,c)
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,3 @@
|
||||
function gui:setDefualtFont(font)
|
||||
_defaultfont = font
|
||||
end
|
||||
@@ -0,0 +1,24 @@
|
||||
function gui:setHotKey(key)
|
||||
local tab=key:split("+")
|
||||
self.hotkeys=tab
|
||||
self.cooldown=false
|
||||
self.Alarm=multi:newAlarm(1)
|
||||
self.Alarm.parent=self
|
||||
self.args={}
|
||||
self.funcHK=multi:newConnection()
|
||||
self.Alarm:OnRing(function(alarm) alarm.parent.cooldown=false end)
|
||||
function self:OnHotKey(func)
|
||||
self.funcHK:connect(func)
|
||||
end
|
||||
self:OnUpdate(function(self)
|
||||
if self.cooldown then return end
|
||||
for i=1,#self.hotkeys do
|
||||
if not(love.keyboard.isDown(self.hotkeys[i])) then
|
||||
return
|
||||
end
|
||||
end
|
||||
self.cooldown=true
|
||||
self.funcHK:Fire(self)
|
||||
self.Alarm:Reset()
|
||||
end)
|
||||
end
|
||||
@@ -0,0 +1,3 @@
|
||||
function gui:setNewFont(FontSize)
|
||||
self.Font=love.graphics.setNewFont(tonumber(FontSize))
|
||||
end
|
||||
@@ -0,0 +1,14 @@
|
||||
function gui:setParent(parent,name)-- Needs fixing!!!
|
||||
local temp=self.Parent:getChildren()
|
||||
for i=1,#temp do
|
||||
if temp[i]==self then
|
||||
table.remove(self.Parent.Children,i)
|
||||
break
|
||||
end
|
||||
end
|
||||
table.insert(parent.Children,self)
|
||||
self.Parent=parent
|
||||
if name then
|
||||
self:SetName(name)
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,14 @@
|
||||
function gui:setVisiblity(val)
|
||||
self.Visible=val
|
||||
self.oV=val
|
||||
doto=self:GetAllChildren()
|
||||
if val==false then
|
||||
for i=1,#doto do
|
||||
doto[i].Visible=val
|
||||
end
|
||||
else
|
||||
for i=1,#doto do
|
||||
doto[i].Visible=doto[i].oV
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,6 @@
|
||||
function gui:setText(txt)
|
||||
self.text=txt
|
||||
end
|
||||
function gui:getText(txt)
|
||||
return self.text
|
||||
end
|
||||
Reference in New Issue
Block a user