cyberarm_engine 0.25.0 → 0.30.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 (118) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +9 -8
  3. data/.rubocop.yml +7 -7
  4. data/.travis.yml +5 -5
  5. data/Gemfile +6 -6
  6. data/Gemfile.lock +37 -25
  7. data/LICENSE.txt +21 -21
  8. data/README.md +74 -74
  9. data/Rakefile +10 -10
  10. data/assets/shaders/fragment/g_buffer.glsl +30 -30
  11. data/assets/shaders/fragment/lighting.glsl +115 -115
  12. data/assets/shaders/include/light_struct.glsl +11 -11
  13. data/assets/shaders/include/material_struct.glsl +16 -16
  14. data/assets/shaders/vertex/g_buffer.glsl +28 -28
  15. data/assets/shaders/vertex/lighting.glsl +24 -24
  16. data/assets/textures/ui/circle.png +0 -0
  17. data/assets/textures/ui/circle_small.png +0 -0
  18. data/assets/textures/ui/rounded.png +0 -0
  19. data/assets/textures/ui/rounded_bottom.png +0 -0
  20. data/assets/textures/ui/rounded_left.png +0 -0
  21. data/assets/textures/ui/rounded_left_bottom.png +0 -0
  22. data/assets/textures/ui/rounded_left_top.png +0 -0
  23. data/assets/textures/ui/rounded_right.png +0 -0
  24. data/assets/textures/ui/rounded_right_bottom.png +0 -0
  25. data/assets/textures/ui/rounded_right_top.png +0 -0
  26. data/assets/textures/ui/rounded_small.png +0 -0
  27. data/assets/textures/ui/rounded_tiny.png +0 -0
  28. data/assets/textures/ui/rounded_top.png +0 -0
  29. data/assets/textures/ui/square.png +0 -0
  30. data/bin/console +14 -14
  31. data/bin/setup +8 -8
  32. data/cyberarm_engine.gemspec +35 -36
  33. data/lib/cyberarm_engine/animator.rb +219 -219
  34. data/lib/cyberarm_engine/background.rb +156 -158
  35. data/lib/cyberarm_engine/background_image.rb +93 -93
  36. data/lib/cyberarm_engine/background_nine_slice.rb +182 -142
  37. data/lib/cyberarm_engine/bounding_box.rb +150 -150
  38. data/lib/cyberarm_engine/builtin/intro_state.rb +130 -130
  39. data/lib/cyberarm_engine/cache/download_manager.rb +123 -123
  40. data/lib/cyberarm_engine/cache.rb +4 -4
  41. data/lib/cyberarm_engine/common.rb +133 -131
  42. data/lib/cyberarm_engine/config_file.rb +46 -46
  43. data/lib/cyberarm_engine/console/command.rb +157 -157
  44. data/lib/cyberarm_engine/console/commands/help_command.rb +43 -43
  45. data/lib/cyberarm_engine/console/subcommand.rb +99 -99
  46. data/lib/cyberarm_engine/console.rb +248 -248
  47. data/lib/cyberarm_engine/event_bus.rb +39 -0
  48. data/lib/cyberarm_engine/game_object.rb +244 -244
  49. data/lib/cyberarm_engine/game_state.rb +134 -124
  50. data/lib/cyberarm_engine/gosu_ext/draw_arc.rb +111 -111
  51. data/lib/cyberarm_engine/gosu_ext/draw_circle.rb +30 -30
  52. data/lib/cyberarm_engine/gosu_ext/draw_path.rb +17 -17
  53. data/lib/cyberarm_engine/model/material.rb +21 -21
  54. data/lib/cyberarm_engine/model/mesh.rb +131 -131
  55. data/lib/cyberarm_engine/model/parser.rb +74 -74
  56. data/lib/cyberarm_engine/model/parsers/collada_parser.rb +138 -138
  57. data/lib/cyberarm_engine/model/parsers/wavefront_parser.rb +154 -154
  58. data/lib/cyberarm_engine/model.rb +216 -216
  59. data/lib/cyberarm_engine/model_cache.rb +31 -31
  60. data/lib/cyberarm_engine/notification.rb +82 -82
  61. data/lib/cyberarm_engine/notification_manager.rb +241 -241
  62. data/lib/cyberarm_engine/opengl/light.rb +52 -52
  63. data/lib/cyberarm_engine/opengl/orthographic_camera.rb +46 -46
  64. data/lib/cyberarm_engine/opengl/perspective_camera.rb +41 -41
  65. data/lib/cyberarm_engine/opengl/renderer/bounding_box_renderer.rb +249 -249
  66. data/lib/cyberarm_engine/opengl/renderer/g_buffer.rb +167 -167
  67. data/lib/cyberarm_engine/opengl/renderer/opengl_renderer.rb +307 -307
  68. data/lib/cyberarm_engine/opengl/renderer/renderer.rb +33 -33
  69. data/lib/cyberarm_engine/opengl/shader.rb +408 -408
  70. data/lib/cyberarm_engine/opengl/texture.rb +69 -69
  71. data/lib/cyberarm_engine/opengl.rb +53 -53
  72. data/lib/cyberarm_engine/pathfinding/graph.rb +64 -0
  73. data/lib/cyberarm_engine/pathfinding/graph_search.rb +6 -0
  74. data/lib/cyberarm_engine/pathfinding/graph_searches/astar_search.rb +6 -0
  75. data/lib/cyberarm_engine/pathfinding/graph_searches/breadth_first_search.rb +27 -0
  76. data/lib/cyberarm_engine/pathfinding/graph_searches/dijkstra_search.rb +6 -0
  77. data/lib/cyberarm_engine/pathfinding/graphs/grid.rb +52 -0
  78. data/lib/cyberarm_engine/ray.rb +56 -56
  79. data/lib/cyberarm_engine/result.rb +19 -0
  80. data/lib/cyberarm_engine/stats.rb +200 -200
  81. data/lib/cyberarm_engine/text.rb +288 -260
  82. data/lib/cyberarm_engine/timer.rb +27 -23
  83. data/lib/cyberarm_engine/transform.rb +296 -296
  84. data/lib/cyberarm_engine/trees/aabb_node.rb +126 -126
  85. data/lib/cyberarm_engine/trees/aabb_tree.rb +55 -55
  86. data/lib/cyberarm_engine/trees/aabb_tree_debug.rb +29 -29
  87. data/lib/cyberarm_engine/ui/border_canvas.rb +102 -102
  88. data/lib/cyberarm_engine/ui/dialog.rb +24 -0
  89. data/lib/cyberarm_engine/ui/dsl.rb +170 -142
  90. data/lib/cyberarm_engine/ui/element.rb +664 -662
  91. data/lib/cyberarm_engine/ui/elements/button.rb +99 -100
  92. data/lib/cyberarm_engine/ui/elements/check_box.rb +58 -54
  93. data/lib/cyberarm_engine/ui/elements/container.rb +413 -407
  94. data/lib/cyberarm_engine/ui/elements/edit_box.rb +200 -179
  95. data/lib/cyberarm_engine/ui/elements/edit_line.rb +299 -297
  96. data/lib/cyberarm_engine/ui/elements/flow.rb +15 -15
  97. data/lib/cyberarm_engine/ui/elements/image.rb +78 -72
  98. data/lib/cyberarm_engine/ui/elements/list_box.rb +79 -79
  99. data/lib/cyberarm_engine/ui/elements/menu.rb +27 -27
  100. data/lib/cyberarm_engine/ui/elements/menu_item.rb +6 -6
  101. data/lib/cyberarm_engine/ui/elements/progress.rb +95 -93
  102. data/lib/cyberarm_engine/ui/elements/radio.rb +6 -6
  103. data/lib/cyberarm_engine/ui/elements/slider.rb +111 -107
  104. data/lib/cyberarm_engine/ui/elements/stack.rb +11 -11
  105. data/lib/cyberarm_engine/ui/elements/text_block.rb +236 -222
  106. data/lib/cyberarm_engine/ui/elements/toggle_button.rb +71 -67
  107. data/lib/cyberarm_engine/ui/elements/widget.rb +45 -0
  108. data/lib/cyberarm_engine/ui/event.rb +54 -54
  109. data/lib/cyberarm_engine/ui/gui_state.rb +402 -326
  110. data/lib/cyberarm_engine/ui/page.rb +39 -0
  111. data/lib/cyberarm_engine/ui/style.rb +94 -61
  112. data/lib/cyberarm_engine/ui/theme.rb +237 -225
  113. data/lib/cyberarm_engine/vector.rb +312 -312
  114. data/lib/cyberarm_engine/version.rb +4 -4
  115. data/lib/cyberarm_engine/window.rb +234 -195
  116. data/lib/cyberarm_engine.rb +88 -76
  117. data/mrbgem.rake +29 -29
  118. metadata +30 -5
