Using Element margin now

This commit is contained in:
2019-02-01 23:50:15 -06:00
parent 1a06a9fdaa
commit 3059e962fb
4 changed files with 41 additions and 23 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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

View File

@@ -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