Update Component to Modern V2
This commit is contained in:
		
							parent
							
								
									207dcc009d
								
							
						
					
					
						commit
						bf2709874a
					
				
					 1 changed files with 20 additions and 40 deletions
				
			
		| 
						 | 
					@ -1,6 +1,7 @@
 | 
				
			||||||
 | 
					local objectList = require(script.Parent.ObjectList)
 | 
				
			||||||
local types = require(script.Parent.Types)
 | 
					local types = require(script.Parent.Types)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
local component: types.ComponentClass = {} :: types.ComponentClass
 | 
					local component = {} :: types.ComponentClass
 | 
				
			||||||
component["__index"] = component
 | 
					component["__index"] = component
 | 
				
			||||||
 | 
					
 | 
				
			||||||
local module = {}
 | 
					local module = {}
 | 
				
			||||||
| 
						 | 
					@ -8,51 +9,18 @@ local module = {}
 | 
				
			||||||
function module.new(name: string): types.Component
 | 
					function module.new(name: string): types.Component
 | 
				
			||||||
    local self = setmetatable({
 | 
					    local self = setmetatable({
 | 
				
			||||||
        Name= name,
 | 
					        Name= name,
 | 
				
			||||||
        Buttons = {
 | 
					        Buttons = objectList.new(),
 | 
				
			||||||
            Active = {},
 | 
					 | 
				
			||||||
            Stored = {},
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        _ = {
 | 
					        _ = {
 | 
				
			||||||
            UpdateCallbacks = {},
 | 
					            UpdateCallbacks = {},
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
    }, component)
 | 
					    }, component)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    self.Buttons.Parent = self
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return self
 | 
					    return self
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
--[[ Buttons ]]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function component:BuildButtons()
 | 
					 | 
				
			||||||
    for _, button: types.Button in self.Buttons.Stored do
 | 
					 | 
				
			||||||
        button:Build(self)
 | 
					 | 
				
			||||||
    end
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function component:AddButton(button: types.Button)
 | 
					 | 
				
			||||||
    self.Buttons.Stored[button.Name] = button
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function component:CloseAllButtons()
 | 
					 | 
				
			||||||
    for _, button in self.Buttons.Active do
 | 
					 | 
				
			||||||
        button:Close()
 | 
					 | 
				
			||||||
    end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    self.Buttons.Active = {}
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function component:RemoveButtons()
 | 
					 | 
				
			||||||
    self:CloseAllButtons()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    for _, button in self.Buttons.Stored do
 | 
					 | 
				
			||||||
        button:Remove()
 | 
					 | 
				
			||||||
    end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    self.Buttons.Stored = {}
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function component:OnBuild(callback: (self: types.Component) -> ()): ()
 | 
					function component:OnBuild(callback: (self: types.Component) -> ()): ()
 | 
				
			||||||
    self._.OnBuild = callback
 | 
					    self._.OnBuild = callback
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
| 
						 | 
					@ -80,6 +48,16 @@ function component:Build(parent: types.Page): ()
 | 
				
			||||||
    if self._.OnBuild then
 | 
					    if self._.OnBuild then
 | 
				
			||||||
        self._.OnBuild(self)
 | 
					        self._.OnBuild(self)
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    self._.Status = "Built"
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function component:GetStatus(): "Built" | "Stored"
 | 
				
			||||||
 | 
					    return self._.Status
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function component:StatusIs(status: "Built" | "Stored")
 | 
				
			||||||
 | 
					    return status == self._.Status
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function component:Update(command: string, parameters: {}?): ()
 | 
					function component:Update(command: string, parameters: {}?): ()
 | 
				
			||||||
| 
						 | 
					@ -111,21 +89,23 @@ function component:Close(): ()
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function component:Clean(): ()
 | 
					function component:Clean(): ()
 | 
				
			||||||
    self:CloseAllButtons()
 | 
					    self.Buttons:CleanAll()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if self.Container then
 | 
					    if self.Container then
 | 
				
			||||||
        self.Container:Remove()
 | 
					        self.Container:Remove()
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    self._.Status = "Stored"
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function component:Remove(): ()
 | 
					function component:Remove(): ()
 | 
				
			||||||
    self:Clean()
 | 
					    self:Clean()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    self:RemoveButtons()
 | 
					    self.Buttons:RemoveAll()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if self.Frame then
 | 
					    if self.Frame then
 | 
				
			||||||
        self.Frame:Destroy()
 | 
					        self.Frame:Destroy()
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
return module
 | 
					return module
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue