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,195 +1,234 @@
1
- module CyberarmEngine
2
- class Window < Gosu::Window
3
- include Common
4
-
5
- IMAGES = {}
6
- SAMPLES = {}
7
- SONGS = {}
8
-
9
- attr_accessor :show_cursor, :show_stats_plotter
10
- attr_writer :exit_on_opengl_error
11
- attr_reader :last_frame_time, :delta_time, :states
12
-
13
- def self.now
14
- Gosu.milliseconds
15
- end
16
-
17
- def self.dt
18
- instance.dt
19
- end
20
-
21
- def self.instance=(window)
22
- raise ArgumentError, "Expected window to be a subclass of CyberarmEngine::Window, got: #{window.class}" unless window.is_a?(CyberarmEngine::Window)
23
-
24
- @@instance = window
25
- end
26
-
27
- def self.instance
28
- @@instance
29
- end
30
-
31
- def initialize(width: 800, height: 600, fullscreen: false, update_interval: 1000.0 / 60, resizable: false, borderless: false)
32
- @show_cursor = false
33
- @has_focus = false
34
- @show_stats_plotter = false
35
-
36
- super(width, height, fullscreen: fullscreen, update_interval: update_interval, resizable: resizable, borderless: borderless)
37
- Window.instance = self
38
-
39
- @last_frame_time = Gosu.milliseconds - 1
40
- @current_frame_time = Gosu.milliseconds
41
- @delta_time = @last_frame_time
42
- self.caption = "CyberarmEngine #{CyberarmEngine::VERSION} #{Gosu.user_languages.join(', ')}"
43
-
44
- @states = []
45
- @exit_on_opengl_error = false
46
- preload_default_shaders if respond_to?(:preload_default_shaders)
47
- @stats_plotter = Stats::StatsPlotter.new(2, 28) # FIXME: Make positioning easy
48
-
49
- setup
50
- end
51
-
52
- def setup
53
- end
54
-
55
- def draw
56
- Stats.frame.start_timing(:draw)
57
-
58
- current_state&.draw
59
- Stats.frame.start_timing(:engine_stats_renderer)
60
- @stats_plotter&.draw if @show_stats_plotter
61
- Stats.frame.end_timing(:engine_stats_renderer)
62
-
63
- Stats.frame.end_timing(:draw)
64
- Stats.frame.start_timing(:interframe_sleep)
65
- end
66
-
67
- def update
68
- # Gosu calls update() then (optionally) draw(),
69
- # so always end last frame and start next frame when update() is called.
70
- Stats.frame&.end_timing(:interframe_sleep)
71
- Stats.end_frame
72
-
73
- Stats.new_frame
74
-
75
- @delta_time = (Gosu.milliseconds - @current_frame_time) * 0.001
76
-
77
- @last_frame_time = Gosu.milliseconds - @current_frame_time
78
- @current_frame_time = Gosu.milliseconds
79
-
80
- Stats.frame.start_timing(:update)
81
- current_state&.update
82
- Stats.frame.end_timing(:update)
83
-
84
- Stats.frame.start_timing(:interframe_sleep) unless needs_redraw?
85
- end
86
-
87
- def needs_cursor?
88
- @show_cursor
89
- end
90
-
91
- def needs_redraw?
92
- current_state ? current_state.needs_redraw? : true
93
- end
94
-
95
- def drop(filename)
96
- current_state&.drop(filename)
97
- end
98
-
99
- def gamepad_connected(index)
100
- current_state&.gamepad_connected(index)
101
- end
102
-
103
- def gamepad_disconnected(index)
104
- current_state&.gamepad_disconnected(index)
105
- end
106
-
107
- def gain_focus
108
- @has_focus = true
109
-
110
- current_state&.gain_focus
111
- end
112
-
113
- def lose_focus
114
- @has_focus = false
115
-
116
- current_state&.lose_focus
117
- end
118
-
119
- def button_down(id)
120
- super
121
- current_state&.button_down(id)
122
- end
123
-
124
- def button_up(id)
125
- super
126
- current_state&.button_up(id)
127
- end
128
-
129
- def close
130
- current_state ? current_state.close : super
131
- end
132
-
133
- def dt
134
- @last_frame_time / 1000.0
135
- end
136
-
137
- def aspect_ratio
138
- width / height.to_f
139
- end
140
-
141
- def exit_on_opengl_error?
142
- @exit_on_opengl_error
143
- end
144
-
145
- def push_state(klass, options = {})
146
- options = { setup: true }.merge(options)
147
-
148
- if klass.instance_of?(klass.class) && klass.respond_to?(:options)
149
- @states << klass
150
- klass.setup if options[:setup]
151
- klass.post_setup if options[:setup]
152
- else
153
- @states << klass.new(options) if child_of?(klass, GameState)
154
- @states << klass.new if child_of?(klass, Element::Container)
155
- current_state.setup if current_state.instance_of?(klass) && options[:setup]
156
- current_state.post_setup if current_state.instance_of?(klass) && options[:setup]
157
- end
158
- end
159
-
160
- private def child_of?(input, klass)
161
- return false unless input
162
-
163
- input.ancestors.detect { |c| c == klass }
164
- end
165
-
166
- def current_state
167
- @states.last
168
- end
169
-
170
- def pop_state
171
- @states.pop
172
-
173
- current_state.request_repaint if current_state&.is_a?(GuiState)
174
- end
175
-
176
- def shift_state
177
- @states.shift
178
-
179
- current_state.request_repaint if current_state&.is_a?(GuiState)
180
- end
181
-
182
- def has_focus?
183
- @has_focus
184
- end
185
-
186
- # Sourced from https://gist.github.com/ippa/662583
187
- def draw_circle(cx, cy, r, z = 9999, color = Gosu::Color::GREEN, step = 10)
188
- 0.step(360, step) do |a1|
189
- a2 = a1 + step
190
- draw_line(cx + Gosu.offset_x(a1, r), cy + Gosu.offset_y(a1, r), color, cx + Gosu.offset_x(a2, r),
191
- cy + Gosu.offset_y(a2, r), color, z)
192
- end
193
- end
194
- end
195
- end
1
+ module CyberarmEngine
2
+ class Window < Gosu::Window
3
+ include Common
4
+
5
+ IMAGES = {}
6
+ SAMPLES = {}
7
+ SONGS = {}
8
+
9
+ FixedUpdateProperties = Data.define(:fixed_timestep, :fixed_timestep_int_ms, :max_timestep)
10
+ FixedUpdate = Struct.new(:milliseconds, :accumulator, :interpolation, :alpha)
11
+
12
+ attr_accessor :show_cursor, :show_stats_plotter
13
+ attr_writer :exit_on_opengl_error
14
+ attr_reader :last_frame_time, :delta_time, :states
15
+
16
+ def self.now
17
+ Gosu.milliseconds
18
+ end
19
+
20
+ def self.dt
21
+ instance.dt
22
+ end
23
+
24
+ def self.instance=(window)
25
+ raise ArgumentError, "Expected window to be a subclass of CyberarmEngine::Window, got: #{window.class}" unless window.is_a?(CyberarmEngine::Window)
26
+
27
+ @@instance = window
28
+ end
29
+
30
+ def self.instance
31
+ @@instance
32
+ end
33
+
34
+ def initialize(width: 800, height: 600, fullscreen: false, update_interval: 1000.0 / 60, resizable: false, borderless: false, fixed_update_timestep: 1.0 / 125, fixed_update_timestep_int_ms: 8, fixed_max_timestep: 1.0 / 60)
35
+ @show_cursor = false
36
+ @has_focus = false
37
+ @show_stats_plotter = false
38
+
39
+ super(width, height, fullscreen: fullscreen, update_interval: update_interval, resizable: resizable, borderless: borderless)
40
+ Window.instance = self
41
+
42
+ @last_frame_time = Gosu.milliseconds - 1
43
+ @current_frame_time = Gosu.milliseconds
44
+ @delta_time = @last_frame_time
45
+ self.caption = "CyberarmEngine #{CyberarmEngine::VERSION} #{Gosu.user_languages.join(', ')}"
46
+
47
+ @states = []
48
+ @exit_on_opengl_error = false
49
+ preload_default_shaders if respond_to?(:preload_default_shaders)
50
+ @stats_plotter = Stats::StatsPlotter.new(2, 28) # FIXME: Make positioning easy
51
+
52
+ @fixed_timestep_data = FixedUpdateProperties.new(1.0 / 125, 8, 1.0 / 60)
53
+ @fixed_update = FixedUpdate.new(0, 0.0, 0.0, 1.0)
54
+
55
+ setup
56
+ end
57
+
58
+ def setup
59
+ end
60
+
61
+ def draw
62
+ Stats.frame.start_timing(:draw)
63
+
64
+ current_state&.draw
65
+ Stats.frame.start_timing(:engine_stats_renderer)
66
+ @stats_plotter&.draw if @show_stats_plotter
67
+ Stats.frame.end_timing(:engine_stats_renderer)
68
+
69
+ Stats.frame.end_timing(:draw)
70
+ Stats.frame.start_timing(:interframe_sleep)
71
+ end
72
+
73
+ def update
74
+ # Gosu calls update() then (optionally) draw(),
75
+ # so always end last frame and start next frame when update() is called.
76
+ Stats.frame&.end_timing(:interframe_sleep)
77
+ Stats.end_frame
78
+
79
+ Stats.new_frame
80
+
81
+ @delta_time = (Gosu.milliseconds - @current_frame_time) * 0.001
82
+
83
+ @last_frame_time = Gosu.milliseconds - @current_frame_time
84
+ @current_frame_time = Gosu.milliseconds
85
+
86
+ Stats.frame.start_timing(:update)
87
+ current_state&.update
88
+ Stats.frame.start_timing(:fixed_update)
89
+ fixed_update
90
+ Stats.frame.end_timing(:fixed_update)
91
+ Stats.frame.end_timing(:update)
92
+
93
+ Stats.frame.start_timing(:interframe_sleep) unless needs_redraw?
94
+ end
95
+
96
+ def fixed_update
97
+ @delta_time = @fixed_timestep_data.max_timestep if @delta_time > @fixed_timestep_data.max_timestep
98
+ @fixed_update.accumulator += @delta_time
99
+
100
+ while @fixed_update.accumulator >= @fixed_timestep_data.fixed_timestep
101
+ @fixed_update.accumulator -= @fixed_timestep_data.fixed_timestep
102
+
103
+ @fixed_update.alpha = @fixed_update.accumulator / @fixed_timestep_data.fixed_timestep
104
+
105
+ @fixed_update.milliseconds += @fixed_timestep_data.fixed_timestep_int_ms
106
+ current_state&.fixed_update(@fixed_timestep_data.fixed_timestep)
107
+ end
108
+ end
109
+
110
+ def fixed_update_milliseconds
111
+ @fixed_update.milliseconds
112
+ end
113
+
114
+ def fixed_update_accumulator
115
+ @fixed_update.accumulator
116
+ end
117
+
118
+ def fixed_update_interpolation
119
+ @fixed_update.interpolation
120
+ end
121
+
122
+ def fixed_update_alpha
123
+ @fixed_update.alpha
124
+ end
125
+
126
+ def needs_cursor?
127
+ @show_cursor
128
+ end
129
+
130
+ def needs_redraw?
131
+ current_state ? current_state.needs_redraw? : true
132
+ end
133
+
134
+ def drop(filename)
135
+ current_state&.drop(filename)
136
+ end
137
+
138
+ def gamepad_connected(index)
139
+ current_state&.gamepad_connected(index)
140
+ end
141
+
142
+ def gamepad_disconnected(index)
143
+ current_state&.gamepad_disconnected(index)
144
+ end
145
+
146
+ def gain_focus
147
+ @has_focus = true
148
+
149
+ current_state&.gain_focus
150
+ end
151
+
152
+ def lose_focus
153
+ @has_focus = false
154
+
155
+ current_state&.lose_focus
156
+ end
157
+
158
+ def button_down(id)
159
+ super
160
+ current_state&.button_down(id)
161
+ end
162
+
163
+ def button_up(id)
164
+ super
165
+ current_state&.button_up(id)
166
+ end
167
+
168
+ def close
169
+ current_state ? current_state.close : super
170
+ end
171
+
172
+ def dt
173
+ @last_frame_time / 1000.0
174
+ end
175
+
176
+ def aspect_ratio
177
+ width / height.to_f
178
+ end
179
+
180
+ def exit_on_opengl_error?
181
+ @exit_on_opengl_error
182
+ end
183
+
184
+ def push_state(klass, options = {})
185
+ options = { setup: true }.merge(options)
186
+
187
+ if klass.instance_of?(klass.class) && klass.respond_to?(:options)
188
+ @states << klass
189
+ klass.setup if options[:setup]
190
+ klass.post_setup if options[:setup]
191
+ else
192
+ @states << klass.new(options) if child_of?(klass, GameState)
193
+ @states << klass.new if child_of?(klass, Element::Container)
194
+ current_state.setup if current_state.instance_of?(klass) && options[:setup]
195
+ current_state.post_setup if current_state.instance_of?(klass) && options[:setup]
196
+ end
197
+ end
198
+
199
+ private def child_of?(input, klass)
200
+ return false unless input
201
+
202
+ input.ancestors.detect { |c| c == klass }
203
+ end
204
+
205
+ def current_state
206
+ @states.last
207
+ end
208
+
209
+ def pop_state
210
+ @states.pop
211
+
212
+ current_state.request_repaint if current_state&.is_a?(GuiState)
213
+ end
214
+
215
+ def shift_state
216
+ @states.shift
217
+
218
+ current_state.request_repaint if current_state&.is_a?(GuiState)
219
+ end
220
+
221
+ def has_focus?
222
+ @has_focus
223
+ end
224
+
225
+ # Sourced from https://gist.github.com/ippa/662583
226
+ def draw_circle(cx, cy, r, z = 9999, color = Gosu::Color::GREEN, step = 10)
227
+ 0.step(360, step) do |a1|
228
+ a2 = a1 + step
229
+ draw_line(cx + Gosu.offset_x(a1, r), cy + Gosu.offset_y(a1, r), color, cx + Gosu.offset_x(a2, r),
230
+ cy + Gosu.offset_y(a2, r), color, z)
231
+ end
232
+ end
233
+ end
234
+ end
@@ -1,76 +1,88 @@
1
- CYBERARM_ENGINE_ROOT_PATH = File.expand_path("..", __dir__)
2
-
3
- if ARGV.join.include?("--ffi-gosu")
4
- require File.expand_path("../../ffi-gosu/lib/gosu", __dir__)
5
- else
6
- require "gosu"
7
- end
8
- require "json"
9
-
10
- require_relative "cyberarm_engine/version"
11
- require_relative "cyberarm_engine/stats"
12
-
13
- require_relative "cyberarm_engine/common"
14
-
15
- require_relative "cyberarm_engine/gosu_ext/draw_arc"
16
- require_relative "cyberarm_engine/gosu_ext/draw_circle"
17
- require_relative "cyberarm_engine/gosu_ext/draw_path"
18
-
19
- require_relative "cyberarm_engine/notification"
20
- require_relative "cyberarm_engine/notification_manager"
21
-
22
- require_relative "cyberarm_engine/game_object"
23
- require_relative "cyberarm_engine/window"
24
-
25
- require_relative "cyberarm_engine/bounding_box"
26
- require_relative "cyberarm_engine/vector"
27
- require_relative "cyberarm_engine/transform"
28
- require_relative "cyberarm_engine/ray"
29
- require_relative "cyberarm_engine/background"
30
- require_relative "cyberarm_engine/background_nine_slice"
31
- require_relative "cyberarm_engine/background_image"
32
- require_relative "cyberarm_engine/animator"
33
-
34
- require_relative "cyberarm_engine/text"
35
- require_relative "cyberarm_engine/timer"
36
- require_relative "cyberarm_engine/config_file"
37
-
38
- require_relative "cyberarm_engine/console"
39
- require_relative "cyberarm_engine/console/command"
40
- require_relative "cyberarm_engine/console/subcommand"
41
- require_relative "cyberarm_engine/console/commands/help_command"
42
-
43
- require_relative "cyberarm_engine/ui/dsl"
44
-
45
- require_relative "cyberarm_engine/ui/theme"
46
- require_relative "cyberarm_engine/ui/event"
47
- require_relative "cyberarm_engine/ui/style"
48
- require_relative "cyberarm_engine/ui/border_canvas"
49
- require_relative "cyberarm_engine/ui/element"
50
- require_relative "cyberarm_engine/ui/elements/text_block"
51
- require_relative "cyberarm_engine/ui/elements/button"
52
- require_relative "cyberarm_engine/ui/elements/toggle_button"
53
- require_relative "cyberarm_engine/ui/elements/list_box"
54
- require_relative "cyberarm_engine/ui/elements/edit_line"
55
- require_relative "cyberarm_engine/ui/elements/edit_box"
56
- require_relative "cyberarm_engine/ui/elements/image"
57
- require_relative "cyberarm_engine/ui/elements/container"
58
- require_relative "cyberarm_engine/ui/elements/flow"
59
- require_relative "cyberarm_engine/ui/elements/stack"
60
- require_relative "cyberarm_engine/ui/elements/check_box"
61
- require_relative "cyberarm_engine/ui/elements/radio"
62
- require_relative "cyberarm_engine/ui/elements/progress"
63
- require_relative "cyberarm_engine/ui/elements/slider"
64
- require_relative "cyberarm_engine/ui/elements/menu"
65
- require_relative "cyberarm_engine/ui/elements/menu_item"
66
-
67
- require_relative "cyberarm_engine/game_state"
68
- require_relative "cyberarm_engine/ui/gui_state"
69
-
70
- require_relative "cyberarm_engine/builtin/intro_state"
71
-
72
- if RUBY_ENGINE != "mruby" && defined?(StackProf)
73
- at_exit do
74
- StackProf.results("./_stackprof.dmp")
75
- end
76
- end
1
+ CYBERARM_ENGINE_ROOT_PATH = File.expand_path("..", __dir__)
2
+
3
+ if ARGV.join.include?("--ffi-gosu")
4
+ require File.expand_path("../../ffi-gosu/lib/gosu", __dir__)
5
+ else
6
+ require "gosu"
7
+ end
8
+ require "json"
9
+
10
+ require_relative "cyberarm_engine/version"
11
+ require_relative "cyberarm_engine/stats"
12
+ require_relative "cyberarm_engine/result"
13
+ require_relative "cyberarm_engine/event_bus"
14
+
15
+ require_relative "cyberarm_engine/common"
16
+
17
+ require_relative "cyberarm_engine/gosu_ext/draw_arc"
18
+ require_relative "cyberarm_engine/gosu_ext/draw_circle"
19
+ require_relative "cyberarm_engine/gosu_ext/draw_path"
20
+
21
+ require_relative "cyberarm_engine/notification"
22
+ require_relative "cyberarm_engine/notification_manager"
23
+
24
+ require_relative "cyberarm_engine/game_object"
25
+ require_relative "cyberarm_engine/window"
26
+
27
+ require_relative "cyberarm_engine/bounding_box"
28
+ require_relative "cyberarm_engine/vector"
29
+ require_relative "cyberarm_engine/transform"
30
+ require_relative "cyberarm_engine/ray"
31
+ require_relative "cyberarm_engine/background"
32
+ require_relative "cyberarm_engine/background_nine_slice"
33
+ require_relative "cyberarm_engine/background_image"
34
+ require_relative "cyberarm_engine/animator"
35
+
36
+ require_relative "cyberarm_engine/text"
37
+ require_relative "cyberarm_engine/timer"
38
+ require_relative "cyberarm_engine/config_file"
39
+
40
+ require_relative "cyberarm_engine/console"
41
+ require_relative "cyberarm_engine/console/command"
42
+ require_relative "cyberarm_engine/console/subcommand"
43
+ require_relative "cyberarm_engine/console/commands/help_command"
44
+
45
+ require_relative "cyberarm_engine/pathfinding/graph"
46
+ require_relative "cyberarm_engine/pathfinding/graphs/grid"
47
+ require_relative "cyberarm_engine/pathfinding/graph_search"
48
+ require_relative "cyberarm_engine/pathfinding/graph_searches/breadth_first_search"
49
+ require_relative "cyberarm_engine/pathfinding/graph_searches/dijkstra_search"
50
+ require_relative "cyberarm_engine/pathfinding/graph_searches/astar_search"
51
+
52
+ require_relative "cyberarm_engine/ui/dsl"
53
+
54
+ require_relative "cyberarm_engine/ui/theme"
55
+ require_relative "cyberarm_engine/ui/event"
56
+ require_relative "cyberarm_engine/ui/style"
57
+ require_relative "cyberarm_engine/ui/border_canvas"
58
+ require_relative "cyberarm_engine/ui/element"
59
+ require_relative "cyberarm_engine/ui/elements/text_block"
60
+ require_relative "cyberarm_engine/ui/elements/button"
61
+ require_relative "cyberarm_engine/ui/elements/toggle_button"
62
+ require_relative "cyberarm_engine/ui/elements/list_box"
63
+ require_relative "cyberarm_engine/ui/elements/edit_line"
64
+ require_relative "cyberarm_engine/ui/elements/edit_box"
65
+ require_relative "cyberarm_engine/ui/elements/image"
66
+ require_relative "cyberarm_engine/ui/elements/container"
67
+ require_relative "cyberarm_engine/ui/elements/flow"
68
+ require_relative "cyberarm_engine/ui/elements/stack"
69
+ require_relative "cyberarm_engine/ui/elements/widget"
70
+ require_relative "cyberarm_engine/ui/elements/check_box"
71
+ require_relative "cyberarm_engine/ui/elements/radio"
72
+ require_relative "cyberarm_engine/ui/elements/progress"
73
+ require_relative "cyberarm_engine/ui/elements/slider"
74
+ require_relative "cyberarm_engine/ui/elements/menu"
75
+ require_relative "cyberarm_engine/ui/elements/menu_item"
76
+
77
+ require_relative "cyberarm_engine/game_state"
78
+ require_relative "cyberarm_engine/ui/gui_state"
79
+ require_relative "cyberarm_engine/ui/dialog"
80
+ require_relative "cyberarm_engine/ui/page"
81
+
82
+ require_relative "cyberarm_engine/builtin/intro_state"
83
+
84
+ if RUBY_ENGINE != "mruby" && defined?(StackProf)
85
+ at_exit do
86
+ StackProf.results("./_stackprof.dmp")
87
+ end
88
+ end
data/mrbgem.rake CHANGED
@@ -1,29 +1,29 @@
1
- MRuby::Gem::Specification.new("mruby-cyberarm_engine") do |spec|
2
- spec.license = "MIT"
3
- spec.authors = "cyberarm"
4
- spec.summary = " Yet another framework for building games with Gosu"
5
-
6
- lib_rbfiles = []
7
- # Dir.glob("#{File.expand_path("..", __FILE__)}/lib/**/*.rb").reject do |f|
8
- # File.basename(f.downcase, ".rb") == "cyberarm_engine" ||
9
- # File.basename(f.downcase, ".rb") == "opengl" ||
10
- # f.downcase.include?("/opengl/")
11
- # end.reverse!
12
-
13
- local_path = File.expand_path("..", __FILE__)
14
- File.read("#{local_path}/lib/cyberarm_engine.rb").each_line do |line|
15
- line = line.strip
16
-
17
- next unless line.start_with?("require_relative")
18
-
19
- file = line.split("require_relative").last.strip.gsub("\"", "")
20
-
21
- next if file.include?(" if ")
22
-
23
- lib_rbfiles << "#{local_path}/lib/#{file}.rb"
24
- end
25
-
26
- pp lib_rbfiles
27
-
28
- spec.rbfiles = lib_rbfiles
29
- end
1
+ MRuby::Gem::Specification.new("mruby-cyberarm_engine") do |spec|
2
+ spec.license = "MIT"
3
+ spec.authors = "cyberarm"
4
+ spec.summary = " Yet another framework for building games with Gosu"
5
+
6
+ lib_rbfiles = []
7
+ # Dir.glob("#{File.expand_path("..", __FILE__)}/lib/**/*.rb").reject do |f|
8
+ # File.basename(f.downcase, ".rb") == "cyberarm_engine" ||
9
+ # File.basename(f.downcase, ".rb") == "opengl" ||
10
+ # f.downcase.include?("/opengl/")
11
+ # end.reverse!
12
+
13
+ local_path = File.expand_path("..", __FILE__)
14
+ File.read("#{local_path}/lib/cyberarm_engine.rb").each_line do |line|
15
+ line = line.strip
16
+
17
+ next unless line.start_with?("require_relative")
18
+
19
+ file = line.split("require_relative").last.strip.gsub("\"", "")
20
+
21
+ next if file.include?(" if ")
22
+
23
+ lib_rbfiles << "#{local_path}/lib/#{file}.rb"
24
+ end
25
+
26
+ pp lib_rbfiles
27
+
28
+ spec.rbfiles = lib_rbfiles
29
+ end