Skip to main content
Skip to main content

RoundStatusBar

RoundStatusBar

Functions

delete

Description

Definition

delete()

Code

function RoundStatusBar:delete()
if self.overlayFront ~ = nil then
self.overlayFront:delete()
end
if self.overlayBackground1 ~ = nil then
self.overlayBackground1:delete()
end
if self.overlayBackground2 ~ = nil then
self.overlayBackground2:delete()
end
if self.overlayValue1 ~ = nil then
self.overlayValue1:delete()
end
if self.overlayValue2 ~ = nil then
self.overlayValue2:delete()
end
if self.overlayMarker ~ = nil then
self.overlayMarker:delete()
end
end

new

Description

Definition

new()

Arguments

anyfrontSliceId
anyvalueSliceId
anymarkerSliceId
anyx
anyy
anywidth
anyheight
anyvalueWidth
anyvalueHeight
anyradius
anycolor
anybgColor
anyvalueColor
anymarkerSize
anycustom_mt

Code

function RoundStatusBar.new(frontSliceId, valueSliceId, markerSliceId, x, y, width, height, valueWidth, valueHeight, radius, color, bgColor, valueColor, markerSize, custom_mt)
if custom_mt = = nil then
custom_mt = RoundStatusBar _mt
end
local self = setmetatable( { } , custom_mt)

self.value = 0
self.x = x
self.y = y
self.width = width
self.height = height
self.radius = radius
self.offsetX = (width - valueWidth) / 2
self.offsetY = (height - valueHeight) / 2

if frontSliceId ~ = nil then
self.overlayBackground = g_overlayManager:createOverlay(frontSliceId, x, y, width, height)
end

self.overlayBackground1 = g_overlayManager:createOverlay(valueSliceId, x + self.offsetX, y + self.offsetY, valueWidth, valueHeight)
self.overlayBackground1:setColor( unpack(bgColor))

self.overlayBackground2 = g_overlayManager:createOverlay(valueSliceId, x + self.offsetX, y + self.offsetY, valueWidth, valueHeight)
self.overlayBackground2:setColor( unpack(bgColor))

self.overlayValue1 = g_overlayManager:createOverlay(valueSliceId, x + self.offsetX, y + self.offsetY, valueWidth, valueHeight)
self.overlayValue1:setColor( unpack(valueColor))

self.overlayValue2 = g_overlayManager:createOverlay(valueSliceId, x + self.offsetX, y + self.offsetY, valueWidth, valueHeight)
self.overlayValue2:setColor( unpack(valueColor))

if markerSliceId ~ = nil then
self.overlayMarker = g_overlayManager:createOverlay(valueSliceId, x, y, markerSize[ 1 ], markerSize[ 2 ])
self.overlayMarker:setColor( unpack(valueColor))
end

self.overlayValue2:setRotation( math.rad( 180 ), self.overlayValue2.width * 0.5 , self.overlayValue2.height * 0.5 )
self:setValue( 0 )

return self
end

render

Description

Definition

render()

Code

function RoundStatusBar:render()
if self.value > 0.5 then
self.overlayBackground2:render()
end
self.overlayValue1:render()

if self.value > 0.5 then
self.overlayValue2:render()
else
self.overlayBackground2:render()
self.overlayBackground1:render()
end
if self.overlayFront ~ = nil then
self.overlayFront:render()
end
if self.overlayMarker ~ = nil then
self.overlayMarker:render()
end
end

setPosition

Description

Definition

setPosition()

Arguments

anyx
anyy

Code

function RoundStatusBar:setPosition(x, y)
self.x = Utils.getNoNil(x, self.x)
self.y = Utils.getNoNil(y, self.y)

self.overlayValue1:setPosition( self.x + self.offsetX, self.y + self.offsetY)
self.overlayValue2:setPosition( self.x + self.offsetX, self.y + self.offsetY)
self.overlayBackground1:setPosition( self.x + self.offsetX, self.y + self.offsetY)
self.overlayBackground2:setPosition( self.x + self.offsetX, self.y + self.offsetY)
if self.overlayFront ~ = nil then
self.overlayFront:setPosition( self.x, self.y)
end
end

setValue

Description

Definition

setValue()

Arguments

anynewValue

Code

function RoundStatusBar:setValue(newValue)
self.value = math.clamp(newValue, 0 , 1 )
self.overlayValue1:setRotation( math.rad((( 1 - self.value) * 360 )), self.overlayValue1.width * 0.5 , self.overlayValue1.height * 0.5 )
self.overlayBackground1:setRotation( math.rad( 180 + ( - self.value * 360 )), self.overlayBackground1.width * 0.5 , self.overlayBackground1.height * 0.5 )

if self.overlayMarker ~ = nil then
local markerPosX = math.cos( math.rad((( 1 - self.value) * 360 ) + 90 )) * self.radius[ 1 ]
local markerPosY = math.sin( math.rad((( 1 - self.value) * 360 ) + 90 )) * self.radius[ 2 ]
self.overlayMarker:setPosition( self.x + self.width / 2 - self.overlayMarker.width / 2 + markerPosX, self.y + self.height / 2 - self.overlayMarker.height / 2 + markerPosY)
end
end