ruby2d 0.9.4 → 0.11.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 (156) hide show
  1. checksums.yaml +4 -4
  2. data/assets/include/SDL2/SDL.h +4 -1
  3. data/assets/include/SDL2/SDL_assert.h +3 -1
  4. data/assets/include/SDL2/SDL_atomic.h +1 -1
  5. data/assets/include/SDL2/SDL_audio.h +1 -1
  6. data/assets/include/SDL2/SDL_bits.h +1 -1
  7. data/assets/include/SDL2/SDL_blendmode.h +4 -1
  8. data/assets/include/SDL2/SDL_clipboard.h +1 -1
  9. data/assets/include/SDL2/SDL_config.h +1 -1
  10. data/assets/include/SDL2/SDL_config_android.h +7 -3
  11. data/assets/include/SDL2/SDL_config_iphoneos.h +16 -10
  12. data/assets/include/SDL2/SDL_config_macosx.h +40 -14
  13. data/assets/include/SDL2/SDL_config_minimal.h +1 -1
  14. data/assets/include/SDL2/SDL_config_os2.h +26 -8
  15. data/assets/include/SDL2/SDL_config_pandora.h +4 -2
  16. data/assets/include/SDL2/SDL_config_psp.h +2 -1
  17. data/assets/include/SDL2/SDL_config_windows.h +40 -9
  18. data/assets/include/SDL2/SDL_config_winrt.h +5 -2
  19. data/assets/include/SDL2/SDL_config_wiz.h +5 -2
  20. data/assets/include/SDL2/SDL_copying.h +1 -1
  21. data/assets/include/SDL2/SDL_cpuinfo.h +32 -3
  22. data/assets/include/SDL2/SDL_egl.h +4 -1
  23. data/assets/include/SDL2/SDL_endian.h +6 -3
  24. data/assets/include/SDL2/SDL_error.h +38 -2
  25. data/assets/include/SDL2/SDL_events.h +64 -28
  26. data/assets/include/SDL2/SDL_filesystem.h +1 -1
  27. data/assets/include/SDL2/SDL_gamecontroller.h +160 -9
  28. data/assets/include/SDL2/SDL_gesture.h +1 -1
  29. data/assets/include/SDL2/SDL_haptic.h +10 -1
  30. data/assets/include/SDL2/SDL_hints.h +316 -4
  31. data/assets/include/SDL2/SDL_joystick.h +115 -24
  32. data/assets/include/SDL2/SDL_keyboard.h +1 -1
  33. data/assets/include/SDL2/SDL_keycode.h +11 -9
  34. data/assets/include/SDL2/SDL_loadso.h +1 -1
  35. data/assets/include/SDL2/SDL_locale.h +101 -0
  36. data/assets/include/SDL2/SDL_log.h +3 -3
  37. data/assets/include/SDL2/SDL_main.h +1 -1
  38. data/assets/include/SDL2/SDL_messagebox.h +6 -4
  39. data/assets/include/SDL2/SDL_metal.h +117 -0
  40. data/assets/include/SDL2/SDL_misc.h +75 -0
  41. data/assets/include/SDL2/SDL_mouse.h +1 -1
  42. data/assets/include/SDL2/SDL_mutex.h +1 -1
  43. data/assets/include/SDL2/SDL_name.h +1 -1
  44. data/assets/include/SDL2/SDL_opengl.h +1 -1
  45. data/assets/include/SDL2/SDL_opengl_glext.h +3 -0
  46. data/assets/include/SDL2/SDL_opengles.h +1 -1
  47. data/assets/include/SDL2/SDL_opengles2.h +1 -1
  48. data/assets/include/SDL2/SDL_pixels.h +25 -16
  49. data/assets/include/SDL2/SDL_platform.h +1 -1
  50. data/assets/include/SDL2/SDL_power.h +1 -1
  51. data/assets/include/SDL2/SDL_quit.h +1 -1
  52. data/assets/include/SDL2/SDL_rect.h +1 -1
  53. data/assets/include/SDL2/SDL_render.h +63 -3
  54. data/assets/include/SDL2/SDL_revision.h +2 -2
  55. data/assets/include/SDL2/SDL_rwops.h +2 -10
  56. data/assets/include/SDL2/SDL_scancode.h +1 -1
  57. data/assets/include/SDL2/SDL_sensor.h +25 -9
  58. data/assets/include/SDL2/SDL_shape.h +1 -1
  59. data/assets/include/SDL2/SDL_stdinc.h +44 -4
  60. data/assets/include/SDL2/SDL_surface.h +11 -2
  61. data/assets/include/SDL2/SDL_system.h +50 -4
  62. data/assets/include/SDL2/SDL_syswm.h +29 -2
  63. data/assets/include/SDL2/SDL_test.h +1 -1
  64. data/assets/include/SDL2/SDL_test_assert.h +1 -1
  65. data/assets/include/SDL2/SDL_test_common.h +14 -1
  66. data/assets/include/SDL2/SDL_test_compare.h +1 -1
  67. data/assets/include/SDL2/SDL_test_crc32.h +1 -1
  68. data/assets/include/SDL2/SDL_test_font.h +1 -1
  69. data/assets/include/SDL2/SDL_test_fuzzer.h +1 -1
  70. data/assets/include/SDL2/SDL_test_harness.h +1 -1
  71. data/assets/include/SDL2/SDL_test_images.h +1 -1
  72. data/assets/include/SDL2/SDL_test_log.h +1 -1
  73. data/assets/include/SDL2/SDL_test_md5.h +1 -1
  74. data/assets/include/SDL2/SDL_test_memory.h +1 -1
  75. data/assets/include/SDL2/SDL_test_random.h +1 -1
  76. data/assets/include/SDL2/SDL_thread.h +34 -11
  77. data/assets/include/SDL2/SDL_timer.h +1 -1
  78. data/assets/include/SDL2/SDL_touch.h +1 -1
  79. data/assets/include/SDL2/SDL_types.h +1 -1
  80. data/assets/include/SDL2/SDL_version.h +2 -2
  81. data/assets/include/SDL2/SDL_video.h +11 -5
  82. data/assets/include/SDL2/SDL_vulkan.h +6 -8
  83. data/assets/include/SDL2/begin_code.h +5 -9
  84. data/assets/include/SDL2/close_code.h +1 -1
  85. data/assets/macos/lib/libFLAC.a +0 -0
  86. data/assets/macos/lib/libSDL2.a +0 -0
  87. data/assets/macos/lib/libSDL2_image.a +0 -0
  88. data/assets/macos/lib/libSDL2_mixer.a +0 -0
  89. data/assets/macos/lib/libSDL2_ttf.a +0 -0
  90. data/assets/macos/lib/libfreetype.a +0 -0
  91. data/assets/macos/lib/libjpeg.a +0 -0
  92. data/assets/macos/lib/libmodplug.a +0 -0
  93. data/assets/macos/lib/libmpg123.a +0 -0
  94. data/assets/macos/lib/libogg.a +0 -0
  95. data/assets/macos/lib/libpng16.a +0 -0
  96. data/assets/macos/lib/libtiff.a +0 -0
  97. data/assets/macos/lib/libvorbis.a +0 -0
  98. data/assets/macos/lib/libvorbisfile.a +0 -0
  99. data/assets/macos/lib/libwebp.a +0 -0
  100. data/assets/mingw/bin/SDL2.dll +0 -0
  101. data/assets/mingw/lib/libSDL2.a +0 -0
  102. data/assets/mingw/lib/libSDL2.dll.a +0 -0
  103. data/assets/mingw/lib/libSDL2_test.a +0 -0
  104. data/assets/mingw/lib/libSDL2main.a +0 -0
  105. data/bin/ruby2d +1 -0
  106. data/{assets/linux/simple2d/src/simple2d.c → ext/ruby2d/common.c} +32 -32
  107. data/{assets/linux/simple2d/src → ext/ruby2d}/controllers.c +17 -17
  108. data/ext/ruby2d/extconf.rb +37 -59
  109. data/ext/ruby2d/font.c +35 -0
  110. data/{assets/linux/simple2d/src → ext/ruby2d}/gl.c +66 -98
  111. data/ext/ruby2d/gl2.c +86 -0
  112. data/{assets/linux/simple2d/src → ext/ruby2d}/gl3.c +69 -112
  113. data/{assets/linux/simple2d/src → ext/ruby2d}/gles.c +22 -81
  114. data/ext/ruby2d/image.c +58 -0
  115. data/{assets/linux/simple2d/src → ext/ruby2d}/input.c +8 -8
  116. data/{assets/linux/simple2d/src → ext/ruby2d}/music.c +30 -17
  117. data/ext/ruby2d/ruby2d.c +449 -439
  118. data/ext/ruby2d/ruby2d.h +652 -0
  119. data/{assets/linux/simple2d/src → ext/ruby2d}/shapes.c +18 -18
  120. data/{assets/linux/simple2d/src → ext/ruby2d}/sound.c +39 -14
  121. data/ext/ruby2d/text.c +22 -0
  122. data/{assets/linux/simple2d/src → ext/ruby2d}/window.c +63 -63
  123. data/lib/ruby2d/circle.rb +21 -3
  124. data/lib/ruby2d/cli/build.rb +4 -7
  125. data/lib/ruby2d/dsl.rb +16 -9
  126. data/lib/ruby2d/entity.rb +17 -0
  127. data/lib/ruby2d/font.rb +23 -3
  128. data/lib/ruby2d/image.rb +35 -7
  129. data/lib/ruby2d/line.rb +23 -1
  130. data/lib/ruby2d/music.rb +5 -0
  131. data/lib/ruby2d/pixel.rb +17 -0
  132. data/lib/ruby2d/quad.rb +21 -1
  133. data/lib/ruby2d/rectangle.rb +12 -3
  134. data/lib/ruby2d/renderable.rb +4 -20
  135. data/lib/ruby2d/sound.rb +30 -0
  136. data/lib/ruby2d/sprite.rb +57 -75
  137. data/lib/ruby2d/square.rb +10 -1
  138. data/lib/ruby2d/text.rb +55 -12
  139. data/lib/ruby2d/texture.rb +28 -0
  140. data/lib/ruby2d/tileset.rb +87 -0
  141. data/lib/ruby2d/triangle.rb +19 -1
  142. data/lib/ruby2d/version.rb +1 -1
  143. data/lib/ruby2d/vertices.rb +84 -0
  144. data/lib/ruby2d/window.rb +259 -22
  145. data/lib/ruby2d.rb +6 -1
  146. metadata +30 -26
  147. data/assets/include/simple2d.h +0 -757
  148. data/assets/linux/simple2d/Makefile +0 -260
  149. data/assets/linux/simple2d/bin/simple2d.sh +0 -1318
  150. data/assets/linux/simple2d/include/simple2d.h +0 -757
  151. data/assets/linux/simple2d/src/gl2.c +0 -146
  152. data/assets/linux/simple2d/src/image.c +0 -138
  153. data/assets/linux/simple2d/src/sprite.c +0 -147
  154. data/assets/linux/simple2d/src/text.c +0 -129
  155. data/assets/macos/lib/libsimple2d.a +0 -0
  156. data/assets/mingw/lib/libsimple2d.a +0 -0
data/lib/ruby2d/window.rb CHANGED
@@ -4,22 +4,20 @@
4
4
 
5
5
  module Ruby2D
6
6
  class Window
7
+ @@open_window = false
7
8
 
8
9
  # Event structures
9
- EventDescriptor = Struct.new(:type, :id)
10
- MouseEvent = Struct.new(:type, :button, :direction, :x, :y, :delta_x, :delta_y)
11
- KeyEvent = Struct.new(:type, :key)
10
+ EventDescriptor = Struct.new(:type, :id)
11
+ MouseEvent = Struct.new(:type, :button, :direction, :x, :y, :delta_x, :delta_y)
12
+ KeyEvent = Struct.new(:type, :key)
12
13
  ControllerEvent = Struct.new(:which, :type, :axis, :value, :button)
13
14
  ControllerAxisEvent = Struct.new(:which, :axis, :value)
14
15
  ControllerButtonEvent = Struct.new(:which, :button)
15
16
 
16
17
  def initialize(args = {})
17
18
 
18
- # This window instance, stored so it can be called by the class methods
19
- @@window = self
20
-
21
19
  # Title of the window
22
- @title = args[:title] || "Ruby 2D"
20
+ @title = args[:title] || "Ruby 2D"
23
21
 
24
22
  # Window background color
