diff --git a/lib/cyberarm_engine/ui/button.rb b/lib/cyberarm_engine/ui/button.rb index 5f9058e..3251549 100644 --- a/lib/cyberarm_engine/ui/button.rb +++ b/lib/cyberarm_engine/ui/button.rb @@ -1,8 +1,15 @@ module CyberarmEngine class Button < Label def draw - @text.draw + draw_text + draw_button + end + def draw_text + @text.draw + end + + def draw_button $window.draw_rect(relative_x, relative_y, width, height, @options[:element_background], @z+1) if mouse_over? && $window.button_down?(Gosu::MsLeft) diff --git a/lib/cyberarm_engine/ui/container.rb b/lib/cyberarm_engine/ui/container.rb index 1b06816..3a7b836 100644 --- a/lib/cyberarm_engine/ui/container.rb +++ b/lib/cyberarm_engine/ui/container.rb @@ -69,7 +69,7 @@ module CyberarmEngine end def draw - Gosu.clip_to(@x, @y, @width + @spacing_x, @height + @spacing_y) do + Gosu.clip_to(@x, @y, @width, @height) do background Gosu.translate(@scroll_x, @scroll_y) do @@ -116,7 +116,7 @@ module CyberarmEngine end def background - Gosu.draw_rect(@x, @y, @width + @spacing_x, @height + @spacing_y, @background_color, @z) + Gosu.draw_rect(@x, @y, @width, @height, @background_color, @z) end def recalculate @@ -126,27 +126,35 @@ module CyberarmEngine @packing_x = 0 @packing_y = 0 - @spacing_x = 0 - @spacing_y = 0 - - @spacer = 1 - @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 + @elements.each do |element| flow(element) if @mode == :flow stack(element) if @mode == :stack + margin = 0 + margin = element.margin if defined?(element.margin) case @mode when :flow - @width += element.width unless @origin_width.nonzero? - @height = element.height if element.height > @height unless @origin_height.nonzero? + @width += element.width + margin unless @origin_width.nonzero? + @height = element.height + margin if element.height + margin > @height + margin unless @origin_height.nonzero? when :stack - @width = element.width if element.width > @width unless @origin_width.nonzero? - @height += element.height unless @origin_height.nonzero? + @width = element.width + margin if element.width + margin > @width + margin unless @origin_width.nonzero? + @height += element.height + margin unless @origin_height.nonzero? end end + + @width += padded_margin unless @origin_width.nonzero? + @height += padded_margin unless @origin_height.nonzero? end def flow(element) @@ -158,8 +166,8 @@ module CyberarmEngine end element.recalculate - @packing_x += element.width + @spacer - @spacing_x += @spacer + @packing_x += element.margin if defined?(element.margin) + @packing_x += element.width end def stack(element) @@ -171,8 +179,8 @@ module CyberarmEngine element.y = @packing_y element.recalculate - @packing_y += element.height + @spacer - @spacing_y += @spacer + @packing_y += element.margin if defined?(element.margin) + @packing_y += element.height end end end \ No newline at end of file diff --git a/lib/cyberarm_engine/ui/edit_line.rb b/lib/cyberarm_engine/ui/edit_line.rb index 755aae1..a99ffe0 100644 --- a/lib/cyberarm_engine/ui/edit_line.rb +++ b/lib/cyberarm_engine/ui/edit_line.rb @@ -21,10 +21,11 @@ module CyberarmEngine def draw Gosu.clip_to(relative_x, relative_y, width, height) do - super - + draw_text Gosu.draw_rect(caret_position, @text.y, @caret_width, @caret_height, @caret_color, @z + 40) if @show_caret end + + draw_button end def update @@ -69,8 +70,10 @@ module CyberarmEngine end end - def width - @options[:edit_line_width] + def recalculate + super + + @width = @options[:edit_line_width] end def value diff --git a/lib/cyberarm_engine/ui/element.rb b/lib/cyberarm_engine/ui/element.rb index e22e066..d740f27 100644 --- a/lib/cyberarm_engine/ui/element.rb +++ b/lib/cyberarm_engine/ui/element.rb @@ -16,7 +16,7 @@ module CyberarmEngine checkmark: "√", # √ padding: 20, - margin: 0, + margin: 2, element_background: Gosu::Color.rgb(12,12,12), @@ -91,11 +91,11 @@ module CyberarmEngine end def relative_x - @parent.x + @parent.scroll_x + @x + @parent.x + @parent.scroll_x + @x + @margin end def relative_y - @parent.y + @parent.scroll_y + @y + @parent.y + @parent.scroll_y + @y + @margin end def recalculate