diff --git a/lib/cyberarm_engine/ui/container.rb b/lib/cyberarm_engine/ui/container.rb index 3a7b836..e561d5d 100644 --- a/lib/cyberarm_engine/ui/container.rb +++ b/lib/cyberarm_engine/ui/container.rb @@ -129,18 +129,21 @@ module CyberarmEngine @width = @origin_width @height= @origin_height - padded_margin = 0 - @elements.reverse.each do |e| - if defined?(e.margin) - padded_margin = e.margin - break - end - end + widest_element = nil + highest_element = nil @elements.each do |element| flow(element) if @mode == :flow stack(element) if @mode == :stack + if element.is_a?(Element) + widest_element ||= element + highest_element ||= element + + widest_element = element if element.width > widest_element.width + highest_element = element if element.height > widest_element.height + end + margin = 0 margin = element.margin if defined?(element.margin) case @mode @@ -153,8 +156,8 @@ module CyberarmEngine end end - @width += padded_margin unless @origin_width.nonzero? - @height += padded_margin unless @origin_height.nonzero? + @width += widest_element.margin if widest_element && !@origin_width.nonzero? + @height += highest_element.margin if highest_element && !@origin_height.nonzero? end def flow(element) diff --git a/lib/cyberarm_engine/ui/image.rb b/lib/cyberarm_engine/ui/image.rb index 2b923a9..808af47 100644 --- a/lib/cyberarm_engine/ui/image.rb +++ b/lib/cyberarm_engine/ui/image.rb @@ -27,6 +27,15 @@ module CyberarmEngine @image.draw(relative_x + @padding, relative_y + @padding, @z + 2, @scale_x, @scale_y) # TODO: Add color support? end + def button_up(id) + case id + when Gosu::MsLeft + if mouse_over? + @block.call(self) if @block + end + end + end + def recalculate @width = @image.width * @scale_x @height = @image.height * @scale_y