25
23
  @background = Color.new([0.0, 0.0, 0.0, 1.0])
@@ -51,14 +49,39 @@ module Ruby2D
51
49
  # Vertical synchronization, set to prevent screen tearing (recommended)
52
50
  @vsync = args[:vsync] || true
53
51
 
52
+ # Renderable objects currently in the window, like a linear scene graph
53
+ @objects = []
54
+
55
+ # Entities currently in the window
56
+ @entities = []
57
+
54
58
  # Mouse X and Y position in the window
55
59
  @mouse_x, @mouse_y = 0, 0
56
60
 
57
61
  # Controller axis and button mappings file
58
62
  @controller_mappings = File.expand_path('~') + "/.ruby2d/controllers.txt"
59
63
 
60
- # Renderable objects currently in the window, like a linear scene graph
61
- @objects = []
64
+ # Event stores for class pattern
65
+ @keys_down = []
66
+ @keys_held = []
67
+ @keys_up = []
68
+ @mouse_buttons_down = []
69
+ @mouse_buttons_up = []
70
+ @mouse_scroll_event = false
71
+ @mouse_scroll_direction = nil
72
+ @mouse_scroll_delta_x = 0
73
+ @mouse_scroll_delta_y = 0
74
+ @mouse_move_event = false
75
+ @mouse_move_delta_x = 0
76
+ @mouse_move_delta_y = 0
77
+ @controller_id = nil
78
+ @controller_axes_moved = []
79
+ @controller_axis_left_x = 0
80
+ @controller_axis_left_y = 0
81
+ @controller_axis_right_x = 0
82
+ @controller_axis_right_y = 0
83
+ @controller_buttons_down = []
84
+ @controller_buttons_up = []
62
85
 
