cyberarm_engine 0.7.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '0482c4bc8711db99340a9ece925032fb23322301aead26491ee98622a6b7c6bb'
4
- data.tar.gz: eeeb993e54b51a443ad45bd9b341e6f4b3a1c2225cc80434503508a4869b838a
3
+ metadata.gz: 699e78a7d87b5875ccefeffd1376baa7653b07c29a401381496257f764fcfc25
4
+ data.tar.gz: 7d577da5ae1d17297b0be0e9be536496717fb7807849ce05451a27ee061ae807
5
5
  SHA512:
6
- metadata.gz: 9c3d1154cc5a15eaee40944f1693115d33fdbfbdc55a71333adba065ec2996f1f0d0a8c9c85a07868f2f3e00ec0c1c5f65667259bacf98060d07d39f46f7bf9e
7
- data.tar.gz: 1c25facb14642fea3e371b810c34dc8eaa28c5df1794c8c4c75e5e0d61965d86564289b4fa8e6b2991f74c6bb4dac2b4389c2ea37c1634dc2b4137e469a55563
6
+ metadata.gz: c6bcd42a625b081fe5ea5c0d7c5246c3612ed26a1e9c47f74d44a1cab35ebe6a1916afa5d5f0d490134ad9b7aba5ce14d591f4b5c1566af8955b80be9950f102
7
+ data.tar.gz: 785d8b59ab8404569cd89ad12b0eaeac189d03995c7c2045ee1a5b1be0f5aa50152aba747632c495b193953c12a4bbd7e5af59fcbe83991e7e848459a9689f32
@@ -66,31 +66,31 @@ module CyberarmEngine
66
66
  @top.z = @element.z
67
67
 
68
68
  @top.width = @element.width
69
- @top.height = @element.border_thickness_top
69
+ @top.height = @element.style.border_thickness_top
70
70
 
71
71
  # RIGHT
72
72
  @right.x = @element.x + @element.width
73
- @right.y = @element.y + @element.border_thickness_top
73
+ @right.y = @element.y + @element.style.border_thickness_top
74
74
  @right.z = @element.z
75
75
 
76
- @right.width = -@element.border_thickness_right
77
- @right.height = @element.height - @element.border_thickness_top
76
+ @right.width = -@element.style.border_thickness_right
77
+ @right.height = @element.height - @element.style.border_thickness_top
78
78
 
79
79
  # BOTTOM
80
80
  @bottom.x = @element.x
81
81
  @bottom.y = @element.y + @element.height
82
82
  @bottom.z = @element.z
83
83
 
84
- @bottom.width = @element.width - @element.border_thickness_right
85
- @bottom.height = -@element.border_thickness_bottom
84
+ @bottom.width = @element.width - @element.style.border_thickness_right
85
+ @bottom.height = -@element.style.border_thickness_bottom
86
86
 
87
87
  # LEFT
88
88
  @left.x = @element.x
89
89
  @left.y = @element.y
90
90
  @left.z = @element.z
91
91
 
92
- @left.width = @element.border_thickness_left
93
- @left.height = @element.height - @element.border_thickness_bottom
92
+ @left.width = @element.style.border_thickness_left
93
+ @left.height = @element.height - @element.style.border_thickness_bottom
94
94
 
95
95
  @top.update
96
96
  @right.update
@@ -3,7 +3,7 @@ module CyberarmEngine
3
3
  def initialize(text, options = {}, block = nil)
4
4
  super(text, options, block)
5
5
 
6
- @background_canvas.background = default(:background)
6
+ @style.background_canvas.background = default(:background)
7
7
  end
8
8
 
9
9
  def render
@@ -18,17 +18,17 @@ module CyberarmEngine
18
18
  @focus = false unless window.button_down?(Gosu::MsLeft)
19
19
 
20
20
  if @focus
21
- @background_canvas.background = default(:active, :background)
21
+ @style.background_canvas.background = default(:active, :background)
22
22
  @text.color = default(:active, :color)
23
23
  else
24
- @background_canvas.background = default(:hover, :background)
24
+ @style.background_canvas.background = default(:hover, :background)
25
25
  @text.color = default(:hover, :color)
26
26
  end
27
27
  end
28
28
 
29
29
  def left_mouse_button(sender, x, y)
30
30
  @focus = true
31
- @background_canvas.background = default(:active, :background)
31
+ @style.background_canvas.background = default(:active, :background)
32
32
  window.current_state.focus = self
33
33
  @text.color = default(:active, :color)
34
34
  end
@@ -42,7 +42,7 @@ module CyberarmEngine
42
42
  end
43
43
 
44
44
  def leave(sender)
45
- @background_canvas.background = default(:background)
45
+ @style.background_canvas.background = default(:background)
46
46
  @text.color = default(:color)
47
47
  end
48
48
 
@@ -12,8 +12,8 @@ module CyberarmEngine
12
12
  add(@toggle_button)
13
13
  add(@label)
14
14
 
15
- @width = @toggle_button.width + @label.width
16
- @height = @toggle_button.height + @label.height
15
+ @style.width = @toggle_button.width + @label.width
16
+ @style.height = @toggle_button.height + @label.height
17
17
  end
18
18
 
19
19
  def text=(text)
@@ -15,12 +15,9 @@ module CyberarmEngine
15
15
  @text_color = options[:color]
16
16
 
17
17
  @children = []
18
-
19
- @theme = {}
20
18
  end
21
19
 
22
20
  def build
23
- @theme.merge(@parent.theme) if @parent
24
21
  @block.call(self) if @block
25
22
 
26
23
  recalculate
@@ -40,14 +37,6 @@ module CyberarmEngine
40
37
  @children.each(&:update)
41
38
  end
42
39
 
43
- def theme
44
- @theme
45
- end
46
-
47
- def color(color)
48
- @theme[:color] = color
49
- end
50
-
51
40
  def hit_element?(x, y)
52
41
  @children.reverse_each do |child|
53
42
  case child
@@ -64,25 +53,23 @@ module CyberarmEngine
64
53
  end
65
54
 
66
55
  def recalculate
67
- @current_position = Vector.new(@margin_left + @padding_left, @margin_top + @padding_top)
68
- unless @visible
69
- @width = 0
70
- @height= 0
71
- return
72
- end
56
+ @current_position = Vector.new(@style.margin_left + @style.padding_left, @style.margin_top + @style.padding_top)
57
+ return unless visible?
58
+ stylize
73
59
 
74
60
  layout
75
61
 
76
- @width = @max_width ? @max_width : (@children.map {|c| c.x + c.outer_width }.max || 0).round
77
- @height = @max_height ? @max_height : (@children.map {|c| c.y + c.outer_height}.max || 0).round
62
+ @style.width = @max_width ? @max_width : (@children.map {|c| c.x + c.outer_width }.max || 0).round
63
+ @style.height = @max_height ? @max_height : (@children.map {|c| c.y + c.outer_height}.max || 0).round
78
64
 
79
65
  # Move child to parent after positioning
80
66
  @children.each do |child|
81
67
  child.x += @x
82
68
  child.y += @y
83
-
84
- # Fix child being displaced
69
+
70
+ child.stylize
85
71
  child.recalculate
72
+ child.reposition # TODO: Implement top,bottom,left,center, and right positioning
86
73
  end
87
74
 
88
75
  update_background
@@ -93,7 +80,7 @@ module CyberarmEngine
93
80
  end
94
81
 
95
82
  def max_width
96
- @max_width ? @max_width : window.width - (@parent ? @parent.margin_right + @margin_right : @margin_right)
83
+ @max_width ? @max_width : window.width - (@parent ? @parent.style.margin_right + @style.margin_right : @style.margin_right)
97
84
  end
98
85
 
99
86
  def fits_on_line?(element) # Flow
@@ -102,13 +89,13 @@ module CyberarmEngine
102
89
  end
103
90
 
104
91
  def position_on_current_line(element) # Flow
105
- element.x = element.margin_left + @current_position.x
106
- element.y = element.margin_top + @current_position.y
92
+ element.x = element.style.margin_left + @current_position.x
93
+ element.y = element.style.margin_top + @current_position.y
107
94
 
108
95
  element.recalculate
109
96
 
110
97
  @current_position.x += element.outer_width
111
- @current_position.x = @margin_left if @current_position.x >= max_width
98
+ @current_position.x = @style.margin_left if @current_position.x >= max_width
112
99
  end
113
100
 
114
101
  def tallest_neighbor(querier, y_position) # Flow
@@ -122,11 +109,11 @@ module CyberarmEngine
122
109
  end
123
110
 
124
111
  def position_on_next_line(child) # Flow
125
- @current_position.x = @margin_left
112
+ @current_position.x = @style.margin_left
126
113
  @current_position.y += tallest_neighbor(child, @current_position.y).outer_height
127
114
 
128
- child.x = child.margin_left + @current_position.x
129
- child.y = child.margin_top + @current_position.y
115
+ child.x = child.style.margin_left + @current_position.x
116
+ child.y = child.style.margin_top + @current_position.y
130
117
 
131
118
  child.recalculate
132
119
 
@@ -134,8 +121,8 @@ module CyberarmEngine
134
121
  end
135
122
 
136
123
  def move_to_next_line(element) # Stack
137
- element.x = element.margin_left + @current_position.x
138
- element.y = element.margin_top + @current_position.y
124
+ element.x = element.style.margin_left + @current_position.x
125
+ element.y = element.style.margin_top + @current_position.y
139
126
 
140
127
  element.recalculate
141
128
 
@@ -2,7 +2,7 @@ module CyberarmEngine
2
2
  module DSL
3
3
  def flow(options = {}, &block)
4
4
  options[:parent] = @containers.last
5
- options[:theme] = @current_theme
5
+ options[:theme] = current_theme
6
6
  _container = Flow.new(options, block)
7
7
  @containers << _container
8
8
  _container.build
@@ -14,7 +14,7 @@ module CyberarmEngine
14
14
 
15
15
  def stack(options = {}, &block)
16
16
  options[:parent] = @containers.last
17
- options[:theme] = @current_theme
17
+ options[:theme] = current_theme
18
18
  _container = Stack.new(options, block)
19
19
  @containers << _container
20
20
  _container.build
@@ -26,7 +26,7 @@ module CyberarmEngine
26
26
 
27
27
  def label(text, options = {}, &block)
28
28
  options[:parent] = @containers.last
29
- options[:theme] = @current_theme
29
+ options[:theme] = current_theme
30
30
  _element = Label.new(text, options, block)
31
31
  @containers.last.add(_element)
32
32
 
@@ -35,7 +35,7 @@ module CyberarmEngine
35
35
 
36
36
  def button(text, options = {}, &block)
37
37
  options[:parent] = @containers.last
38
- options[:theme] = @current_theme
38
+ options[:theme] = current_theme
39
39
  _element = Button.new(text, options, block) { if block.is_a?(Proc); block.call; end }
40
40
  @containers.last.add(_element)
41
41
 
@@ -44,7 +44,7 @@ module CyberarmEngine
44
44
 
45
45
  def edit_line(text, options = {}, &block)
46
46
  options[:parent] = @containers.last
47
- options[:theme] = @current_theme
47
+ options[:theme] = current_theme
48
48
  _element = EditLine.new(text, options, block)
49
49
  @containers.last.add(_element)
50
50
 
@@ -53,7 +53,7 @@ module CyberarmEngine
53
53
 
54
54
  def toggle_button(options = {}, &block)
55
55
  options[:parent] = @containers.last
56
- options[:theme] = @current_theme
56
+ options[:theme] = current_theme
57
57
  _element = ToggleButton.new(options, block)
58
58
  @containers.last.add(_element)
59
59
 
@@ -62,7 +62,7 @@ module CyberarmEngine
62
62
 
63
63
  def check_box(text, options = {}, &block)
64
64
  options[:parent] = @containers.last
65
- options[:theme] = @current_theme
65
+ options[:theme] = current_theme
66
66
  _element = CheckBox.new(text, options, block)
67
67
  @containers.last.add(_element)
