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,100 +1,99 @@
1
- module CyberarmEngine
2
- class Element
3
- class Button < TextBlock
4
- def initialize(text_or_image, options = {}, block = nil)
5
- @image = nil
6
- @scale_x = 1
7
- @scale_y = 1
8
-
9
- @image = text_or_image if text_or_image.is_a?(Gosu::Image)
10
-
11
- super(text_or_image, options, block)
12
-
13
- @style.background_canvas.background = @style.background
14
- end
15
-
16
- def render
17
- if @image
18
- draw_image
19
- else
20
- draw_text
21
- end
22
- end
23
-
24
- def draw_image
25
- @image.draw(
26
- @style.border_thickness_left + @style.padding_left + @x,
27
- @style.border_thickness_top + @style.padding_top + @y,
28
- @z + 2,
29
- @scale_x, @scale_y, @text.color
30
- )
31
- end
32
-
33
- def draw_text
34
- @text.draw
35
- end
36
-
37
- def layout
38
- unless @enabled
39
- @style.background_canvas.background = @style.disabled[:background]
40
- @text.color = @style.disabled[:color]
41
- else
42
- @style.background_canvas.background = @style.background
43
- @text.color = @style.color
44
- end
45
-
46
- if @image
47
- @width = 0
48
- @height = 0
49
-
50
- _width = dimensional_size(@style.image_width, :width)
51
- _height = dimensional_size(@style.image_height, :height)
52
-
53
- if _width && _height
54
- @scale_x = _width.to_f / @image.width
55
- @scale_y = _height.to_f / @image.height
56
- elsif _width
57
- @scale_x = _width.to_f / @image.width
58
- @scale_y = @scale_x
59
- elsif _height
60
- @scale_y = _height.to_f / @image.height
61
- @scale_x = @scale_y
62
- else
63
- @scale_x = 1
64
- @scale_y = 1
65
- end
66
-
67
- @width = _width || @image.width.floor * @scale_x
68
- @height = _height || @image.height.floor * @scale_y
69
-
70
- update_background
71
- else
72
- super
73
- end
74
- end
75
-
76
- def value
77
- @image || super
78
- end
79
-
80
- def value=(value)
81
- if value.is_a?(Gosu::Image)
82
- @image = value
83
- else
84
- super
85
- end
86
-
87
- old_width = width
88
- old_height = height
89
-
90
- if old_width != width || old_height != height
91
- root.gui_state.request_recalculate
92
- else
93
- recalculate
94
- end
95
-
96
- publish(:changed, self.value)
97
- end
98
- end
99
- end
100
- end
1
+ module CyberarmEngine
2
+ class Element
3
+ class Button < TextBlock
4
+ def initialize(text_or_image, options = {}, block = nil)
5
+ @image = nil
6
+ @scale_x = 1
7
+ @scale_y = 1
8
+
9
+ @image = text_or_image if text_or_image.is_a?(Gosu::Image)
10
+
11
+ super(text_or_image, options, block)
12
+
13
+ @background_canvas.background = styled(:background)
14
+ end
15
+
16
+ def render
17
+ if @image
18
+ draw_image
19
+ else
20
+ draw_text
21
+ end
22
+ end
23
+
24
+ def draw_image
25
+ @image.draw(
26
+ styled(:border_thickness_left) + styled(:margin_left) + styled(:padding_left) + @x,
27
+ styled(:border_thickness_top) + styled(:margin_top) + styled(:padding_top) + @y,
28
+ @z + 2,
29
+ @scale_x, @scale_y, @text.color
30
+ )
31
+ end
32
+
33
+ def draw_text
34
+ @text.draw
35
+ end
36
+
37
+ def layout
38
+ @background_canvas.background = styled(:background)
39
+ @text.color = styled(:color)
40
+
41
+ if @image
42
+ @width = 0
43
+ @height = 0
44
+
45
+ _width = dimensional_size(styled(:image_width), :width)
46
+ _height = dimensional_size(styled(:image_height), :height)
47
+
48
+ if _width && _height
49
+ @scale_x = _width.to_f / @image.width
50
+ @scale_y = _height.to_f / @image.height
51
+ elsif _width
52
+ @scale_x = _width.to_f / @image.width
53
+ @scale_y = @scale_x
54
+ elsif _height
55
+ @scale_y = _height.to_f / @image.height
56
+ @scale_x = @scale_y
57
+ else
58
+ @scale_x = 1
59
+ @scale_y = 1
60
+ end
61
+
62
+ @width = _width || @image.width.floor * @scale_x
63
+ @height = _height || @image.height.floor * @scale_y
64
+
65
+ update_background
66
+ else
67
+ super
68
+ end
69
+ end
70
+
71
+ def value
72
+ @image || super
73
+ end
74
+
75
+ def value=(value)
76
+ old_value = self.value
77
+
78
+ if value.is_a?(Gosu::Image)
79
+ @image = value
80
+ else
81
+ super
82
+ end
83
+
84
+ old_width = width
85
+ old_height = height
86
+
87
+ if old_width != width || old_height != height
88
+ root.gui_state.request_recalculate
89
+ else
90
+ recalculate
91
+ end
92
+
93
+ publish(:changed, self.value) if value != old_value
94
+
95
+ self.value
96
+ end
97
+ end
98
+ end
99
+ end
@@ -1,54 +1,58 @@
1
- module CyberarmEngine
2
- class Element
3
- class CheckBox < Flow
4
- def initialize(text, options, block = nil)
5
- super(options, block)
6
- options[:toggled] = options[:checked]
7
-
8
- options[:parent] = self
9
- @toggle_button = ToggleButton.new(options)
10
-
11
- options[:parent] = self
12
- @label = TextBlock.new(text, options)
13
-
14
- @label.subscribe(:holding_left_mouse_button) do |sender, x, y|
15
- @toggle_button.left_mouse_button(sender, x, y)
16
- end
17
-
18
- @label.subscribe(:released_left_mouse_button) do |sender, x, y|
19
- @toggle_button.released_left_mouse_button(sender, x, y)
20
- end
21
-
22
- @label.subscribe(:clicked_left_mouse_button) do |sender, x, y|
23
- @toggle_button.clicked_left_mouse_button(sender, x, y)
24
- publish(:changed, @toggle_button.value)
25
- end
26
-
27
- @label.subscribe(:enter) do |sender|
28
- @toggle_button.enter(sender)
29
- end
30
-
31
- @label.subscribe(:leave) do |sender|
32
- @toggle_button.leave(sender)
33
- end
34
-
35
- add(@toggle_button)
36
- add(@label)
37
- end
38
-
39
- def text=(text)
40
- @label.text = text
41
- recalculate
42
- end
43
-
44
- def value
45
- @toggle_button.value
46
- end
47
-
48
- def value=(bool)
49
- @toggle_button.value = bool
50
- publish(:changed, @toggle_button.value)
51
- end
52
- end
53
- end
54
- end
1
+ module CyberarmEngine
2
+ class Element
3
+ class CheckBox < Flow
4
+ def initialize(text, options, block = nil)
5
+ super(options, block)
6
+ options[:toggled] = options[:checked]
7
+
8
+ options[:parent] = self
9
+ @toggle_button = ToggleButton.new(options)
10
+
11
+ options[:parent] = self
12
+ @label = TextBlock.new(text, options)
13
+
14
+ @label.subscribe(:holding_left_mouse_button) do |sender, x, y|
15
+ @toggle_button.left_mouse_button(sender, x, y)
16
+ end
17
+
18
+ @label.subscribe(:released_left_mouse_button) do |sender, x, y|
19
+ @toggle_button.released_left_mouse_button(sender, x, y)
20
+ end
21
+
22
+ @label.subscribe(:clicked_left_mouse_button) do |sender, x, y|
23
+ @toggle_button.clicked_left_mouse_button(sender, x, y)
24
+ publish(:changed, @toggle_button.value)
25
+ end
26
+
27
+ @label.subscribe(:enter) do |sender|
28
+ @toggle_button.enter(sender)
29
+ end
30
+
31
+ @label.subscribe(:leave) do |sender|
32
+ @toggle_button.leave(sender)
33
+ end
34
+
35
+ add(@toggle_button)
36
+ add(@label)
37
+ end
38
+
39
+ def text=(text)
40
+ @label.text = text
41
+ recalculate
42
+ end
43
+
44
+ def value
45
+ @toggle_button.value
46
+ end
47
+
48
+ def value=(bool)
49
+ old_value = self.value
50
+
51
+ @toggle_button.value = bool
52
+ publish(:changed, bool) if bool != old_value
53
+
54
+ bool
55
+ end
56
+ end
57
+ end
58
+ end