63
86
  # Unique ID for the input event being registered
64
87
  @event_key = 0
@@ -83,6 +106,12 @@ module Ruby2D
83
106
  # The window update block
84
107
  @update_proc = Proc.new {}
85
108
 
109
+ # The window render block
110
+ @render_proc = Proc.new {}
111
+
112
+ # Detect if window is being used through the DSL or as a class instance
113
+ @using_dsl = !(method(:update).parameters.empty? || method(:render).parameters.empty?)
114
+
86
115
  # Whether diagnostic messages should be printed
87
116
  @diagnostics = false
88
117
 
@@ -118,43 +147,53 @@ module Ruby2D
118
147
  def screenshot(opts = nil); get(:screenshot, opts) end
119
148
 
120
149
  def get(sym, opts = nil)
121
- @@window.get(sym, opts)
150
+ DSL.window.get(sym, opts)
122
151
  end
123
152
 
124
153
  def set(opts)
125
- @@window.set(opts)
154
+ DSL.window.set(opts)
126
155
  end
127
156
 
128
157
  def on(event, &proc)
129
- @@window.on(event, &proc)
158
+ DSL.window.on(event, &proc)
130
159
  end
131
160
 
132
161
  def off(event_descriptor)
133
- @@window.off(event_descriptor)
162
+ DSL.window.off(event_descriptor)
134
163
  end
135
164
 
136
165
  def add(o)
137
- @@window.add(o)
166
+ DSL.window.add(o)
138
167
  end
139
168
 
140
169
  def remove(o)
141
- @@window.remove(o)
170
+ DSL.window.remove(o)
142
171
  end
143
172
 
144
173
  def clear
145
- @@window.clear
174
+ DSL.window.clear
146
175
  end
147
176
 
148
177
  def update(&proc)
149
- @@window.update(&proc)
178
+ DSL.window.update(&proc)
179
+ end
180
+
181
+ def render(&proc)
182
+ DSL.window.render(&proc)
150
183
  end
151
184
 
152
185
  def show
153
- @@window.show
186
+ DSL.window.show
154
187
  end
155
188
 
156
189
  def close
157
- @@window.close
190
+ DSL.window.close
191
+ end
192
+
193
+ def render_ready_check
194
+ unless @@open_window
195
+ raise Error, "Attempting to draw before the window is ready. Please put calls to draw() inside of a render block."
196
+ end
158
197
  end
159
198
  end
160
199
 
@@ -219,6 +258,8 @@ module Ruby2D
219
258
  case o
220
259
  when nil
221
260
  raise Error, "Cannot add '#{o.class}' to window!"
261
+ when Entity
262
+ @entities.push(o)
222
263
  when Array
223
264
  o.each { |x| add_object(x) }
224
265
  else
@@ -232,8 +273,9 @@ module Ruby2D
232
273
  raise Error, "Cannot remove '#{o.class}' from window!"
233
274
  end
234
275
 
235
- if i = @objects.index(o)
236
- @objects.delete_at(i)
276
+ collection = o.class.ancestors.include?(Ruby2D::Entity) ? @entities : @objects
277
+ if i = collection.index(o)
278
+ collection.delete_at(i)
237
279
  true
238
280
  else
239
281
  false
@@ -243,14 +285,21 @@ module Ruby2D
243
285
  # Clear all objects from the window
244
286
  def clear
245
287
  @objects.clear
288
+ @entities.clear
246
289
  end
247
290
 
248
- # Set an update callback
291
+ # Set the update callback
249
292
  def update(&proc)