68
68
 
@@ -71,7 +71,7 @@ module CyberarmEngine
71
71
 
72
72
  def image(path, options = {}, &block)
73
73
  options[:parent] = @containers.last
74
- options[:theme] = @current_theme
74
+ options[:theme] = current_theme
75
75
  _element = Image.new(path, options, block)
76
76
  @containers.last.add(_element)
77
77
 
@@ -79,16 +79,15 @@ module CyberarmEngine
79
79
  end
80
80
 
81
81
  def background(color = Gosu::Color::NONE)
82
- @containers.last.background = color
82
+ @containers.last.style.background = color
83
83
  end
84
84
 
85
- # Foreground color, e.g. Text
86
- def color(color)
87
- @containers.last.color(color)
85
+ def theme(theme)
86
+ @containers.last.options[:theme] = theme
88
87
  end
89
88
 
90
- def set_theme(theme)
91
- @current_theme = theme
89
+ def current_theme
90
+ @containers.last.options[:theme]
92
91
  end
93
92
  end
94
93
  end
@@ -20,7 +20,7 @@ module CyberarmEngine
20
20
  end
21
21
 
22
22
  def render
23
- Gosu.clip_to(@text.x, @text.y, @width, @text.height) do
23
+ Gosu.clip_to(@text.x, @text.y, @style.width, @text.height) do
24
24
  draw_text
25
25
  Gosu.draw_rect(caret_position, @text.y, @caret_width, @caret_height, @caret_color, @z + 40) if @focus && @show_caret
26
26
  end
@@ -47,10 +47,10 @@ module CyberarmEngine
47
47
 
48
48
  def enter(sender)
49
49
  if @focus
50
- @background_canvas.background = default(:active, :background)
50
+ @style.background_canvas.background = default(:active, :background)
51
51
  @text.color = default(:active, :color)
52
52
  else
53
- @background_canvas.background = default(:hover, :background)
53
+ @style.background_canvas.background = default(:hover, :background)
54
54
  @text.color = default(:hover, :color)
55
55
  end
56
56
  end
@@ -63,7 +63,7 @@ module CyberarmEngine
63
63
 
64
64
  def blur(sender)
65
65
  @focus = false
66
- @background_canvas.background = default(:background)
66
+ @style.background_canvas.background = default(:background)
67
67
  @text.color = default(:color)
68
68
  window.text_input = nil
69
69
  end
@@ -80,13 +80,7 @@ module CyberarmEngine
80
80
  def recalculate
81
81
  super
82
82
 
83
- unless @visible
84
- @width = 0
85
- @height= 0
86
- return
87
- end
88
-
89
- @width = default(:width)
83
+ @style.width = default(:width)
90
84
  update_background
91
85
  end
92
86
 
@@ -5,13 +5,7 @@ module CyberarmEngine
5
5
  include Common
6
6
 
7
7
  attr_accessor :x, :y, :z, :enabled
8
- attr_reader :width, :height, :parent, :options, :event_handler, :background_canvas, :border_canvas
9
-
10
- attr_reader :border_thickness, :border_thickness_left, :border_thickness_right, :border_thickness_top, :border_thickness_bottom
11
- attr_reader :border_color, :border_color_left, :border_color_right, :border_color_top, :border_color_bottom
12
-
13
- attr_reader :padding, :padding_left, :padding_right, :padding_top, :padding_bottom
14
- attr_reader :margin, :margin_left, :margin_right, :margin_top, :margin_bottom
8
+ attr_reader :parent, :options, :style, :event_handler, :background_canvas, :border_canvas
15
9
 
16
10
  def initialize(options = {}, block = nil)
17
11
  @parent = options[:parent] # parent Container (i.e. flow/stack)
@@ -19,86 +13,82 @@ module CyberarmEngine
19
13
  @options = options
20
14
  @block = block
21
15
 
22
- @style = Style.new(options)
23
- @focus = false
24
- @background_canvas = Background.new
25
- @border_canvas = BorderCanvas.new(element: self)
16
+ @focus = false
17
+ @enabled = true
18
+ @visible = true
19
+
20
+ @style = Style.new(options)
26
21
 
