Update Page to Modern V2
This commit is contained in:
		
							parent
							
								
									a2bc7709eb
								
							
						
					
					
						commit
						43f697915d
					
				
					 1 changed files with 31 additions and 147 deletions
				
			
		| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
local objectList = require(script.Parent.ObjectList)
 | 
			
		||||
local types = require(script.Parent.Types)
 | 
			
		||||
 | 
			
		||||
local page: types.PageClass = {} :: types.PageClass
 | 
			
		||||
local page = {} :: types.PageClass
 | 
			
		||||
page["__index"] = page
 | 
			
		||||
 | 
			
		||||
local module = {}
 | 
			
		||||
| 
						 | 
				
			
			@ -10,151 +11,18 @@ function module.new(name: string): types.Page
 | 
			
		|||
        Name= name,
 | 
			
		||||
        Weight = 0,
 | 
			
		||||
 | 
			
		||||
        Buttons = {
 | 
			
		||||
            Active = {},
 | 
			
		||||
            Stored = {},
 | 
			
		||||
        },
 | 
			
		||||
        Components = {
 | 
			
		||||
            Open = {},
 | 
			
		||||
            Stored = {},
 | 
			
		||||
        },
 | 
			
		||||
        Buttons = objectList.new() :: types.ObjectList<types.Button, types.Page>,
 | 
			
		||||
        Components = objectList.new(),
 | 
			
		||||
 | 
			
		||||
        _ = {},
 | 
			
		||||
    }, page)
 | 
			
		||||
 | 
			
		||||
    self.Buttons.Parent = self
 | 
			
		||||
    self.Components.Parent = self
 | 
			
		||||
 | 
			
		||||
    return self
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
--[[ Buttons ]]
 | 
			
		||||
 | 
			
		||||
function page:BuildButtons()
 | 
			
		||||
    for _, button: types.Button in self.Buttons.Stored do
 | 
			
		||||
        button:Build(self)
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function page:AddButton(button: types.Button)
 | 
			
		||||
    self.Buttons.Stored[button.Name] = button
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function page:GetButton(button: string): types.Component
 | 
			
		||||
    return self.Buttons.Stored[button]
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function page:OpenButton(component: string)
 | 
			
		||||
    local buttonModule= self.Buttons.Stored[component]
 | 
			
		||||
    if buttonModule then
 | 
			
		||||
        buttonModule:Build(self)
 | 
			
		||||
        buttonModule:Open()
 | 
			
		||||
        self.Buttons.Active[component] = buttonModule
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function page:CloseButton(component: string)
 | 
			
		||||
    local buttonModule= self.Buttons.Active[component]
 | 
			
		||||
    if buttonModule then
 | 
			
		||||
        buttonModule:Close()
 | 
			
		||||
        buttonModule:Clean()
 | 
			
		||||
        self.Buttons.Active[component] = nil
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function page:CloseAllButtons()
 | 
			
		||||
    for _, button: types.Button in self.Buttons.Active do
 | 
			
		||||
        button:Close()
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    self.Buttons.Active = {}
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function page:RemoveButtons()
 | 
			
		||||
    self:CloseAllButtons()
 | 
			
		||||
 | 
			
		||||
    for _, button: types.Button in self.Buttons.Stored do
 | 
			
		||||
        button:Remove()
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    self.Buttons.Stored = {}
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
--
 | 
			
		||||
 | 
			
		||||
--[[ Components ]]
 | 
			
		||||
 | 
			
		||||
local function addComponentTo(self: types.Page, component: types.Component)
 | 
			
		||||
    component:Build(self)
 | 
			
		||||
    component:Open()
 | 
			
		||||
    self.Components.Open[component.Name] = component
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
--[[ Component Methods ]]
 | 
			
		||||
 | 
			
		||||
