mirror of
https://github.com/cyberarm/cyberarm_engine.git
synced 2025-12-16 13:12:34 +00:00
51 lines
1.3 KiB
Ruby
51 lines
1.3 KiB
Ruby
module CyberarmEngine
|
|
class Element
|
|
class Progress < Element
|
|
def initialize(options = {}, block = nil)
|
|
super(options, block)
|
|
|
|
@fraction_background = Background.new(background: @style.fraction_background)
|
|
self.value = options[:fraction] ? options[:fraction] : 0.0
|
|
end
|
|
|
|
def render
|
|
@fraction_background.draw
|
|
end
|
|
|
|
def recalculate
|
|
_width = dimensional_size(@style.width, :width)
|
|
_height= dimensional_size(@style.height,:height)
|
|
@width = _width
|
|
@height= _height
|
|
|
|
update_background
|
|
end
|
|
|
|
def update_background
|
|
super
|
|
|
|
@fraction_background.x = @style.border_thickness_left + @style.padding_left + @x
|
|
@fraction_background.y = @style.border_thickness_top + @style.padding_top + @y
|
|
@fraction_background.z = @z
|
|
@fraction_background.width = @width * @fraction
|
|
@fraction_background.height = @height
|
|
|
|
@fraction_background.background = @style.fraction_background
|
|
end
|
|
|
|
def value
|
|
@fraction
|
|
end
|
|
|
|
def value=(decimal)
|
|
raise "value must be number" unless decimal.is_a?(Numeric)
|
|
|
|
@fraction = decimal.clamp(0.0, 1.0)
|
|
update_background
|
|
|
|
publish(:changed, @fraction)
|
|
return @fraction
|
|
end
|
|
end
|
|
end
|
|
end |