27
- @x = default(:x)
28
- @y = default(:y)
29
- @z = default(:z)
22
+ @x = @style.x
23
+ @y = @style.y
24
+ @z = @style.z
30
25
 
31
26
  @fixed_x = @x if @x != 0
32
27
  @fixed_y = @y if @y != 0
33
28
 
34
- @width = default(:width) || $window.width
35
- @height = default(:height) || $window.height
29
+ stylize
36
30
 
37
- set_border_thickness(default(:border_thickness))
38
-
39
- set_padding(default(:padding))
31
+ default_events
32
+ end
40
33
 
41
- set_margin(default(:margin))
34
+ def stylize
35
+ @style.width = @style.width || $window.width
36
+ @style.height = @style.height || $window.height
42
37
 
43
- set_background(default(:background))
44
- set_border_color(default(:border_color))
38
+ set_border_thickness(@style.border_thickness)
45
39
 
46
- raise "#{self.class} 'x' must be a number" unless @x.is_a?(Numeric)
47
- raise "#{self.class} 'y' must be a number" unless @y.is_a?(Numeric)
48
- raise "#{self.class} 'z' must be a number" unless @z.is_a?(Numeric)
49
- raise "#{self.class} 'width' must be a number" unless @width.is_a?(Numeric) || @width.nil?
50
- raise "#{self.class} 'height' must be a number" unless @height.is_a?(Numeric) || @height.nil?
51
- raise "#{self.class} 'options' must be a Hash" unless @options.is_a?(Hash)
40
+ set_padding(@style.padding)
52
41
 
53
- # raise "#{self.class} 'padding' must be a number" unless @padding.is_a?(Numeric)
42
+ set_margin(@style.margin)
54
43
 
55
- @enabled = true
56
- @visible = true
44
+ @style.background_canvas = Background.new
45
+ @style.border_canvas = BorderCanvas.new(element: self)
57
46
 
58
- default_events
47
+ set_background(@style.background)
48
+ set_border_color(@style.border_color)
59
49
  end
60
50
 
61
51
  def set_background(background)
62
- @background = background
63
- @background_canvas.background = background
52
+ @style.background = background
53
+ @style.background_canvas.background = background
64
54
  end
65
55
 
66
56
  def set_border_thickness(border_thickness)
67
- @border_thickness = border_thickness
57
+ @style.border_thickness = border_thickness
68
58
 
69
- @border_thickness_left = default(:border_thickness_left) || @border_thickness
70
- @border_thickness_right = default(:border_thickness_right) || @border_thickness
71
- @border_thickness_top = default(:border_thickness_top) || @border_thickness
72
- @border_thickness_bottom = default(:border_thickness_bottom) || @border_thickness
59
+ @style.border_thickness_left = default(:border_thickness_left) || @style.border_thickness
60
+ @style.border_thickness_right = default(:border_thickness_right) || @style.border_thickness
61
+ @style.border_thickness_top = default(:border_thickness_top) || @style.border_thickness
62
+ @style.border_thickness_bottom = default(:border_thickness_bottom) || @style.border_thickness
73
63
  end
74
64
 
75
65
  def set_border_color(color)
76
- @border_color = color
66
+ @style.border_color = color
77
67
 
78
- @border_color_left = default(:border_color_left) || @border_color
79
- @border_color_right = default(:border_color_right) || @border_color
80
- @border_color_top = default(:border_color_top) || @border_color
81
- @border_color_bottom = default(:border_color_bottom) || @border_color
68
+ @style.border_color_left = default(:border_color_left) || @style.border_color
69
+ @style.border_color_right = default(:border_color_right) || @style.border_color
70
+ @style.border_color_top = default(:border_color_top) || @style.border_color
71
+ @style.border_color_bottom = default(:border_color_bottom) || @style.border_color
82
72
 
83
- @border_canvas.color = color
73
+ @style.border_canvas.color = color
84
74
  end
85
75
 
86
76
  def set_padding(padding)
87
- @padding = padding
77
+ @style.padding = padding
88
78
 