250
293
  @update_proc = proc
251
294
  true
252
295
  end
253
296
 
297
+ # Set the render callback
298
+ def render(&proc)
299
+ @render_proc = proc
300
+ true
301
+ end
302
+
254
303
  # Generate a new event key (ID)
255
304
  def new_event_key
256
305
  @event_key = @event_key.next
@@ -271,6 +320,21 @@ module Ruby2D
271
320
  @events[event_descriptor.type].delete(event_descriptor.id)
272
321
  end
273
322
 
323
+ # Key down event method for class pattern
324
+ def key_down(key)
325
+ @keys_down.include? key
326
+ end
327
+
328
+ # Key held event method for class pattern
329
+ def key_held(key)
330
+ @keys_held.include? key
331
+ end
332
+
333
+ # Key up event method for class pattern
334
+ def key_up(key)
335
+ @keys_up.include? key
336
+ end
337
+
274
338
  # Key callback method, called by the native and web extentions
275
339
  def key_callback(type, key)
276
340
  key = key.downcase
@@ -283,22 +347,66 @@ module Ruby2D
283
347
  case type
284
348
  # When key is pressed, fired once
285
349
  when :down
350
+ # For class pattern
351
+ unless @using_dsl
352
+ unless @keys_down.include? key
353
+ @keys_down << key
354
+ end
355
+ end
356
+
357
+ # Call event handler
286
358
  @events[:key_down].each do |id, e|
287
359
  e.call(KeyEvent.new(type, key))
288
360
  end
289
361
  # When key is being held down, fired every frame
290
362
  when :held
363
+ # For class pattern
364
+ unless @using_dsl
365
+ unless @keys_held.include? key
366
+ @keys_held << key
367
+ end
368
+ end
369
+
370
+ # Call event handler
291
371
  @events[:key_held].each do |id, e|
292
372
  e.call(KeyEvent.new(type, key))
293
373
  end
294
374
  # When key released, fired once
295
375
  when :up
376
+ # For class pattern
377
+ unless @using_dsl
378
+ unless @keys_up.include? key
379
+ @keys_up << key
380
+ end
381
+ end
382
+
383
+ # Call event handler
296
384
  @events[:key_up].each do |id, e|
297
385
  e.call(KeyEvent.new(type, key))
298
386
  end
299
387
  end
300
388
  end
301
389
 
390
+ # Mouse down event method for class pattern
391
+ def mouse_down(btn)
392
+ @mouse_buttons_down.include? btn
393
+ end
394
+
395
+ # Mouse up event method for class pattern
396
+ def mouse_up(btn)
397
+ @mouse_buttons_up.include? btn
398
+ end
399
+
400
+ # Mouse scroll event method for class pattern
401
+ def mouse_scroll
402
+ @mouse_scroll_event
403
+ end
404
+
405
+ # Mouse move event method for class pattern
406
+ def mouse_move
407
+ @mouse_move_event
408
+ end
409
+
302
410
  # Mouse callback method, called by the native and web extentions
303
411
  def mouse_callback(type, button, direction, x, y, delta_x, delta_y)
304
412
  # All mouse events
@@ -309,21 +417,54 @@ module Ruby2D
309
417
  case type
310
418
  # When mouse button pressed
311
419
  when :down
420
+ # For class pattern
421
+ unless @using_dsl
422
+ unless @mouse_buttons_down.include? button
423
+ @mouse_buttons_down << button
424
+ end
425
+ end
426
+
427
+ # Call event handler
312
428
  @events[:mouse_down].each do |id, e|
313
429
  e.call(MouseEvent.new(type, button, nil, x, y, nil, nil))
314
430
  end
315
431
  # When mouse button released
316
432
  when :up
433
+ # For class pattern
434
+ unless @using_dsl
435
+ unless @mouse_buttons_up.include? button
436
+ @mouse_buttons_up << button
437
+ end
438
+ end
439
+
440
+ # Call event handler
317
441
  @events[:mouse_up].each do |id, e|
318
442
  e.call(MouseEvent.new(type, button, nil, x, y, nil, nil))
319
443
  end
320
444
  # When mouse motion / movement
321
445
  when :scroll
446
+ # For class pattern
447
+ unless @using_dsl
448
+ @mouse_scroll_event = true
449
+ @mouse_scroll_direction = direction
450
+ @mouse_scroll_delta_x = delta_x
451
+ @mouse_scroll_delta_y = delta_y
452
+ end
453
+
454
+ # Call event handler
322
455
  @events[:mouse_scroll].each do |id, e|
