cyberarm_engine 0.16.0 → 0.19.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.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -4
  3. data/assets/textures/logo.png +0 -0
  4. data/cyberarm_engine.gemspec +2 -2
  5. data/lib/cyberarm_engine/animator.rb +172 -9
  6. data/lib/cyberarm_engine/background_nine_slice.rb +51 -34
  7. data/lib/cyberarm_engine/builtin/intro_state.rb +131 -0
  8. data/lib/cyberarm_engine/common.rb +19 -2
  9. data/lib/cyberarm_engine/console/command.rb +158 -0
  10. data/lib/cyberarm_engine/console/commands/help_command.rb +43 -0
  11. data/lib/cyberarm_engine/console/subcommand.rb +100 -0
  12. data/lib/cyberarm_engine/console.rb +248 -0
  13. data/lib/cyberarm_engine/game_state.rb +5 -0
  14. data/lib/cyberarm_engine/model.rb +6 -1
  15. data/lib/cyberarm_engine/opengl/perspective_camera.rb +2 -2
  16. data/lib/cyberarm_engine/opengl/renderer/opengl_renderer.rb +9 -0
  17. data/lib/cyberarm_engine/opengl/texture.rb +1 -1
  18. data/lib/cyberarm_engine/text.rb +82 -45
  19. data/lib/cyberarm_engine/ui/dsl.rb +3 -2
  20. data/lib/cyberarm_engine/ui/element.rb +236 -47
  21. data/lib/cyberarm_engine/ui/elements/button.rb +0 -63
  22. data/lib/cyberarm_engine/ui/elements/check_box.rb +4 -1
  23. data/lib/cyberarm_engine/ui/elements/container.rb +65 -35
  24. data/lib/cyberarm_engine/ui/elements/edit_line.rb +20 -13
  25. data/lib/cyberarm_engine/ui/elements/text_block.rb +13 -7
  26. data/lib/cyberarm_engine/ui/event.rb +9 -2
  27. data/lib/cyberarm_engine/ui/gui_state.rb +37 -4
  28. data/lib/cyberarm_engine/ui/style.rb +14 -3
  29. data/lib/cyberarm_engine/ui/theme.rb +26 -1
  30. data/lib/cyberarm_engine/version.rb +1 -1
  31. data/lib/cyberarm_engine/window.rb +7 -1
  32. data/lib/cyberarm_engine.rb +11 -4
  33. metadata +12 -7
  34. data/lib/cyberarm_engine/ui/elements/label.rb +0 -156
@@ -4,19 +4,20 @@ module CyberarmEngine
4
4
  include Common
5
5
 
6
6
  attr_accessor :stroke_color, :fill_color
7
- attr_reader :children, :gui_state, :scroll_x, :scroll_y
7
+ attr_reader :children, :gui_state, :scroll_position
8
8
 
9
9
  def initialize(options = {}, block = nil)
10
10
  @gui_state = options.delete(:gui_state)
11
11
  super
12
12
 
13
- @scroll_x = 0
14
- @scroll_y = 0
15
- @scroll_speed = 10
13
+ @scroll_position = Vector.new(0, 0)
14
+ @scroll_speed = 40
16
15
 
17
16
  @text_color = options[:color]
18
17
 
19
18
  @children = []
19
+
20
+ event(:window_size_changed)
20
21
  end
21
22
 
22
23
  def build
@@ -44,34 +45,28 @@ module CyberarmEngine
44
45
  root.gui_state.request_recalculate
45
46
  end
46
47
 
48
+ def apend(&block)
49
+ old_container = $__current_container__
50
+
51
+ $__current_container__ = self
52
+ block.call(self) if block
53
+
54
+ $__current_container__ = old_container
55
+
56
+ root.gui_state.request_recalculate
57
+ end
58
+
47
59
  def render
48
60
  Gosu.clip_to(@x, @y, width, height) do
49
61
  @children.each(&:draw)
50
62
  end
63
+ end
64
+
65
+ def debug_draw
66
+ super
51
67
 