89
- @padding_left = default(:padding_left) || @padding
90
- @padding_right = default(:padding_right) || @padding
91
- @padding_top = default(:padding_top) || @padding
92
- @padding_bottom = default(:padding_bottom) || @padding
79
+ @style.padding_left = default(:padding_left) || @style.padding
80
+ @style.padding_right = default(:padding_right) || @style.padding
81
+ @style.padding_top = default(:padding_top) || @style.padding
82
+ @style.padding_bottom = default(:padding_bottom) || @style.padding
93
83
  end
94
84
 
95
85
  def set_margin(margin)
96
- @margin = margin
86
+ @style.margin = margin
97
87
 
98
- @margin_left = default(:margin_left) || @margin
99
- @margin_right = default(:margin_right) || @margin
100
- @margin_top = default(:margin_top) || @margin
101
- @margin_bottom = default(:margin_bottom) || @margin
88
+ @style.margin_left = default(:margin_left) || @style.margin
89
+ @style.margin_right = default(:margin_right) || @style.margin
90
+ @style.margin_top = default(:margin_top) || @style.margin
91
+ @style.margin_bottom = default(:margin_bottom) || @style.margin
102
92
  end
103
93
 
104
94
  def default_events
@@ -145,8 +135,8 @@ module CyberarmEngine
145
135
  def draw
146
136
  return unless @visible
147
137
 
148
- @background_canvas.draw
149
- @border_canvas.draw
138
+ @style.background_canvas.draw
139
+ @style.border_canvas.draw
150
140
  render
151
141
  end
152
142
 
@@ -168,44 +158,44 @@ module CyberarmEngine
168
158
  end
169
159
 
170
160
  def width
171
- (@border_thickness_left + @padding_left) + @width + (@padding_right + @border_thickness_right)
161
+ if visible?
162
+ (@style.border_thickness_left + @style.padding_left) + @style.width + (@style.padding_right + @style.border_thickness_right)
163
+ else
164
+ 0
165
+ end
172
166
  end
173
167
 
174
168
  def outer_width
175
- @margin_left + width + @margin_right
169
+ @style.margin_left + width + @style.margin_right
176
170
  end
177
171
 
178
172
  def height
179
- (@border_thickness_top + @padding_top) + @height + (@padding_bottom + @border_thickness_bottom)
173
+ if visible?
174
+ (@style.border_thickness_top + @style.padding_top) + @style.height + (@style.padding_bottom + @style.border_thickness_bottom)
175
+ else
176
+ 0
177
+ end
180
178
  end
181
179
 
182
180
  def outer_height
183
- @margin_top + height + @margin_bottom
184
- end
185
-
186
- def style(hash)
187
- if hash
188
- @style.set(hash)
189
- else
190
- @style.hash
191
- end
181
+ @style.margin_top + height + @style.margin_bottom
192
182
  end
193
183
 
194
184
  def background=(_background)
195
- @background_canvas.background=(_background)
185
+ @style.background_canvas.background=(_background)
196
186
  update_background
197
187
  end
198
188
 
199
189
  def update_background
200
- @background_canvas.x = @x
201
- @background_canvas.y = @y
202
- @background_canvas.z = @z
203
- @background_canvas.width = width
204
- @background_canvas.height = height
190
+ @style.background_canvas.x = @x
191
+ @style.background_canvas.y = @y
192
+ @style.background_canvas.z = @z
193
+ @style.background_canvas.width = width
194
+ @style.background_canvas.height = height
205
195
 
206
- @background_canvas.update
196
+ @style.background_canvas.update
207
197
 
208
- @border_canvas.update
198
+ @style.border_canvas.update
209
199
  end
210
200
 
211
201
  def root
@@ -229,7 +219,6 @@ module CyberarmEngine
229
219
  end
230
220
 
231
221
  def reposition
232
- raise "#{self.class}#reposition was not overridden!"
233
222
  end
234
223
 
235
224
  def value
@@ -23,7 +23,11 @@ module CyberarmEngine
23
23
  end
24
24
 
25
25
  def render