@@ -1,142 +1,170 @@
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
- def menu(options = {}, &block)
12
- container(CyberarmEngine::Element::Menu, options, &block)
13
- end
14
-
15
- [
16
- "Banner",
17
- "Title",
18
- "Subtitle",
19
- "Tagline",
20
- "Caption",
21
- "Para",
22
- "Inscription",
23
- "Link"
24
- ].each do |const|
25
- define_method(:"#{const.downcase}") do |text, options = {}, &block|
26
- options[:parent] ||= element_parent
27
- options[:theme] ||= current_theme
28
-
29
- add_element(Element.const_get(const).new(text, options, block))
30
- end
31
- end
32
-
33
- def button(text, options = {}, &block)
34
- options[:parent] ||= element_parent
35
- options[:theme] ||= current_theme
36
-
37
- add_element(Element::Button.new(text, options, block) { block.call if block.is_a?(Proc) })
38
- end
39
-
40
- def list_box(options = {}, &block)
41
- options[:parent] ||= element_parent
42
- options[:theme] ||= current_theme
43
-
44
- add_element(Element::ListBox.new(options, block) { block.call if block.is_a?(Proc) })
45
- end
46
-
47
- def menu_item(text, options = {}, &block)
48
- options[:parent] ||= element_parent
49
- options[:theme] ||= current_theme
50
-
51
- add_element(Element::MenuItem.new(text, options, block) { block.call if block.is_a?(Proc) })
52
- end
53
-
54
- def edit_line(text, options = {}, &block)
55
- options[:parent] ||= element_parent
56
- options[:theme] ||= current_theme
57
-
58
- add_element(Element::EditLine.new(text, options, block))
59
- end
60
-
61
- def edit_box(text, options = {}, &block)
62
- options[:parent] ||= element_parent
63
- options[:theme] ||= current_theme
64
-
65
- add_element(Element::EditBox.new(text, options, block))
66
- end
67
-
68
- def toggle_button(options = {}, &block)
69
- options[:parent] ||= element_parent
70
- options[:theme] ||= current_theme
71
-
72
- add_element(Element::ToggleButton.new(options, block))
73
- end
74
-
75
- def check_box(text, options = {}, &block)
76
- options[:parent] ||= element_parent
77
- options[:theme] ||= current_theme
78
-
79
- add_element(Element::CheckBox.new(text, options, block))
80
- end
81
-
82
- def image(path, options = {}, &block)
83
- options[:parent] ||= element_parent
84
- options[:theme] ||= current_theme
85
-
86
- add_element(Element::Image.new(path, options, block))
87
- end
88
-
89
- def progress(options = {}, &block)
90
- options[:parent] ||= element_parent
91
- options[:theme] ||= current_theme
92
-
93
- add_element(Element::Progress.new(options, block))
94
- end
95
-
96
- def slider(options = {}, &block)
97
- options[:parent] ||= element_parent
98
- options[:theme] ||= current_theme
99
-
100
- add_element(Element::Slider.new(options, block))
101
- end
102
-
103
- def background(color = Gosu::Color::NONE)
104
- element_parent.style.default[:background] = color
105
- end
106
-
107
- def theme(theme)
108
- element_parent.options[:theme] ||= theme
109
- end
110
-
111
- def current_theme
112
- element_parent.options[:theme]
113
- end
114
-
115
- private def add_element(element)
116
- element_parent.add(element)
117
-
118
- element
119
- end
120
-
121
- private def element_parent
122
- CyberarmEngine::Element::Container.current_container
123
- end
124
-
125
- private def container(klass, options = {}, &block)
126
- options[:parent] ||= element_parent
127
- options[:theme] ||= current_theme
128
-
129
- _container = klass.new(options, block)
130
-
131
- old_parent = element_parent
132
- CyberarmEngine::Element::Container.current_container = _container
133
-
134
- _container.build
135
- _container.parent.add(_container) unless _container.is_a?(CyberarmEngine::Element::Menu)
136
-
137
- CyberarmEngine::Element::Container.current_container = old_parent
138
-
139
- _container
140
- end
141
- end
142
- end
1
+ module CyberarmEngine
2
+ module DSL
3
+ def every(milliseconds, &block)
4
+ element_parent.root.gui_state.add_timer(
5
+ CyberarmEngine::Timer.new(milliseconds, true, &block)
6
+ )
7
+ end
8
+
9
+ def after(milliseconds, &block)
10
+ element_parent.root.gui_state.add_timer(
11
+ CyberarmEngine::Timer.new(milliseconds, false, &block)
12
+ )
13
+ end
14
+
15
+ def flow(options = {}, &block)
16
+ container(CyberarmEngine::Element::Flow, options, &block)
17
+ end
18
+
19
+ def stack(options = {}, &block)
20
+ container(CyberarmEngine::Element::Stack, options, &block)
21
+ end
22
+
23
+ def widget(options = {}, &block)
24
+ container(CyberarmEngine::Element::Widget, options, &block)
25
+ end
26
+
27
+ def menu(options = {}, &block)
28
+ container(CyberarmEngine::Element::Menu, options, &block)
29
+ end
30
+
31
+ [
32
+ "Banner",
33
+ "Title",
34
+ "Subtitle",
35
+ "Tagline",
36
+ "Caption",
37
+ "Para",
38
+ "Inscription",
39
+ "Link"
40
+ ].each do |const|
41
+ define_method(:"#{const.downcase}") do |text, options = {}, &block|
42
+ options[:parent] ||= element_parent
43
+ options[:theme] ||= current_theme
44
+
45
+ add_element(Element.const_get(const).new(text, options, block))
46
+ end
47
+ end
48
+
49
+ def button(text, options = {}, &block)
50
+ options[:parent] ||= element_parent
51
+ options[:theme] ||= current_theme
52
+
53
+ add_element(Element::Button.new(text, options, block) { block.call if block.is_a?(Proc) })
54
+ end
55
+
56
+ def list_box(options = {}, &block)
57
+ options[:parent] ||= element_parent
58
+ options[:theme] ||= current_theme
59
+
60
+ add_element(Element::ListBox.new(options, block) { block.call if block.is_a?(Proc) })
61
+ end
62
+
63
+ def menu_item(text, options = {}, &block)
64
+ options[:parent] ||= element_parent
65
+ options[:theme] ||= current_theme
66
+
67
+ add_element(Element::MenuItem.new(text, options, block) { block.call if block.is_a?(Proc) })
68
+ end
69
+
70
+ def edit_line(text, options = {}, &block)
71
+ options[:parent] ||= element_parent
72
+ options[:theme] ||= current_theme
73
+
74
+ add_element(Element::EditLine.new(text, options, block))
75
+ end
76
+
77
+ def edit_box(text, options = {}, &block)
78
+ options[:parent] ||= element_parent
79
+ options[:theme] ||= current_theme
80
+
81
+ add_element(Element::EditBox.new(text, options, block))
82
+ end
83
+
84
+ def toggle_button(options = {}, &block)
85
+ options[:parent] ||= element_parent
86
+ options[:theme] ||= current_theme
87
+
88
+ add_element(Element::ToggleButton.new(options, block))
89
+ end
90
+
91
+ def check_box(text, options = {}, &block)
92
+ options[:parent] ||= element_parent
93
+ options[:theme] ||= current_theme
94
+
95
+ add_element(Element::CheckBox.new(text, options, block))
96
+ end
97
+
98
+ def image(path, options = {}, &block)
99
+ options[:parent] ||= element_parent
100
+ options[:theme] ||= current_theme
101
+
102
+ add_element(Element::Image.new(path, options, block))
103
+ end
104
+
105
+ def progress(options = {}, &block)
106
+ options[:parent] ||= element_parent
107
+ options[:theme] ||= current_theme
108
+
109
+ add_element(Element::Progress.new(options, block))
110
+ end
111
+
112
+ def slider(options = {}, &block)
113
+ options[:parent] ||= element_parent
114
+ options[:theme] ||= current_theme
115
+
116
+ add_element(Element::Slider.new(options, block))
117
+ end
118
+
119
+ def page(klass, options = {})
120
+ element_parent.root.gui_state.page(klass, options)
121
+ end
122
+
123
+ def current_page
124
+ element_parent.root.gui_state.current_page
125
+ end
126
+
127
+ def dialog(klass, options = {})
128
+ element_parent.root.gui_state.window.push_state(klass, options)
129
+ end
130
+
131
+ def background(color = Gosu::Color::NONE)
132
+ element_parent.style.background = color
133
+ end
134
+
135
+ def theme(theme)
136
+ element_parent.options[:theme] ||= theme
137
+ end
138
+
139
+ def current_theme
140
+ element_parent.options[:theme]
141
+ end
142
+
143
+ private def add_element(element)
144
+ element_parent.add(element)
145
+
146
+ element
147
+ end
148
+
149
+ private def element_parent
150
+ CyberarmEngine::Element::Container.current_container
151
+ end
152
+
153
+ private def container(klass, options = {}, &block)
154
+ options[:parent] ||= element_parent
155
+ options[:theme] ||= current_theme
156
+
157
+ _container = klass.new(options, block)
158
+
159
+ old_parent = element_parent
160
+ CyberarmEngine::Element::Container.current_container = _container
161
+
162
+ _container.build
163
+ _container.parent.add(_container) unless _container.is_a?(CyberarmEngine::Element::Menu)
164
+
165
+ CyberarmEngine::Element::Container.current_container = old_parent
166
+
167
+ _container
168
+ end
169
+ end
170
+ end