2022-04-11 18:47:26 +02:00
|
|
|
require("common.class")
|
|
|
|
local Field = require("components.pager.field")
|
|
|
|
|
|
|
|
---@class ContainerField: Field
|
|
|
|
---@field content Field[]
|
|
|
|
local ContainerField = {
|
|
|
|
__tostring = function() return "ContainerField" end,
|
|
|
|
}
|
|
|
|
|
|
|
|
---Create a new ContainerField instance
|
2022-04-12 23:45:28 +02:00
|
|
|
---@param o? table # initial parameters
|
2022-04-11 18:47:26 +02:00
|
|
|
---@return ContainerField
|
2022-04-27 02:40:22 +02:00
|
|
|
function ContainerField.new(o)
|
2022-04-11 18:47:26 +02:00
|
|
|
o = o or {}
|
|
|
|
|
|
|
|
--set instance members
|
|
|
|
|
|
|
|
o.content = o.content or {}
|
|
|
|
|
2022-04-27 02:40:22 +02:00
|
|
|
local this = CreateInstance(ContainerField, o, Field)
|
2022-04-11 18:47:26 +02:00
|
|
|
|
2022-04-15 04:54:30 +02:00
|
|
|
this:refreshFields()
|
|
|
|
|
|
|
|
return this
|
2022-04-12 23:45:28 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
---Add content to container
|
2022-04-11 18:47:26 +02:00
|
|
|
---@param field Field
|
|
|
|
function ContainerField:addField(field)
|
2022-04-12 23:45:28 +02:00
|
|
|
field.parent = self
|
2022-04-11 18:47:26 +02:00
|
|
|
table.insert(self.content, field)
|
|
|
|
end
|
|
|
|
|
2022-04-12 23:45:28 +02:00
|
|
|
---Refresh content parameters
|
|
|
|
function ContainerField:refreshFields()
|
|
|
|
for _, child in ipairs(self.content) do
|
|
|
|
child.parent = self
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
---@param deltaTime number # frametime in seconds
|
2022-04-11 18:47:26 +02:00
|
|
|
function ContainerField:drawBackground(deltaTime) end
|
|
|
|
|
2022-04-12 23:45:28 +02:00
|
|
|
---@param deltaTime number # frametime in seconds
|
2022-04-11 18:47:26 +02:00
|
|
|
function ContainerField:drawContent(deltaTime)
|
|
|
|
for _, child in ipairs(self.content) do
|
|
|
|
child:render(deltaTime)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2022-04-12 23:45:28 +02:00
|
|
|
---@param deltaTime number # frametime in seconds
|
2022-04-11 18:47:26 +02:00
|
|
|
function ContainerField:drawForeground(deltaTime) end
|
|
|
|
|
2022-04-12 23:45:28 +02:00
|
|
|
---@param deltaTime number # frametime in seconds
|
2022-04-11 18:47:26 +02:00
|
|
|
function ContainerField:render(deltaTime)
|
|
|
|
gfx.Save()
|
|
|
|
|
|
|
|
gfx.Translate(self.posX, self.posY)
|
2022-04-15 04:54:30 +02:00
|
|
|
gfx.Scissor(0, 0, self.aabbW, self.aabbH)
|
2022-04-11 18:47:26 +02:00
|
|
|
|
|
|
|
self:drawBackground(deltaTime)
|
|
|
|
self:drawContent(deltaTime)
|
|
|
|
self:drawForeground(deltaTime)
|
|
|
|
|
|
|
|
gfx.Restore()
|
|
|
|
end
|
|
|
|
|
|
|
|
return ContainerField
|