26
- @image.draw(@border_thickness_left + @padding_left + @x, @border_thickness_top + @padding_top + @y, @z + 2, @scale_x, @scale_y) # TODO: Add color support?
26
+ @image.draw(
27
+ @style.border_thickness_left + @style.padding_left + @x,
28
+ @style.border_thickness_top + @style.padding_top + @y,
29
+ @z + 2,
30
+ @scale_x, @scale_y) # TODO: Add color support?
27
31
  end
28
32
 
29
33
  def clicked_left_mouse_button(sender, x, y)
@@ -31,14 +35,8 @@ module CyberarmEngine
31
35
  end
32
36
 
33
37
  def recalculate
34
- unless @visible
35
- @width = 0
36
- @height= 0
37
- return
38
- end
39
-
40
- @width = @image.width * @scale_x
41
- @height = @image.height * @scale_y
38
+ @style.width = @image.width * @scale_x
39
+ @style.height = @image.height * @scale_y
42
40
  end
43
41
 
44
42
  def value
@@ -17,17 +17,11 @@ module CyberarmEngine
17
17
  end
18
18
 
19
19
  def recalculate
20
- unless @visible
21
- @width = 0
22
- @height= 0
23
- return
24
- end
20
+ @style.width = @text.width.round
21
+ @style.height= @text.height.round
25
22
 
26
- @width = @text.width.round
27
- @height= @text.height.round
28
-
29
- @text.x = @border_thickness_left + @padding_left + @x
30
- @text.y = @border_thickness_top + @padding_top + @y
23
+ @text.x = @style.border_thickness_left + @style.padding_left + @x
24
+ @text.y = @style.border_thickness_top + @style.padding_top + @y
31
25
  @text.z = @z + 3
32
26
 
33
27
  update_background
@@ -1,15 +1,20 @@
1
1
  module CyberarmEngine
2
2
  class Style
3
- def initialize(hash)
3
+ def initialize(hash = {})
4
4
  @hash = hash
5
5
  end
6
6
 
7
- def hash
8
- @hash
9
- end
7
+ def method_missing(method, *args, &block)
8
+ if method.to_s.end_with?("=")
9
+ raise "Did not expect more than 1 argument" if args.size > 1
10
+ return @hash[method.to_s.sub("=", "").to_sym] = args.first
11
+
12
+ elsif args.size == 0
13
+ return @hash[method]
10
14
 
11
- def set(hash)
12
- @hash.merge!(hash)
15
+ else
16
+ raise ArgumentError, "Did not expect arguments"
17
+ end
13
18
  end
14
19
  end
15
20
  end
@@ -13,7 +13,7 @@ module CyberarmEngine
13
13
  raise "Error" unless self.class.ancestors.include?(CyberarmEngine::Element)
14
14
  _theme = THEME
15
15
  _theme = _theme.merge(options[:theme]) if options[:theme]
16
- options.delete(:theme)
16
+ _theme.delete(:theme) if options[:theme]
17
17
 
18
18
  hash = {}
19
19
  class_names = self.class.ancestors
@@ -38,13 +38,7 @@ module CyberarmEngine
38
38
  def recalculate
39
39
  super
40
40
 
41
- unless @visible
42
- @width = 0
43
- @height= 0
44
- return
45
- end
46
-
47
- @width = @text.textobject.text_width(@options[:checkmark])
41
+ @style.width = @text.textobject.text_width(@options[:checkmark])
48
42
  update_background
49
43
  end
50
44
 
@@ -1,4 +1,4 @@
1
1
  module CyberarmEngine
2
2
  NAME = "InDev"
3
- VERSION = "0.7.1"
3
+ VERSION = "0.8.0"
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cyberarm_engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cyberarm
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-06-17 00:00:00.000000000 Z
11
+ date: 2019-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gosu
@@ -129,7 +129,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
129
129
  - !ruby/object:Gem::Version
130
130
  version: '0'
131
131
  requirements: []
132
- rubygems_version: 3.0.3
132
+ rubygems_version: 3.0.4
133
133
  signing_key:
134
134
  specification_version: 4
135
135
  summary: Make games quickly and easily with gosu