ExperimentalGear/scripts/titlescreen/components/colorgradientfield.lua

47 lines
1.4 KiB
Lua
Raw Normal View History

require("common.class")
2022-04-05 17:31:02 +02:00
local Util = require("common.util")
2022-04-27 12:29:54 +02:00
local ServiceField = require("titlescreen.components.servicefield")
---@class ColorGradientField: ServiceField
local ColorGradientField = {
__tostring = function() return "ColorGradientField" end,
GRADIENT_X_OFFSET = 128,
GRADIENT_WIDTH = 576,
GRADIENT_STEPS = 32
}
---Create a new ColorGradientField instance
---@param o? table # initial parameters
---@return ColorGradientField
function ColorGradientField.new(o)
o = o or {}
o.value = o.value or {0, 0, 0, 255}
return CreateInstance(ColorGradientField, o, ServiceField)
end
---@param obj? any # message object for the field
function ColorGradientField:activate(obj) end
---@param obj? any # message object for the field
function ColorGradientField:focus(obj) end
---@param obj? any # message object for the field
function ColorGradientField:deactivate(obj) end
---@param deltaTime number # frametime in seconds
function ColorGradientField:drawValue(deltaTime)
local stepW = self.GRADIENT_WIDTH / self.GRADIENT_STEPS
for i = 0, self.GRADIENT_STEPS - 1 do
local posX = self.GRADIENT_X_OFFSET + i * stepW
2022-04-05 17:31:02 +02:00
local colorA = math.ceil(Util.lerp(i, 0, 0, self.GRADIENT_STEPS - 1, self.value[4]))
gfx.BeginPath()
gfx.Rect(posX, 0, stepW, self.aabbH)
gfx.FillColor(self.value[1], self.value[2], self.value[3], colorA)
gfx.Fill()
end
end
2022-04-05 23:53:19 +02:00
return ColorGradientField