52
- if false # DEBUG
53
- Gosu.flush
54
-
55
- Gosu.draw_line(
56
- x, y, Gosu::Color::RED,
57
- x + outer_width, y, Gosu::Color::RED,
58
- Float::INFINITY
59
- )
60
- Gosu.draw_line(
61
- x + outer_width, y, Gosu::Color::RED,
62
- x + outer_width, y + outer_height, Gosu::Color::RED,
63
- Float::INFINITY
64
- )
65
- Gosu.draw_line(
66
- x + outer_width, y + outer_height, Gosu::Color::RED,
67
- x, y + outer_height, Gosu::Color::RED,
68
- Float::INFINITY
69
- )
70
- Gosu.draw_line(
71
- x, outer_height, Gosu::Color::RED,
72
- x, y, Gosu::Color::RED,
73
- Float::INFINITY
74
- )
68
+ @children.each do |child|
69
+ child.debug_draw
75
70
  end
76
71
  end
77
72
 
@@ -80,6 +75,8 @@ module CyberarmEngine
80
75
  end
81
76
 
82
77
  def hit_element?(x, y)
78
+ return unless hit?(x, y)
79
+
83
80
  @children.reverse_each do |child|
84
81
  next unless child.visible?
85
82
 
@@ -98,6 +95,8 @@ module CyberarmEngine
98
95
 
99
96
  def recalculate
100
97
  @current_position = Vector.new(@style.margin_left + @style.padding_left, @style.margin_top + @style.padding_top)
98
+ @current_position += @scroll_position
99
+
101
100
  return unless visible?
102
101
 
103
102
  Stats.increment(:gui_recalculations_last_frame, 1)
@@ -189,15 +188,46 @@ module CyberarmEngine
189
188
  @current_position.y += element.outer_height
190
189
  end
191
190
 
192
- # def mouse_wheel_up(sender, x, y)
193
- # @children.each {|c| c.y -= @scroll_speed}
194
- # @children.each {|c| c.recalculate}
195
- # end
191
+ def mouse_wheel_up(sender, x, y)
192
+ return unless @style.scroll
196
193
 
197
- # def mouse_wheel_down(sender, x, y)
198
- # @children.each {|c| c.y += @scroll_speed}
199
- # @children.each {|c| c.recalculate}
200
- # end
194
+ if @scroll_position.y < 0
195
+ @scroll_position.y += @scroll_speed
196
+ @scroll_position.y = 0 if @scroll_position.y > 0
197
+ recalculate
198
+
199
+ return :handled
200
+ end
201
+ end
202
+
203
+ def mouse_wheel_down(sender, x, y)
204
+ return unless @style.scroll
205
+
206
+ return unless height < scroll_height
207
+
208
+ if @scroll_position.y.abs < max_scroll_height
209
+ @scroll_position.y -= @scroll_speed
210
+ @scroll_position.y = -max_scroll_height if @scroll_position.y.abs > max_scroll_height
211
+ recalculate
212
+
213
+ return :handled
214
+ end
215
+ end
216
+
217
+ def scroll_top
218
+ @scroll_position.y
219
+ end
220
+
221
+ def scroll_top=(n)
222
+ n = 0 if n <= 0
223
+ @scroll_position.y = -n
224
+
225
+ if max_scroll_height.positive?
226
+ @scroll_position.y = -max_scroll_height if @scroll_position.y.abs > max_scroll_height
227
+ else
228
+ @scroll_position.y = 0
229
+ end
230
+ end
201
231
 
202
232
  def value
203
233
  @children.map { |c| c.class }.join(", ")
@@ -59,6 +59,8 @@ module CyberarmEngine
59
59
  end
60
60
 
61
61
  def update
62
+ @style_event = :active if @focus
63
+
62
64
  @text.text = if @type == :password
63
65
  default(:password_character) * @text_input.text.length
64
66
  else
@@ -67,6 +69,8 @@ module CyberarmEngine
67
69
 
68
70
  if @last_text_value != value
69
71
  @last_text_value = value
72
+ @show_caret = true
73
+ @caret_last_interval = Gosu.milliseconds
70
74
 
71
75
  publish(:changed, value)
72
76
  end
@@ -192,28 +196,27 @@ module CyberarmEngine
192
196
  :handled
193
197
  end
194
198
 
195
- def enter(_sender)
196
- if @focus
197
- @style.background_canvas.background = default(:active, :background)
198
- @text.color = default(:active, :color)
199
- else
200
- @style.background_canvas.background = default(:hover, :background)
201
- @text.color = default(:hover, :color)
202
- end
199
+ def focus(sender)
200
+ super
201
+
202
+ window.text_input = @text_input
203
+ @text_input.caret_pos = @text_input.selection_start = @text_input.text.length
203
204
 
204
205
  :handled
205
206
  end
206
207
 
207
- def leave(sender)
208
- super unless @focus
208
+ def enter(sender)
209
+ _has_focus = @focus
210
+
211
+ super
212
+
213
+ @focus = _has_focus
209
214
 
210
215
  :handled
211
216
  end
212
217
 
213
218
  def blur(_sender)
214
- @focus = false
215
- @style.background_canvas.background = default(:background)
216
- @text.color = default(:color)
219
+ super
217
220
  window.text_input = nil
218
221
 
219
222
  :handled
@@ -251,6 +254,10 @@ module CyberarmEngine
251
254
  def value
252
255
  @text_input.text
253
256
  end
257
+
258
+ def value=(string)
259
+ @text_input.text = string
260
+ end
254
261
  end
255
262
  end
256
263
  end
@@ -8,7 +8,10 @@ module CyberarmEngine
8
8
  text, font: @options[:font], z: @z, color: @options[:color],
9
9
  size: @options[:text_size], shadow: @options[:text_shadow],
10
10
  shadow_size: @options[:text_shadow_size],
11
- shadow_color: @options[:text_shadow_color]
11
+ shadow_color: @options[:text_shadow_color],
12
+ border: @options[:text_border],
13
+ border_size: @options[:text_border_size],
14
+ border_color: @options[:text_border_color]
12
15
  )
13
16
 
14
17
  @raw_text = text
@@ -18,13 +21,13 @@ module CyberarmEngine
18
21
  @text.draw
19
22
  end
20
23
 
21
- def clicked_left_mouse_button(_sender, _x, _y)
22
- @block&.call(self) if @enabled
23
-
24
- # return :handled
25
- end
26
-
27
24
  def recalculate
25
+ unless @enabled
26
+ @text.color = @style.disabled[:color]
27
+ else
28
+ @text.color = @style.color
29
+ end
30
+
28
31
  @width = 0
29
32
  @height = 0
30
33
 
@@ -152,5 +155,8 @@ module CyberarmEngine
152
155
 
153
156
  class ToolTip < TextBlock
154
157
  end
158
+
159
+ class Link < TextBlock
160
+ end
155
161
  end
156
162
  end
@@ -15,12 +15,19 @@ module CyberarmEngine
15
15
 
16
16
  return unless enabled?
17
17
 
18
- return :handled if respond_to?(event) && (send(event, self, *args) == :handled)
18
+ was_handled = false
19
+
20
+ was_handled = true if respond_to?(event) && (send(event, self, *args) == :handled)
19
21
 
20
22
  @event_handler[event].reverse_each do |handler|
21
- return :handled if handler.call(self, *args) == :handled
23
+ if handler.call(self, *args) == :handled
24
+ was_handled = true
25
+ break
26
+ end
22
27
  end
23
28
 
29
+ return :handled if was_handled
30
+
24
31
  parent.publish(event, *args) if parent
25
32
  nil
26
33
  end
@@ -26,12 +26,15 @@ module CyberarmEngine
26
26
  @dragging_element = nil
27
27
  @pending_recalculate_request = false
28
28
 
29
- @tip = Element::ToolTip.new("", parent: @root_container, z: Float::INFINITY)
30
29
  @menu = nil
31
30
  @min_drag_distance = 0
32
31
  @mouse_pos = Vector.new
33
32
  end
34
33
 
