From cfad5eafab4166c79391ea6fb2637ee4b49e1033 Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Fri, 1 Mar 2019 22:22:44 -0600 Subject: [PATCH] Broke container layout some more --- lib/cyberarm_engine/ui/button.rb | 9 +++++++++ lib/cyberarm_engine/ui/container.rb | 5 ++++- lib/cyberarm_engine/ui/flow.rb | 9 ++++----- lib/cyberarm_engine/ui/gui_state.rb | 6 ++++-- lib/cyberarm_engine/ui/label.rb | 4 ++-- lib/cyberarm_engine/ui/stack.rb | 7 ++----- lib/cyberarm_engine/ui/theme.rb | 2 +- 7 files changed, 26 insertions(+), 16 deletions(-) diff --git a/lib/cyberarm_engine/ui/button.rb b/lib/cyberarm_engine/ui/button.rb index ca2c6bc..9ab1295 100644 --- a/lib/cyberarm_engine/ui/button.rb +++ b/lib/cyberarm_engine/ui/button.rb @@ -11,9 +11,18 @@ module CyberarmEngine def enter(sender) @background = @options[:interactive_hover_background] + @text.color = @options[:interactive_stroke] + end + + def holding_left_mouse_button(sender, x, y) + @background = @options[:interactive_active_background] @text.color = @options[:interactive_active_stroke] end + def released_left_mouse_button(sender,x, y) + enter(sender) + end + def leave(sender) @background = @options[:interactive_background] @text.color = @options[:interactive_stroke] diff --git a/lib/cyberarm_engine/ui/container.rb b/lib/cyberarm_engine/ui/container.rb index bb12fc9..86d6228 100644 --- a/lib/cyberarm_engine/ui/container.rb +++ b/lib/cyberarm_engine/ui/container.rb @@ -82,6 +82,9 @@ module CyberarmEngine @current_position = Vector.new(@margin_left + @x, @margin_top + @y) layout + + @width = @max_width ? @max_width : (@children.map {|c| c.x + c.width }.max + @margin_right || 0) + @height = @max_height ? @max_height : (@children.map {|c| c.y + c.height}.max + @margin_bottom || 0) end def layout @@ -101,7 +104,7 @@ module CyberarmEngine element.y = @current_position.y @current_position.x += element.width + element.margin_right - @current_position.x = @x if @current_position.x >= max_width + @current_position.x = @margin_left + @x if @current_position.x >= max_width end def move_to_next_line(element) diff --git a/lib/cyberarm_engine/ui/flow.rb b/lib/cyberarm_engine/ui/flow.rb index 69f3489..4492674 100644 --- a/lib/cyberarm_engine/ui/flow.rb +++ b/lib/cyberarm_engine/ui/flow.rb @@ -4,17 +4,16 @@ module CyberarmEngine def layout @children.each do |child| + child.recalculate + if fits_on_line?(child) position_on_current_line(child) else + @current_position.x = @margin_left + @x + move_to_next_line(child) end - - child.recalculate end - - @width = @max_width ? @max_width : (@children.map {|c| c.x + c.width }.max || 0) - @height = @max_height ? @max_height : (@children.map {|c| c.y + c.height}.max || 0) end end end \ No newline at end of file diff --git a/lib/cyberarm_engine/ui/gui_state.rb b/lib/cyberarm_engine/ui/gui_state.rb index c20a34f..c4c6b4a 100644 --- a/lib/cyberarm_engine/ui/gui_state.rb +++ b/lib/cyberarm_engine/ui/gui_state.rb @@ -90,8 +90,10 @@ module CyberarmEngine end def redirect_released_mouse_button(button) - @mouse_over.publish(:"released_#{button}_mouse_button", window.mouse_x, window.mouse_y) if @mouse_over - @mouse_over.publish(:"clicked_#{button}_mouse_button", window.mouse_x, window.mouse_y) if @mouse_over == @mouse_down_on[button] + if @mouse_over + @mouse_over.publish(:"released_#{button}_mouse_button", window.mouse_x, window.mouse_y) + @mouse_over.publish(:"clicked_#{button}_mouse_button", window.mouse_x, window.mouse_y) if @mouse_over == @mouse_down_on[button] + end @mouse_down_position[button] = nil @mouse_down_on[button] = nil diff --git a/lib/cyberarm_engine/ui/label.rb b/lib/cyberarm_engine/ui/label.rb index 5b20e10..64ebeaa 100644 --- a/lib/cyberarm_engine/ui/label.rb +++ b/lib/cyberarm_engine/ui/label.rb @@ -27,8 +27,8 @@ module CyberarmEngine @width = @text.width @height= @text.height - @text.x = @x + @padding_left - @text.y = @y + @padding_top + @text.x = @padding_left + @x + @text.y = @padding_top + @y @text.z = @z + 3 end diff --git a/lib/cyberarm_engine/ui/stack.rb b/lib/cyberarm_engine/ui/stack.rb index 224ba0a..202909f 100644 --- a/lib/cyberarm_engine/ui/stack.rb +++ b/lib/cyberarm_engine/ui/stack.rb @@ -4,13 +4,10 @@ module CyberarmEngine def layout @children.each do |child| - move_to_next_line(child) - child.recalculate - end - @width = @max_width ? @max_width : (@children.map {|c| c.x + c.width }.max || 0) - @height = @max_height ? @max_height : (@children.map {|c| c.y + c.height}.max || 0) + move_to_next_line(child) + end end end end \ No newline at end of file diff --git a/lib/cyberarm_engine/ui/theme.rb b/lib/cyberarm_engine/ui/theme.rb index c993bd8..f4df881 100644 --- a/lib/cyberarm_engine/ui/theme.rb +++ b/lib/cyberarm_engine/ui/theme.rb @@ -15,7 +15,7 @@ module CyberarmEngine background: Gosu::Color::NONE, checkmark: "√", # √ - margin: 0, + margin: 10, padding: 5, element_background: Gosu::Color.rgb(12,12,12),