323
456
  e.call(MouseEvent.new(type, nil, direction, nil, nil, delta_x, delta_y))
324
457
  end
325
458
  # When mouse scrolling, wheel or trackpad
326
459
  when :move
460
+ # For class pattern
461
+ unless @using_dsl
462
+ @mouse_move_event = true
463
+ @mouse_move_delta_x = delta_x
464
+ @mouse_move_delta_y = delta_y
465
+ end
466
+
467
+ # Call event handler
327
468
  @events[:mouse_move].each do |id, e|
328
469
  e.call(MouseEvent.new(type, nil, nil, x, y, delta_x, delta_y))
329
470
  end
@@ -337,6 +478,21 @@ module Ruby2D
337
478
  end
338
479
  end
339
480
 
481
+ # Controller axis event method for class pattern
482
+ def controller_axis(axis)
483
+ @controller_axes_moved.include? axis
484
+ end
485
+
486
+ # Controller button down event method for class pattern
487
+ def controller_button_down(btn)
488
+ @controller_buttons_down.include? btn
489
+ end
490
+
491
+ # Controller button up event method for class pattern
492
+ def controller_button_up(btn)
493
+ @controller_buttons_up.include? btn
494
+ end
495
+
340
496
  # Controller callback method, called by the native and web extentions
341
497
  def controller_callback(which, type, axis, value, button)
342
498
  # All controller events
@@ -347,16 +503,56 @@ module Ruby2D
347
503
  case type
348
504
  # When controller axis motion, like analog sticks
349
505
  when :axis
506
+
507
+ # For class pattern
508
+ unless @using_dsl
509
+ @controller_id = which
510
+
511
+ unless @controller_axes_moved.include? axis
512
+ @controller_axes_moved << axis
513
+ end
514
+
515
+ case axis
516
+ when :left_x
517
+ @controller_axis_left_x = value
518
+ when :left_y
519
+ @controller_axis_left_y = value
520
+ when :right_x
521
+ @controller_axis_right_x = value
522
+ when :right_y
523
+ @controller_axis_right_y = value
524
+ end
525
+ end
526
+
527
+ # Call event handler
350
528
  @events[:controller_axis].each do |id, e|
351
529
  e.call(ControllerAxisEvent.new(which, axis, value))
352
530
  end
353
531
  # When controller button is pressed
354
532
  when :button_down
533
+ # For class pattern
534
+ unless @using_dsl
535
+ @controller_id = which
536
+ unless @controller_buttons_down.include? button
537
+ @controller_buttons_down << button
538
+ end
539
+ end
540
+
541
+ # Call event handler
355
542
  @events[:controller_button_down].each do |id, e|
356
543
  e.call(ControllerButtonEvent.new(which, button))
357
544
  end
358
545
  # When controller button is released
359
546
  when :button_up
547
+ # For class pattern
548
+ unless @using_dsl
549
+ @controller_id = which
550
+ unless @controller_buttons_up.include? button
551
+ @controller_buttons_up << button
552
+ end
553
+ end
554
+
555
+ # Call event handler
360
556
  @events[:controller_button_up].each do |id, e|
361
557
  e.call(ControllerButtonEvent.new(which, button))
362
558
  end
@@ -365,8 +561,17 @@ module Ruby2D
365
561
 
366
562
  # Update callback method, called by the native and web extentions
367
563
  def update_callback
564
+ unless @using_dsl
565
+ update
566
+ end
567
+
368
568
  @update_proc.call
369
569
 
570
+ # Run update method on all entities
571
+ @entities.each do |e|
572
+ e.update
573
+ end
574
+
370
575
  # Accept and eval commands if in console mode
371
576
  if @console
372
577
  if STDIN.ready?
@@ -385,10 +590,42 @@ module Ruby2D
385
590
  end
386
591
  end
387
592
 
593
+ # Clear inputs if using class pattern
594
+ unless @using_dsl
595
+ @keys_down.clear
596
+ @keys_held.clear
597
+ @keys_up.clear
598
+ @mouse_buttons_down.clear
599
+ @mouse_buttons_up.clear
600
+ @mouse_scroll_event = false
601
+ @mouse_move_event = false
602
+ @controller_axes_moved.clear
603
+ @controller_buttons_down.clear
604
+ @controller_buttons_up.clear
605
+ end
606
+ end
607
+
608
+ # Render callback method, called by the native and web extentions
609
+ def render_callback
610
+ unless @using_dsl
611
+ render
612
+ end
613
+
614
+ @render_proc.call
615
+
616
+ # Run render method on all entities
617
+ @entities.each do |e|
618
+ e.render
619
+ end
388
620
  end
389
621
 
390
622
  # Show the window
391
623
  def show
624
+ if @@open_window
625
+ raise Error, "Window#show called multiple times, Ruby2D only supports a single open window"
626
+ end
627
+
628
+ @@open_window = true
392
629
  ext_show
393
630
  end
394
631
 
data/lib/ruby2d.rb CHANGED
@@ -7,20 +7,25 @@ unless RUBY_ENGINE == 'mruby'
7
7
  require 'ruby2d/color'
8
8
  require 'ruby2d/window'
9
9
  require 'ruby2d/dsl'
10
+ require 'ruby2d/entity'
10
11
  require 'ruby2d/quad'
11
12
  require 'ruby2d/line'
12
13
  require 'ruby2d/circle'
13
14
  require 'ruby2d/rectangle'
14
15
  require 'ruby2d/square'
15
16
  require 'ruby2d/triangle'
17
+ require 'ruby2d/pixel'
16
18
  require 'ruby2d/image'
17
19
  require 'ruby2d/sprite'
20
+ require 'ruby2d/tileset'
18
21
  require 'ruby2d/font'
19
22
  require 'ruby2d/text'
20
23
  require 'ruby2d/sound'
21
24
  require 'ruby2d/music'
25
+ require 'ruby2d/texture'
26
+ require 'ruby2d/vertices'
22
27
 
23
- if RUBY_PLATFORM =~ /mingw/
28
+ if defined?(RubyInstaller)
24
29
  s2d_dll_path = Gem::Specification.find_by_name('ruby2d').gem_dir + '/assets/mingw/bin'
25
30
  RubyInstaller::Runtime.add_dll_directory(File.expand_path(s2d_dll_path))
26
31
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby2d
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.4
4
+ version: 0.11.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Black
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-16 00:00:00.000000000 Z
11
+ date: 2021-11-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -69,9 +69,12 @@ files:
69
69
  - assets/include/SDL2/SDL_keyboard.h
70
70
  - assets/include/SDL2/SDL_keycode.h
71
71
  - assets/include/SDL2/SDL_loadso.h
72
+ - assets/include/SDL2/SDL_locale.h
72
73
  - assets/include/SDL2/SDL_log.h
73
74
  - assets/include/SDL2/SDL_main.h
74
75
  - assets/include/SDL2/SDL_messagebox.h
76
+ - assets/include/SDL2/SDL_metal.h
77
+ - assets/include/SDL2/SDL_misc.h
75
78
  - assets/include/SDL2/SDL_mixer.h
76
79
  - assets/include/SDL2/SDL_mouse.h
77
80
  - assets/include/SDL2/SDL_mutex.h
@@ -123,7 +126,6 @@ files:
123
126
  - assets/include/SDL2/begin_code.h
124
127
  - assets/include/SDL2/close_code.h
125
128
  - assets/include/glew.h
126
- - assets/include/simple2d.h
127
129
  - assets/ios/Assets.xcassets/AppIcon.appiconset/Contents.json
128
130
  - assets/ios/Assets.xcassets/Contents.json
129
131
  - assets/ios/Base.lproj/LaunchScreen.storyboard
@@ -165,23 +167,6 @@ files:
165
167
  - assets/ios/MyApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
166
168
  - assets/ios/MyApp.xcodeproj/project.xcworkspace/xcshareddata/MyApp.xcscmblueprint
167
169
  - assets/ios/main.c
168
- - assets/linux/simple2d/Makefile
169
- - assets/linux/simple2d/bin/simple2d.sh
170
- - assets/linux/simple2d/include/simple2d.h
171
- - assets/linux/simple2d/src/controllers.c
172
- - assets/linux/simple2d/src/gl.c
173
- - assets/linux/simple2d/src/gl2.c
174
- - assets/linux/simple2d/src/gl3.c
175
- - assets/linux/simple2d/src/gles.c
176
- - assets/linux/simple2d/src/image.c
177
- - assets/linux/simple2d/src/input.c
178
- - assets/linux/simple2d/src/music.c
179
- - assets/linux/simple2d/src/shapes.c
180
- - assets/linux/simple2d/src/simple2d.c
181
- - assets/linux/simple2d/src/sound.c
182
- - assets/linux/simple2d/src/sprite.c
183
- - assets/linux/simple2d/src/text.c
184
- - assets/linux/simple2d/src/window.c
185
170
  - assets/macos/lib/libFLAC.a