34
+ def post_setup
35
+ @tip = Element::ToolTip.new("", parent: @root_container, z: Float::INFINITY, theme: current_theme)
36
+ end
37
+
35
38
  # throws :blur event to focused element and sets GuiState focused element
36
39
  # Does NOT throw :focus event at element or set element as focused
37
40
  def focus=(element)
@@ -55,6 +58,12 @@ module CyberarmEngine
55
58
  Gosu.flush
56
59
  @tip.draw
57
60
  end
61
+
62
+ if defined?(GUI_DEBUG)
63
+ Gosu.flush
64
+
65
+ @root_container.debug_draw
66
+ end
58
67
  end
59
68
 
60
69
  def update
@@ -66,6 +75,13 @@ module CyberarmEngine
66
75
  @pending_recalculate_request = false
67
76
  end
68
77
 
78
+ if @pending_focus_request
79
+ @pending_focus_request = false
80
+
81
+ self.focus = @pending_focus_element
82
+ @pending_focus_element.publish(:focus)
83
+ end
84
+
69
85
  @menu&.update
70
86
  super
71
87
 
@@ -87,10 +103,10 @@ module CyberarmEngine
87
103
  if Vector.new(window.mouse_x, window.mouse_y) == @last_mouse_pos
88
104
  if @mouse_over && (Gosu.milliseconds - @mouse_moved_at) > tool_tip_delay
89
105
  @tip.value = @mouse_over.tip if @mouse_over
90
- @tip.x = window.mouse_x - @tip.width / 2
106
+ @tip.x = window.mouse_x
91
107
  @tip.x = 0 if @tip.x < 0
92
108
  @tip.x = window.width - @tip.width if @tip.x + @tip.width > window.width
93
- @tip.y = window.mouse_y - @tip.height
109
+ @tip.y = window.mouse_y - (@tip.height + 5)
94
110
  @tip.y = 0 if @tip.y < 0
95
111
  @tip.y = window.height - @tip.height if @tip.y + @tip.height > window.height
96
112
  @tip.update
@@ -105,7 +121,10 @@ module CyberarmEngine
105
121
  @last_mouse_pos = Vector.new(window.mouse_x, window.mouse_y)
106
122
  @mouse_pos = @last_mouse_pos.clone
107
123
 
108
- request_recalculate if @active_width != window.width || @active_height != window.height
124
+ if @active_width != window.width || @active_height != window.height
125
+ request_recalculate
126
+ @root_container.publish(:window_size_changed)
127
+ end
109
128
 
110
129
  @active_width = window.width
111
130
  @active_height = window.height
@@ -212,6 +231,11 @@ module CyberarmEngine
212
231
  @pending_recalculate_request = true
213
232
  end
214
233
 
234
+ def request_focus(element)
235
+ @pending_focus_request = true
236
+ @pending_focus_element = element
237
+ end
238
+
215
239
  def show_menu(list_box)
216
240
  @menu = list_box
217
241
  end
@@ -219,5 +243,14 @@ module CyberarmEngine
219
243
  def hide_menu
220
244
  @menu = nil
221
245
  end
246
+
247
+ def to_s
248
+ # "#{self.class} children=#{@children.map { |c| c.to_s }}"
249
+ @root_container.to_s
250
+ end
251
+
252
+ def inspect
253
+ to_s
254
+ end
222
255
  end
223
256
  end
@@ -17,8 +17,20 @@ end
17
17
 
18
18
  module CyberarmEngine
19
19
  class Style
20
+ attr_reader :hash
21
+
20
22
  def initialize(hash = {})
21
- @hash = Marshal.load(Marshal.dump(hash))
23
+ h = Marshal.load(Marshal.dump(hash))
24
+
25
+ h[:default] = {}
26
+
27
+ h.each do |key, value|
28
+ next if value.is_a?(Hash)
29
+
30
+ h[:default][key] = value
31
+ end
32
+
33
+ @hash = h
22
34
  end
23
35
 
24
36
  def method_missing(method, *args)
@@ -27,9 +39,8 @@ module CyberarmEngine
27
39
 
28
40
  @hash[method.to_s.sub("=", "").to_sym] = args.first
29
41
 
30
- elsif args.size == 0
42
+ elsif args.empty?
31
43
  @hash[method]
32
-
33
44
  else
34
45
  raise ArgumentError, "Did not expect arguments"
35
46
  end
@@ -64,6 +64,10 @@ module CyberarmEngine
64
64
  border_radius: 0
65
65
  },
66
66
 
67
+ Container: { # < Element (Base class for Stack and Flow)
68
+ debug_color: Gosu::Color::YELLOW
69
+ },
70
+
67
71
  Button: { # < Label
68
72
  margin: 1,
69
73
  padding: 4,
@@ -111,10 +115,14 @@ module CyberarmEngine
111
115
  text_size: 28,
112
116
  text_wrap: :word_wrap, # :word_wrap, :break_word, :none
113
117
  text_shadow: false,
118
+ text_border: false,
114
119
  text_align: :left,
115
120
  font: "Arial",
116
121
  margin: 0,
117
- padding: 2
122
+ padding: 2,
123
+ disabled: {
124
+ color: Gosu::Color.rgb(175, 175, 175),
125
+ }
118
126
  },
119
127
 
120
128
  Banner: { # < TextBlock
@@ -155,11 +163,28 @@ module CyberarmEngine
155
163
  border_color: 0xffaaaaaa,
156
164
  background: 0xff404040
157
165
  },
166
+ Link: { # < TextBlock
167
+ color: Gosu::Color::BLUE,
168
+ border_thickness: 1,
169
+ border_bottom_color: Gosu::Color::BLUE,
170
+ hover: {
171
+ color: 0xff_ff00ff,
172
+ border_bottom_color: 0xff_ff00ff
173
+ },
174
+ active: {
175
+ color: 0xff_ff0000,
176
+ border_bottom_color: 0xff_ff0000
177
+ }
178
+ },
158
179
 
159
180
  ToggleButton: { # < Button
160
181
  checkmark: "√"
161
182
  },
162
183
 
184
+ CheckBox: { # < Flow
185
+ text_wrap: :none
186
+ },
187
+
163
188
  Progress: { # < Element
164
189
  width: 250,
165
190
  height: 36,
@@ -1,4 +1,4 @@
1
1
  module CyberarmEngine
2
2
  NAME = "InDev".freeze
3
- VERSION = "0.16.0".freeze
3
+ VERSION = "0.19.0".freeze
4
4
  end
@@ -77,10 +77,12 @@ module CyberarmEngine
77
77
  if klass.instance_of?(klass.class) && defined?(klass.options)
78
78
  @states << klass
79
79
  klass.setup if options[:setup]
80
+ klass.post_setup if options[:setup]
80
81
  else
81
82
  @states << klass.new(options) if child_of?(klass, GameState)
82
83
  @states << klass.new if child_of?(klass, Element::Container)
83
84
  current_state.setup if current_state.instance_of?(klass) && options[:setup]
85
+ current_state.post_setup if current_state.instance_of?(klass) && options[:setup]
84
86
  end
85
87
  end
86
88
 
@@ -93,7 +95,7 @@ module CyberarmEngine
93
95
  end
94
96
 
95
97
  def previous_state
96
- if @states.size > 1 && state = @states[@states.size - 2]
98
+ if @states.size > 1 && (state = @states[@states.size - 2])
97
99
  state
98
100
  end
99
101
  end
@@ -102,6 +104,10 @@ module CyberarmEngine
102
104
  @states.pop
103
105
  end
104
106
 
107
+ def shift_state
108
+ @states.shift
109
+ end
110
+
105
111
  # Sourced from https://gist.github.com/ippa/662583
106
112
  def draw_circle(cx, cy, r, z = 9999, color = Gosu::Color::GREEN, step = 10)
107
113
  0.step(360, step) do |a1|
@@ -1,9 +1,8 @@
1
1
  CYBERARM_ENGINE_ROOT_PATH = File.expand_path("..", __dir__)
2
2
 
3
- begin
4
- require File.expand_path("../../ffi-gosu/lib/gosu", File.dirname(__FILE__))
5
- rescue LoadError => e
6
- pp e
3
+ if ARGV.join.include?("--ffi-gosu")
4
+ require File.expand_path("../../ffi-gosu/lib/gosu", __dir__)
5
+ else
7
6
  require "gosu"
8
7
  end
9
8
  require "json"
@@ -24,12 +23,18 @@ require_relative "cyberarm_engine/vector"
24
23
  require_relative "cyberarm_engine/transform"
25
24
  require_relative "cyberarm_engine/ray"
26
25
  require_relative "cyberarm_engine/background"
26
+ require_relative "cyberarm_engine/background_nine_slice"
27
27
  require_relative "cyberarm_engine/animator"
28
28
 
29
29
  require_relative "cyberarm_engine/text"
30
30
  require_relative "cyberarm_engine/timer"
31
31
  require_relative "cyberarm_engine/config_file"
32
32
 
33
+ require_relative "cyberarm_engine/console"
34
+ require_relative "cyberarm_engine/console/command"
35
+ require_relative "cyberarm_engine/console/subcommand"
36
+ require_relative "cyberarm_engine/console/commands/help_command"
37
+
33
38
  require_relative "cyberarm_engine/ui/dsl"
34
39
 
35
40
  require_relative "cyberarm_engine/ui/theme"
@@ -62,3 +67,5 @@ require_relative "cyberarm_engine/model/model_object"
62
67
  require_relative "cyberarm_engine/model/parser"
63
68
  require_relative "cyberarm_engine/model/parsers/wavefront_parser"
64
69
  require_relative "cyberarm_engine/model/parsers/collada_parser" if defined?(Nokogiri)
70
+
71
+ require_relative "cyberarm_engine/builtin/intro_state"
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.16.0
4
+ version: 0.19.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cyberarm
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-18 00:00:00.000000000 Z
11
+ date: 2021-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: clipboard
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.0.0
47
+ version: '1.1'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 1.0.0
54
+ version: '1.1'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: gosu_more_drawables
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.16'
75
+ version: '2.2'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '1.16'
82
+ version: '2.2'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: minitest
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -123,6 +123,7 @@ files:
123
123
  - README.md
124
124
  - Rakefile
125
125
  - assets/textures/default.png
126
+ - assets/textures/logo.png
126
127
  - bin/console
127
128
  - bin/setup
128
129
  - cyberarm_engine.gemspec
@@ -131,10 +132,15 @@ files:
131
132
  - lib/cyberarm_engine/background.rb
132
133
  - lib/cyberarm_engine/background_nine_slice.rb
133
134
  - lib/cyberarm_engine/bounding_box.rb
135
+ - lib/cyberarm_engine/builtin/intro_state.rb
134
136
  - lib/cyberarm_engine/cache.rb
135
137
  - lib/cyberarm_engine/cache/download_manager.rb
136
138
  - lib/cyberarm_engine/common.rb
137
139
  - lib/cyberarm_engine/config_file.rb
140
+ - lib/cyberarm_engine/console.rb
141
+ - lib/cyberarm_engine/console/command.rb
142
+ - lib/cyberarm_engine/console/commands/help_command.rb
143
+ - lib/cyberarm_engine/console/subcommand.rb
138
144
  - lib/cyberarm_engine/game_object.rb
139
145
  - lib/cyberarm_engine/game_state.rb
140
146
  - lib/cyberarm_engine/model.rb
@@ -169,7 +175,6 @@ files:
169
175
  - lib/cyberarm_engine/ui/elements/edit_line.rb
170
176
  - lib/cyberarm_engine/ui/elements/flow.rb
171
177
  - lib/cyberarm_engine/ui/elements/image.rb
172
- - lib/cyberarm_engine/ui/elements/label.rb
173
178
  - lib/cyberarm_engine/ui/elements/list_box.rb
174
179
  - lib/cyberarm_engine/ui/elements/progress.rb
175
180
  - lib/cyberarm_engine/ui/elements/radio.rb