cyberarm_engine 0.19.0 → 0.19.1

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 (74) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +8 -8
  3. data/.rubocop.yml +7 -7
  4. data/.travis.yml +5 -5
  5. data/Gemfile +6 -6
  6. data/LICENSE.txt +21 -21
  7. data/README.md +74 -74
  8. data/Rakefile +10 -10
  9. data/bin/console +14 -14
  10. data/bin/setup +8 -8
  11. data/cyberarm_engine.gemspec +39 -39
  12. data/lib/cyberarm_engine/animator.rb +219 -219
  13. data/lib/cyberarm_engine/background.rb +179 -179
  14. data/lib/cyberarm_engine/background_nine_slice.rb +142 -142
  15. data/lib/cyberarm_engine/bounding_box.rb +150 -150
  16. data/lib/cyberarm_engine/builtin/intro_state.rb +130 -130
  17. data/lib/cyberarm_engine/cache/download_manager.rb +121 -121
  18. data/lib/cyberarm_engine/cache.rb +4 -4
  19. data/lib/cyberarm_engine/common.rb +113 -113
  20. data/lib/cyberarm_engine/config_file.rb +46 -46
  21. data/lib/cyberarm_engine/console/command.rb +157 -157
  22. data/lib/cyberarm_engine/console/commands/help_command.rb +43 -43
  23. data/lib/cyberarm_engine/console/subcommand.rb +99 -99
  24. data/lib/cyberarm_engine/console.rb +248 -248
  25. data/lib/cyberarm_engine/game_object.rb +248 -248
  26. data/lib/cyberarm_engine/game_state.rb +97 -97
  27. data/lib/cyberarm_engine/model/material.rb +21 -21
  28. data/lib/cyberarm_engine/model/model_object.rb +131 -131
  29. data/lib/cyberarm_engine/model/parser.rb +74 -74
  30. data/lib/cyberarm_engine/model/parsers/collada_parser.rb +138 -138
  31. data/lib/cyberarm_engine/model/parsers/wavefront_parser.rb +154 -154
  32. data/lib/cyberarm_engine/model.rb +212 -212
  33. data/lib/cyberarm_engine/model_cache.rb +31 -31
  34. data/lib/cyberarm_engine/opengl/light.rb +50 -50
  35. data/lib/cyberarm_engine/opengl/orthographic_camera.rb +46 -46
  36. data/lib/cyberarm_engine/opengl/perspective_camera.rb +38 -38
  37. data/lib/cyberarm_engine/opengl/renderer/bounding_box_renderer.rb +249 -249
  38. data/lib/cyberarm_engine/opengl/renderer/g_buffer.rb +164 -164
  39. data/lib/cyberarm_engine/opengl/renderer/opengl_renderer.rb +298 -298
  40. data/lib/cyberarm_engine/opengl/renderer/renderer.rb +22 -22
  41. data/lib/cyberarm_engine/opengl/shader.rb +406 -406
  42. data/lib/cyberarm_engine/opengl/texture.rb +69 -69
  43. data/lib/cyberarm_engine/opengl.rb +28 -28
  44. data/lib/cyberarm_engine/ray.rb +56 -56
  45. data/lib/cyberarm_engine/stats.rb +21 -21
  46. data/lib/cyberarm_engine/text.rb +197 -197
  47. data/lib/cyberarm_engine/timer.rb +23 -23
  48. data/lib/cyberarm_engine/transform.rb +296 -296
  49. data/lib/cyberarm_engine/ui/border_canvas.rb +102 -102
  50. data/lib/cyberarm_engine/ui/dsl.rb +139 -139
  51. data/lib/cyberarm_engine/ui/element.rb +488 -488
  52. data/lib/cyberarm_engine/ui/elements/button.rb +97 -97
  53. data/lib/cyberarm_engine/ui/elements/check_box.rb +54 -54
  54. data/lib/cyberarm_engine/ui/elements/container.rb +256 -256
  55. data/lib/cyberarm_engine/ui/elements/edit_box.rb +179 -179
  56. data/lib/cyberarm_engine/ui/elements/edit_line.rb +263 -263
  57. data/lib/cyberarm_engine/ui/elements/flow.rb +15 -15
  58. data/lib/cyberarm_engine/ui/elements/image.rb +72 -72
  59. data/lib/cyberarm_engine/ui/elements/list_box.rb +88 -82
  60. data/lib/cyberarm_engine/ui/elements/progress.rb +51 -51
  61. data/lib/cyberarm_engine/ui/elements/radio.rb +6 -6
  62. data/lib/cyberarm_engine/ui/elements/slider.rb +104 -104
  63. data/lib/cyberarm_engine/ui/elements/stack.rb +11 -11
  64. data/lib/cyberarm_engine/ui/elements/text_block.rb +162 -162
  65. data/lib/cyberarm_engine/ui/elements/toggle_button.rb +65 -65
  66. data/lib/cyberarm_engine/ui/event.rb +54 -54
  67. data/lib/cyberarm_engine/ui/gui_state.rb +256 -256
  68. data/lib/cyberarm_engine/ui/style.rb +49 -49
  69. data/lib/cyberarm_engine/ui/theme.rb +207 -207
  70. data/lib/cyberarm_engine/vector.rb +293 -293
  71. data/lib/cyberarm_engine/version.rb +4 -4
  72. data/lib/cyberarm_engine/window.rb +120 -120
  73. data/lib/cyberarm_engine.rb +71 -71
  74. metadata +3 -3
@@ -1,102 +1,102 @@
1
- module CyberarmEngine
2
- class BorderCanvas
3
- attr_reader :element, :top, :right, :bottom, :left
4
-
5
- def initialize(element:)
6
- @element = element
7
-
8
- @top = Background.new
9
- @right = Background.new
10
- @bottom = Background.new
11
- @left = Background.new
12
- end
13
-
14
- def color=(color)
15
- if color.is_a?(Numeric)
16
- @top.background = color
17
- @right.background = color
18
- @bottom.background = color
19
- @left.background = color
20
-
21
- elsif color.is_a?(Gosu::Color)
22
- @top.background = color
23
- @right.background = color
24
- @bottom.background = color
25
- @left.background = color
26
-
27
- elsif color.is_a?(Array)
28
- if color.size == 1
29
- color = color.first
30
-
31
- elsif color.size == 2
32
- @top.background = color.first
33
- @right.background = color.first
34
- @bottom.background = color.last
35
- @left.background = color.last
36
-
37
- elsif color.size == 4
38
- @top.background = color[0]
39
- @right.background = color[1]
40
- @bottom.background = color[2]
41
- @left.background = color[3]
42
- else
43
- raise ArgumentError, "color array was empty or had wrong number of elements (expected 2 or 4 elements)"
44
- end
45
-
46
- elsif color.is_a?(Hash)
47
- @top.background = color[:top]
48
- @right.background = color[:right]
49
- @bottom.background = color[:bottom]
50
- @left.background = color[:left]
51
- else
52
- raise ArgumentError, "color '#{color}' of type '#{color.class}' was not able to be processed"
53
- end
54
- end
55
-
56
- def draw
57
- @top.draw
58
- @right.draw
59
- @bottom.draw
60
- @left.draw
61
- end
62
-
63
- def update
64
- # TOP
65
- @top.x = @element.x # + @element.border_thickness_left
66
- @top.y = @element.y
67
- @top.z = @element.z
68
-
69
- @top.width = @element.width
70
- @top.height = @element.style.border_thickness_top
71
-
72
- # RIGHT
73
- @right.x = @element.x + @element.width
74
- @right.y = @element.y + @element.style.border_thickness_top
75
- @right.z = @element.z
76
-
77
- @right.width = -@element.style.border_thickness_right
78
- @right.height = @element.height - @element.style.border_thickness_top
79
-
80
- # BOTTOM
81
- @bottom.x = @element.x
82
- @bottom.y = @element.y + @element.height
83
- @bottom.z = @element.z
84
-
85
- @bottom.width = @element.width - @element.style.border_thickness_right
86
- @bottom.height = -@element.style.border_thickness_bottom
87
-
88
- # LEFT
89
- @left.x = @element.x
90
- @left.y = @element.y
91
- @left.z = @element.z
92
-
93
- @left.width = @element.style.border_thickness_left
94
- @left.height = @element.height - @element.style.border_thickness_bottom
95
-
96
- @top.update
97
- @right.update
98
- @bottom.update
99
- @left.update
100
- end
101
- end
102
- end
1
+ module CyberarmEngine
2
+ class BorderCanvas
3
+ attr_reader :element, :top, :right, :bottom, :left
4
+
5
+ def initialize(element:)
6
+ @element = element
7
+
8
+ @top = Background.new
9
+ @right = Background.new
10
+ @bottom = Background.new
11
+ @left = Background.new
12
+ end
13
+
14
+ def color=(color)
15
+ if color.is_a?(Numeric)
16
+ @top.background = color
17
+ @right.background = color
18
+ @bottom.background = color
19
+ @left.background = color
20
+
21
+ elsif color.is_a?(Gosu::Color)
22
+ @top.background = color
23
+ @right.background = color
24
+ @bottom.background = color
25
+ @left.background = color
26
+
27
+ elsif color.is_a?(Array)
28
+ if color.size == 1
29
+ color = color.first
30
+
31
+ elsif color.size == 2
32
+ @top.background = color.first
33
+ @right.background = color.first
34
+ @bottom.background = color.last
35
+ @left.background = color.last
36
+
37
+ elsif color.size == 4
38
+ @top.background = color[0]
39
+ @right.background = color[1]
40
+ @bottom.background = color[2]
41
+ @left.background = color[3]
42
+ else
43
+ raise ArgumentError, "color array was empty or had wrong number of elements (expected 2 or 4 elements)"
44
+ end
45
+
46
+ elsif color.is_a?(Hash)
47
+ @top.background = color[:top]
48
+ @right.background = color[:right]
49
+ @bottom.background = color[:bottom]
50
+ @left.background = color[:left]
51
+ else
52
+ raise ArgumentError, "color '#{color}' of type '#{color.class}' was not able to be processed"
53
+ end
54
+ end
55
+
56
+ def draw
57
+ @top.draw
58
+ @right.draw
59
+ @bottom.draw
60
+ @left.draw
61
+ end
62
+
63
+ def update
64
+ # TOP
65
+ @top.x = @element.x # + @element.border_thickness_left
66
+ @top.y = @element.y
67
+ @top.z = @element.z
68
+
69
+ @top.width = @element.width
70
+ @top.height = @element.style.border_thickness_top
71
+
72
+ # RIGHT
73
+ @right.x = @element.x + @element.width
74
+ @right.y = @element.y + @element.style.border_thickness_top
75
+ @right.z = @element.z
76
+
77
+ @right.width = -@element.style.border_thickness_right
78
+ @right.height = @element.height - @element.style.border_thickness_top
79
+
80
+ # BOTTOM
81
+ @bottom.x = @element.x
82
+ @bottom.y = @element.y + @element.height
83
+ @bottom.z = @element.z
84
+
85
+ @bottom.width = @element.width - @element.style.border_thickness_right
86
+ @bottom.height = -@element.style.border_thickness_bottom
87
+
88
+ # LEFT
89
+ @left.x = @element.x
90
+ @left.y = @element.y
91
+ @left.z = @element.z
92
+
93
+ @left.width = @element.style.border_thickness_left
94
+ @left.height = @element.height - @element.style.border_thickness_bottom
95
+
96
+ @top.update
97
+ @right.update
98
+ @bottom.update
99
+ @left.update
100
+ end
101
+ end
102
+ end
@@ -1,139 +1,139 @@
1
- module CyberarmEngine
2
- module DSL
3
- def flow(options = {}, &block)
4
- container(CyberarmEngine::Element::Flow, options, &block)
5
- end
6
-
7
- def stack(options = {}, &block)
8
- container(CyberarmEngine::Element::Stack, options, &block)
9
- end
10
-
11
- # TODO: Remove in version 0.16.0+
12
- def label(text, options = {}, &block)
13
- options[:parent] = element_parent
14
- options[:theme] = current_theme
15
-
16
- add_element(Element::TextBlock.new(text, options, block))
17
- end
18
-
19
- [
20
- "Banner",
21
- "Title",
22
- "Subtitle",
23
- "Tagline",
24
- "Caption",
25
- "Para",
26
- "Inscription",
27
- "Link"
28
- ].each do |const|
29
- define_method(:"#{const.downcase}") do |text, options = {}, &block|
30
- options[:parent] = element_parent
31
- options[:theme] = current_theme
32
-
33
- add_element(Element.const_get(const).new(text, options, block))
34
- end
35
- end
36
-
37
- def button(text, options = {}, &block)
38
- options[:parent] = element_parent
39
- options[:theme] = current_theme
40
-
41
- add_element(Element::Button.new(text, options, block) { block.call if block.is_a?(Proc) })
42
- end
43
-
44
- def list_box(options = {}, &block)
45
- options[:parent] = element_parent
46
- options[:theme] = current_theme
47
-
48
- add_element(Element::ListBox.new(options, block) { block.call if block.is_a?(Proc) })
49
- end
50
-
51
- def edit_line(text, options = {}, &block)
52
- options[:parent] = element_parent
53
- options[:theme] = current_theme
54
-
55
- add_element(Element::EditLine.new(text, options, block))
56
- end
57
-
58
- def edit_box(text, options = {}, &block)
59
- options[:parent] = element_parent
60
- options[:theme] = current_theme
61
-
62
- add_element(Element::EditBox.new(text, options, block))
63
- end
64
-
65
- def toggle_button(options = {}, &block)
66
- options[:parent] = element_parent
67
- options[:theme] = current_theme
68
-
69
- add_element(Element::ToggleButton.new(options, block))
70
- end
71
-
72
- def check_box(text, options = {}, &block)
73
- options[:parent] = element_parent
74
- options[:theme] = current_theme
75
-
76
- add_element(Element::CheckBox.new(text, options, block))
77
- end
78
-
79
- def image(path, options = {}, &block)
80
- options[:parent] = element_parent
81
- options[:theme] = current_theme
82
-
83
- add_element(Element::Image.new(path, options, block))
84
- end
85
-
86
- def progress(options = {}, &block)
87
- options[:parent] = element_parent
88
- options[:theme] = current_theme
89
-
90
- add_element(Element::Progress.new(options, block))
91
- end
92
-
93
- def slider(options = {}, &block)
94
- options[:parent] = element_parent
95
- options[:theme] = current_theme
96
-
97
- add_element(Element::Slider.new(options, block))
98
- end
99
-
100
- def background(color = Gosu::Color::NONE)
101
- element_parent.style.default[:background] = color
102
- end
103
-
104
- def theme(theme)
105
- element_parent.options[:theme] = theme
106
- end
107
-
108
- def current_theme
109
- element_parent.options[:theme]
110
- end
111
-
112
- private def add_element(element)
113
- element_parent.add(element)
114
-
115
- element
116
- end
117
-
118
- private def element_parent
119
- $__current_container__
120
- end
121
-
122
- private def container(klass, options = {}, &block)
123
- options[:parent] = element_parent
124
- options[:theme] = current_theme
125
-
126
- _container = klass.new(options, block)
127
-
128
- old_parent = element_parent
129
- $__current_container__ = _container
130
-
131
- _container.build
132
- _container.parent.add(_container)
133
-
134
- $__current_container__ = old_parent
135
-
136
- _container
137
- end
138
- end
139
- end
1
+ module CyberarmEngine
2
+ module DSL
3
+ def flow(options = {}, &block)
4
+ container(CyberarmEngine::Element::Flow, options, &block)
5
+ end
6
+
7
+ def stack(options = {}, &block)
8
+ container(CyberarmEngine::Element::Stack, options, &block)
9
+ end
10
+
11
+ # TODO: Remove in version 0.16.0+
12
+ def label(text, options = {}, &block)
13
+ options[:parent] = element_parent
14
+ options[:theme] = current_theme
15
+
16
+ add_element(Element::TextBlock.new(text, options, block))
17
+ end
18
+
19
+ [
20
+ "Banner",
21
+ "Title",
22
+ "Subtitle",
23
+ "Tagline",
24
+ "Caption",
25
+ "Para",
26
+ "Inscription",
27
+ "Link"
28
+ ].each do |const|
29
+ define_method(:"#{const.downcase}") do |text, options = {}, &block|
30
+ options[:parent] = element_parent
31
+ options[:theme] = current_theme
32
+
33
+ add_element(Element.const_get(const).new(text, options, block))
34
+ end
35
+ end
36
+
37
+ def button(text, options = {}, &block)
38
+ options[:parent] = element_parent
39
+ options[:theme] = current_theme
40
+
41
+ add_element(Element::Button.new(text, options, block) { block.call if block.is_a?(Proc) })
42
+ end
43
+
44
+ def list_box(options = {}, &block)
45
+ options[:parent] = element_parent
46
+ options[:theme] = current_theme
47
+
48
+ add_element(Element::ListBox.new(options, block) { block.call if block.is_a?(Proc) })
49
+ end
50
+
51
+ def edit_line(text, options = {}, &block)
52
+ options[:parent] = element_parent
53
+ options[:theme] = current_theme
54
+
55
+ add_element(Element::EditLine.new(text, options, block))
56
+ end
57
+
58
+ def edit_box(text, options = {}, &block)
59
+ options[:parent] = element_parent
60
+ options[:theme] = current_theme
61
+
62
+ add_element(Element::EditBox.new(text, options, block))
63
+ end
64
+
65
+ def toggle_button(options = {}, &block)
66
+ options[:parent] = element_parent
67
+ options[:theme] = current_theme
68
+
69
+ add_element(Element::ToggleButton.new(options, block))
70
+ end
71
+
72
+ def check_box(text, options = {}, &block)
73
+ options[:parent] = element_parent
74
+ options[:theme] = current_theme
75
+
76
+ add_element(Element::CheckBox.new(text, options, block))
77
+ end
78
+
79
+ def image(path, options = {}, &block)
80
+ options[:parent] = element_parent
81
+ options[:theme] = current_theme
82
+
83
+ add_element(Element::Image.new(path, options, block))
84
+ end
85
+
86
+ def progress(options = {}, &block)
87
+ options[:parent] = element_parent
88
+ options[:theme] = current_theme
89
+
90
+ add_element(Element::Progress.new(options, block))
91
+ end
92
+
93
+ def slider(options = {}, &block)
94
+ options[:parent] = element_parent
95
+ options[:theme] = current_theme
96
+
97
+ add_element(Element::Slider.new(options, block))
98
+ end
99
+
100
+ def background(color = Gosu::Color::NONE)
101
+ element_parent.style.default[:background] = color
102
+ end
103
+
104
+ def theme(theme)
105
+ element_parent.options[:theme] = theme
106
+ end
107
+
108
+ def current_theme
109
+ element_parent.options[:theme]
110
+ end
111
+
112
+ private def add_element(element)
113
+ element_parent.add(element)
114
+
115
+ element
116
+ end
117
+
118
+ private def element_parent
119
+ $__current_container__
120
+ end
121
+
122
+ private def container(klass, options = {}, &block)
123
+ options[:parent] = element_parent
124
+ options[:theme] = current_theme
125
+
126
+ _container = klass.new(options, block)
127
+
128
+ old_parent = element_parent
129
+ $__current_container__ = _container
130
+
131
+ _container.build
132
+ _container.parent.add(_container)
133
+
134
+ $__current_container__ = old_parent
135
+
136
+ _container
137
+ end
138
+ end
139
+ end