186
171
  - assets/macos/lib/libSDL2.a
187
172
  - assets/macos/lib/libSDL2_image.a
@@ -189,10 +174,10 @@ files:
189
174
  - assets/macos/lib/libSDL2_ttf.a
190
175
  - assets/macos/lib/libfreetype.a
191
176
  - assets/macos/lib/libjpeg.a
177
+ - assets/macos/lib/libmodplug.a
192
178
  - assets/macos/lib/libmpg123.a
193
179
  - assets/macos/lib/libogg.a
194
180
  - assets/macos/lib/libpng16.a
195
- - assets/macos/lib/libsimple2d.a
196
181
  - assets/macos/lib/libtiff.a
197
182
  - assets/macos/lib/libvorbis.a
198
183
  - assets/macos/lib/libvorbisfile.a
@@ -228,7 +213,6 @@ files:
228
213
  - assets/mingw/lib/libSDL2main.a
229
214
  - assets/mingw/lib/libglew32.a
230
215
  - assets/mingw/lib/libglew32.dll.a
231
- - assets/mingw/lib/libsimple2d.a
232
216
  - assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json
233
217
  - assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Contents.json
234
218
  - assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Contents.json
@@ -288,8 +272,23 @@ files:
288
272
  - assets/tvos/MyApp.xcodeproj/project.xcworkspace/xcshareddata/MyApp.xcscmblueprint
289
273
  - assets/tvos/main.c
290
274
  - bin/ruby2d
275
+ - ext/ruby2d/common.c
276
+ - ext/ruby2d/controllers.c
291
277
  - ext/ruby2d/extconf.rb
278
+ - ext/ruby2d/font.c
279
+ - ext/ruby2d/gl.c
280
+ - ext/ruby2d/gl2.c
281
+ - ext/ruby2d/gl3.c
282
+ - ext/ruby2d/gles.c
283
+ - ext/ruby2d/image.c
284
+ - ext/ruby2d/input.c
285
+ - ext/ruby2d/music.c
292
286
  - ext/ruby2d/ruby2d.c
287
+ - ext/ruby2d/ruby2d.h
288
+ - ext/ruby2d/shapes.c
289
+ - ext/ruby2d/sound.c
290
+ - ext/ruby2d/text.c
291
+ - ext/ruby2d/window.c
293
292
  - lib/ruby2d.rb
294
293
  - lib/ruby2d/circle.rb
295
294
  - lib/ruby2d/cli/build.rb
@@ -299,11 +298,13 @@ files:
299
298
  - lib/ruby2d/cli/launch.rb
300
299
  - lib/ruby2d/color.rb
301
300
  - lib/ruby2d/dsl.rb
301
+ - lib/ruby2d/entity.rb
302
302
  - lib/ruby2d/exceptions.rb
303
303
  - lib/ruby2d/font.rb
304
304
  - lib/ruby2d/image.rb
305
305
  - lib/ruby2d/line.rb
306
306
  - lib/ruby2d/music.rb
307
+ - lib/ruby2d/pixel.rb
307
308
  - lib/ruby2d/quad.rb
308
309
  - lib/ruby2d/rectangle.rb
309
310
  - lib/ruby2d/renderable.rb
@@ -311,14 +312,17 @@ files:
311
312
  - lib/ruby2d/sprite.rb
312
313
  - lib/ruby2d/square.rb
313
314
  - lib/ruby2d/text.rb
315
+ - lib/ruby2d/texture.rb
316
+ - lib/ruby2d/tileset.rb
314
317
  - lib/ruby2d/triangle.rb
315
318
  - lib/ruby2d/version.rb
319
+ - lib/ruby2d/vertices.rb
316
320
  - lib/ruby2d/window.rb
317
321
  homepage: http://www.ruby2d.com
318
322
  licenses:
319
323
  - MIT
320
324
  metadata: {}
321
- post_install_message:
325
+ post_install_message:
322
326
  rdoc_options: []
323
327
  require_paths:
324
328
  - lib
@@ -333,8 +337,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
333
337
  - !ruby/object:Gem::Version
334
338
  version: '0'
335
339
  requirements: []
336
- rubygems_version: 3.1.2
337
- signing_key:
340
+ rubygems_version: 3.2.31
341
+ signing_key:
338
342
  specification_version: 4
339
343
  summary: Ruby 2D
340
344
  test_files: []