function page:BuildComponents(): ()
 | 
			
		||||
    for _, component: types.Button in self.Components.Stored do
 | 
			
		||||
        component:Build(self)
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function page:AddComponent(component: types.Component): {AsOpened: () -> ()}
 | 
			
		||||
    local name: string = component.Name
 | 
			
		||||
    self.Components.Stored[name] = component
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        AsOpened = function(): ()
 | 
			
		||||
            addComponentTo(self, component)
 | 
			
		||||
        end
 | 
			
		||||
    }
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function page:GetComponent(component: string): types.Component
 | 
			
		||||
    return self.Components.Stored[component]
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function page:OpenComponent(component: string)
 | 
			
		||||
    local componentModule= self.Components.Stored[component]
 | 
			
		||||
    if componentModule then
 | 
			
		||||
        addComponentTo(self, componentModule)
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function page:CloseComponent(component: string)
 | 
			
		||||
    local componentModule= self.Components.Open[component]
 | 
			
		||||
    if componentModule then
 | 
			
		||||
        componentModule:Close()
 | 
			
		||||
        componentModule:Clean()
 | 
			
		||||
        self.Components.Open[component] = nil
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function page:CleanComponents()
 | 
			
		||||
    for _, component: types.Component in self.Components.Open do
 | 
			
		||||
        component:Close()
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    for _, component: types.Component in self.Components.Stored do
 | 
			
		||||
        component:Clean()
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    self.Components.Open = {}
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function page:RemoveComponents()
 | 
			
		||||
    for _, component: types.Component in self.Components.Open do
 | 
			
		||||
        component:Close()
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    for _, component: types.Component in self.Components.Stored do
 | 
			
		||||
        component:Remove()
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    self.Components.Open = {}
 | 
			
		||||
    self.Components.Stored = {}
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
--
 | 
			
		||||
 | 
			
		||||
--[[ Page ]]
 | 
			
		||||
 | 
			
		||||
function page:OnBuild(callback: (self: types.Page) -> ())
 | 
			
		||||
| 
						 | 
				
			
			@ -174,11 +42,22 @@ function page:Build(parent: types.Window)
 | 
			
		|||
 | 
			
		||||
    self.Parent = parent
 | 
			
		||||
 | 
			
		||||
    self.Container = parent.Manager.Packages.Trove.new()
 | 
			
		||||
    local manager = parent.Parent
 | 
			
		||||
    self.Container = manager.Packages.Trove.new()
 | 
			
		||||
 | 
			
		||||
    if self._.OnBuild then
 | 
			
		||||
        self._.OnBuild(self)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    self._.Status = "Built"
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function page:GetStatus(): "Built" | "Stored"
 | 
			
		||||
    return self._.Status
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function page:StatusIs(status: "Built" | "Stored")
 | 
			
		||||
    return status == self._.Status
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function page:Open()
 | 
			
		||||
| 
						 | 
				
			
			@ -208,19 +87,24 @@ function page:Close()
 | 
			
		|||
end
 | 
			
		||||
 | 
			
		||||
function page:Clean()
 | 
			
		||||
    self:CleanComponents()
 | 
			
		||||
    self:CloseAllButtons()
 | 
			
		||||
    self.Components:CleanAll()
 | 
			
		||||
    self.Buttons:CleanAll()
 | 
			
		||||
 | 
			
		||||
    if self.Container then
 | 
			
		||||
        self.Container:Remove()
 | 
			
		||||
        self.Container:Destroy()
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    self._.Status = "Stored"
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function page:Remove()
 | 
			
		||||
    self:Clean()
 | 
			
		||||
 | 
			
		||||
    self:RemoveComponents()
 | 
			
		||||
    self:RemoveButtons()
 | 
			
		||||
    self.Components:CloseAll()
 | 
			
		||||
    self.Components:RemoveAll()
 | 
			
		||||
 | 
			
		||||
    self.Buttons:CloseAll()
 | 
			
		||||
    self.Buttons:RemoveAll()
 | 
			
		||||
    
 | 
			
		||||
    if self.Frame then
 | 
			
		||||
        self.Frame:Destroy()
 | 
			
		||||
| 
						 | 
				
			
			@ -230,7 +114,7 @@ end
 | 
			
		|||
--[[ Helper ]]
 | 
			
		||||
 | 
			
		||||
function page:GetManager(): types.Manager
 | 
			
		||||
    return self.Parent.Manager
 | 
			
		||||
    return self.Parent.Parent
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
return module
 | 
			
		||||
return module
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue