ruby2d 0.9.2 → 0.10.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 (162) hide show
  1. checksums.yaml +4 -4
  2. data/assets/README.md +7 -8
  3. data/assets/Rakefile +85 -0
  4. data/assets/include/SDL2/SDL.h +4 -1
  5. data/assets/include/SDL2/SDL_assert.h +3 -1
  6. data/assets/include/SDL2/SDL_atomic.h +20 -2
  7. data/assets/include/SDL2/SDL_audio.h +47 -14
  8. data/assets/include/SDL2/SDL_bits.h +10 -1
  9. data/assets/include/SDL2/SDL_blendmode.h +10 -7
  10. data/assets/include/SDL2/SDL_clipboard.h +1 -1
  11. data/assets/include/SDL2/SDL_config.h +24 -390
  12. data/assets/include/SDL2/SDL_config_android.h +182 -0
  13. data/assets/include/SDL2/SDL_config_iphoneos.h +207 -0
  14. data/assets/include/SDL2/SDL_config_macosx.h +266 -0
  15. data/assets/include/SDL2/SDL_config_minimal.h +85 -0
  16. data/assets/include/SDL2/SDL_config_os2.h +188 -0
  17. data/assets/include/SDL2/SDL_config_pandora.h +135 -0
  18. data/assets/include/SDL2/SDL_config_psp.h +165 -0
  19. data/assets/include/SDL2/SDL_config_windows.h +288 -0
  20. data/assets/include/SDL2/SDL_config_winrt.h +243 -0
  21. data/assets/include/SDL2/SDL_config_wiz.h +149 -0
  22. data/assets/include/SDL2/SDL_copying.h +20 -0
  23. data/assets/include/SDL2/SDL_cpuinfo.h +119 -8
  24. data/assets/include/SDL2/SDL_egl.h +4 -1
  25. data/assets/include/SDL2/SDL_endian.h +6 -3
  26. data/assets/include/SDL2/SDL_error.h +38 -2
  27. data/assets/include/SDL2/SDL_events.h +67 -28
  28. data/assets/include/SDL2/SDL_filesystem.h +1 -1
  29. data/assets/include/SDL2/SDL_gamecontroller.h +160 -9
  30. data/assets/include/SDL2/SDL_gesture.h +1 -1
  31. data/assets/include/SDL2/SDL_haptic.h +10 -1
  32. data/assets/include/SDL2/SDL_hints.h +460 -17
  33. data/assets/include/SDL2/SDL_image.h +2 -2
  34. data/assets/include/SDL2/SDL_joystick.h +115 -24
  35. data/assets/include/SDL2/SDL_keyboard.h +1 -1
  36. data/assets/include/SDL2/SDL_keycode.h +11 -9
  37. data/assets/include/SDL2/SDL_loadso.h +1 -1
  38. data/assets/include/SDL2/SDL_locale.h +101 -0
  39. data/assets/include/SDL2/SDL_log.h +3 -3
  40. data/assets/include/SDL2/SDL_main.h +28 -16
  41. data/assets/include/SDL2/SDL_messagebox.h +6 -4
  42. data/assets/include/SDL2/SDL_metal.h +117 -0
  43. data/assets/include/SDL2/SDL_misc.h +75 -0
  44. data/assets/include/SDL2/SDL_mouse.h +1 -1
  45. data/assets/include/SDL2/SDL_mutex.h +1 -1
  46. data/assets/include/SDL2/SDL_name.h +1 -1
  47. data/assets/include/SDL2/SDL_opengl.h +1 -1
  48. data/assets/include/SDL2/SDL_opengl_glext.h +3 -0
  49. data/assets/include/SDL2/SDL_opengles.h +1 -1
  50. data/assets/include/SDL2/SDL_opengles2.h +1 -1
  51. data/assets/include/SDL2/SDL_pixels.h +27 -18
  52. data/assets/include/SDL2/SDL_platform.h +1 -1
  53. data/assets/include/SDL2/SDL_power.h +1 -1
  54. data/assets/include/SDL2/SDL_quit.h +1 -1
  55. data/assets/include/SDL2/SDL_rect.h +29 -3
  56. data/assets/include/SDL2/SDL_render.h +230 -3
  57. data/assets/include/SDL2/SDL_revision.h +2 -2
  58. data/assets/include/SDL2/SDL_rwops.h +51 -22
  59. data/assets/include/SDL2/SDL_scancode.h +2 -2
  60. data/assets/include/SDL2/SDL_sensor.h +28 -12
  61. data/assets/include/SDL2/SDL_shape.h +1 -1
  62. data/assets/include/SDL2/SDL_stdinc.h +44 -4
  63. data/assets/include/SDL2/SDL_surface.h +12 -2
  64. data/assets/include/SDL2/SDL_system.h +50 -4
  65. data/assets/include/SDL2/SDL_syswm.h +39 -9
  66. data/assets/include/SDL2/SDL_test.h +1 -1
  67. data/assets/include/SDL2/SDL_test_assert.h +1 -1
  68. data/assets/include/SDL2/SDL_test_common.h +32 -2
  69. data/assets/include/SDL2/SDL_test_compare.h +1 -1
  70. data/assets/include/SDL2/SDL_test_crc32.h +1 -1
  71. data/assets/include/SDL2/SDL_test_font.h +1 -1
  72. data/assets/include/SDL2/SDL_test_fuzzer.h +1 -1
  73. data/assets/include/SDL2/SDL_test_harness.h +1 -1
  74. data/assets/include/SDL2/SDL_test_images.h +1 -1
  75. data/assets/include/SDL2/SDL_test_log.h +1 -1
  76. data/assets/include/SDL2/SDL_test_md5.h +1 -1
  77. data/assets/include/SDL2/SDL_test_memory.h +3 -3
  78. data/assets/include/SDL2/SDL_test_random.h +1 -1
  79. data/assets/include/SDL2/SDL_thread.h +34 -11
  80. data/assets/include/SDL2/SDL_timer.h +1 -1
  81. data/assets/include/SDL2/SDL_touch.h +17 -1
  82. data/assets/include/SDL2/SDL_types.h +1 -1
  83. data/assets/include/SDL2/SDL_version.h +2 -2
  84. data/assets/include/SDL2/SDL_video.h +11 -5
  85. data/assets/include/SDL2/SDL_vulkan.h +9 -11
  86. data/assets/include/SDL2/begin_code.h +8 -9
  87. data/assets/include/SDL2/close_code.h +4 -1
  88. data/assets/macos/lib/libFLAC.a +0 -0
  89. data/assets/macos/lib/libSDL2.a +0 -0
  90. data/assets/macos/lib/libSDL2_image.a +0 -0
  91. data/assets/macos/lib/libSDL2_mixer.a +0 -0
  92. data/assets/macos/lib/libSDL2_ttf.a +0 -0
  93. data/assets/macos/lib/libfreetype.a +0 -0
  94. data/assets/macos/lib/libjpeg.a +0 -0
  95. data/assets/macos/lib/libmpg123.a +0 -0
  96. data/assets/macos/lib/libogg.a +0 -0
  97. data/assets/macos/lib/libpng16.a +0 -0
  98. data/assets/macos/lib/libtiff.a +0 -0
  99. data/assets/macos/lib/libvorbis.a +0 -0
  100. data/assets/macos/lib/libvorbisfile.a +0 -0
  101. data/assets/macos/lib/libwebp.a +0 -0
  102. data/assets/mingw/bin/SDL2.dll +0 -0
  103. data/assets/mingw/bin/SDL2_image.dll +0 -0
  104. data/assets/mingw/bin/libpng16-16.dll +0 -0
  105. data/assets/mingw/bin/libtiff-5.dll +0 -0
  106. data/assets/mingw/bin/libwebp-7.dll +0 -0
  107. data/assets/mingw/lib/libSDL2.a +0 -0
  108. data/assets/mingw/lib/libSDL2.dll.a +0 -0
  109. data/assets/mingw/lib/libSDL2_image.a +0 -0
  110. data/assets/mingw/lib/libSDL2_image.dll.a +0 -0
  111. data/assets/mingw/lib/libSDL2_test.a +0 -0
  112. data/assets/mingw/lib/libSDL2main.a +0 -0
  113. data/bin/ruby2d +2 -1
  114. data/{assets/linux/simple2d/src/simple2d.c → ext/ruby2d/common.c} +32 -32
  115. data/{assets/linux/simple2d/src → ext/ruby2d}/controllers.c +17 -17
  116. data/ext/ruby2d/extconf.rb +6 -36
  117. data/{assets/linux/simple2d/src → ext/ruby2d}/gl.c +106 -85
  118. data/{assets/linux/simple2d/src → ext/ruby2d}/gl2.c +35 -20
  119. data/{assets/linux/simple2d/src → ext/ruby2d}/gl3.c +146 -58
  120. data/{assets/linux/simple2d/src → ext/ruby2d}/gles.c +41 -26
  121. data/{assets/linux/simple2d/src → ext/ruby2d}/image.c +16 -16
  122. data/{assets/linux/simple2d/src → ext/ruby2d}/input.c +8 -8
  123. data/{assets/linux/simple2d/src → ext/ruby2d}/music.c +30 -17
  124. data/ext/ruby2d/ruby2d.c +427 -290
  125. data/ext/ruby2d/ruby2d.h +789 -0
  126. data/{assets/linux/simple2d/src → ext/ruby2d}/shapes.c +18 -18
  127. data/ext/ruby2d/sound.c +118 -0
  128. data/{assets/linux/simple2d/src → ext/ruby2d}/sprite.c +16 -16
  129. data/{assets/linux/simple2d/src → ext/ruby2d}/text.c +22 -22
  130. data/ext/ruby2d/tileset.c +30 -0
  131. data/{assets/linux/simple2d/src → ext/ruby2d}/window.c +71 -60
  132. data/lib/ruby2d.rb +5 -2
  133. data/lib/ruby2d/circle.rb +18 -2
  134. data/lib/ruby2d/cli/build.rb +3 -8
  135. data/lib/ruby2d/cli/colorize.rb +10 -0
  136. data/lib/ruby2d/dsl.rb +16 -9
  137. data/lib/ruby2d/entity.rb +17 -0
  138. data/lib/ruby2d/font.rb +4 -3
  139. data/lib/ruby2d/image.rb +24 -1
  140. data/lib/ruby2d/line.rb +20 -0
  141. data/lib/ruby2d/music.rb +5 -0
  142. data/lib/ruby2d/pixel.rb +17 -0
  143. data/lib/ruby2d/quad.rb +18 -0
  144. data/lib/ruby2d/rectangle.rb +11 -2
  145. data/lib/ruby2d/renderable.rb +4 -8
  146. data/lib/ruby2d/sound.rb +5 -0
  147. data/lib/ruby2d/sprite.rb +35 -3
  148. data/lib/ruby2d/square.rb +9 -0
  149. data/lib/ruby2d/text.rb +22 -1
  150. data/lib/ruby2d/tileset.rb +69 -0
  151. data/lib/ruby2d/triangle.rb +16 -0
  152. data/lib/ruby2d/version.rb +1 -1
  153. data/lib/ruby2d/window.rb +249 -22
  154. metadata +41 -27
  155. data/assets/include/simple2d.h +0 -735
  156. data/assets/linux/simple2d/Makefile +0 -250
  157. data/assets/linux/simple2d/bin/simple2d.sh +0 -1249
  158. data/assets/linux/simple2d/include/simple2d.h +0 -735
  159. data/assets/linux/simple2d/src/sound.c +0 -56
  160. data/assets/macos/lib/libsimple2d.a +0 -0
  161. data/assets/mingw/lib/libsimple2d.a +0 -0
  162. data/lib/ruby2d/colorize.rb +0 -10
@@ -0,0 +1,30 @@
1
+ // tileset.c
2
+
3
+ #include "ruby2d.h"
4
+
5
+
6
+ /*
7
+ * Draw a tile
8
+ */
9
+ void R2D_DrawTile(R2D_Image *img, int tw, int th, int padding, int spacing, int tx, int ty, int x, int y) {
10
+ if (!img) return;
11
+
12
+ if (img->texture_id == 0) {
13
+ R2D_GL_CreateTexture(&img->texture_id, img->format,
14
+ img->width, img->height,
15
+ img->surface->pixels, GL_NEAREST);
16
+ SDL_FreeSurface(img->surface);
17
+ }
18
+
19
+ GLfloat tx1 = (double)(padding + ((spacing + tw) * tx)) / (double) img->width ;
20
+ GLfloat tx2 = tx1 + ((double)tw / (double) img->width);
21
+ GLfloat tx3 = tx2;
22
+ GLfloat tx4 = tx1;
23
+
24
+ GLfloat ty1 = (double)(padding + ((spacing + th) * ty)) / (double) img ->height;
25
+ GLfloat ty2 = ty1;
26
+ GLfloat ty3 = ty1 + ((double)th / (double) img->height);
27
+ GLfloat ty4 = ty3;
28
+
29
+ R2D_GL_DrawTile(img, x, y, tw, th, tx1, ty1, tx2, ty2, tx3, ty3, tx4, ty4);
30
+ }
@@ -1,25 +1,25 @@
1
1
  // window.c
2
2
 
3
- #include "../include/simple2d.h"
3
+ #include "ruby2d.h"
4
4
 
5
5
 
6
6
  /*
7
7
  * Create a window
8
8
  */
9
- S2D_Window *S2D_CreateWindow(const char *title, int width, int height,
10
- S2D_Update update, S2D_Render render, int flags) {
9
+ R2D_Window *R2D_CreateWindow(const char *title, int width, int height,
10
+ R2D_Update update, R2D_Render render, int flags) {
11
11
 
12
- S2D_Init();
12
+ R2D_Init();
13
13
 
14
14
  SDL_DisplayMode dm;
15
15
  SDL_GetCurrentDisplayMode(0, &dm);
16
- S2D_Log(S2D_INFO, "Current display mode is %dx%dpx @ %dhz", dm.w, dm.h, dm.refresh_rate);
16
+ R2D_Log(R2D_INFO, "Current display mode is %dx%dpx @ %dhz", dm.w, dm.h, dm.refresh_rate);
17
17
 
18
- width = width == S2D_DISPLAY_WIDTH ? dm.w : width;
19
- height = height == S2D_DISPLAY_HEIGHT ? dm.h : height;
18
+ width = width == R2D_DISPLAY_WIDTH ? dm.w : width;
19
+ height = height == R2D_DISPLAY_HEIGHT ? dm.h : height;
20
20
 
21
21
  // Allocate window and set default values
22
- S2D_Window *window = (S2D_Window *) malloc(sizeof(S2D_Window));
22
+ R2D_Window *window = (R2D_Window *) malloc(sizeof(R2D_Window));
23
23
  window->sdl = NULL;
24
24
  window->glcontext = NULL;
25
25
  window->title = title;
@@ -29,7 +29,7 @@ S2D_Window *S2D_CreateWindow(const char *title, int width, int height,
29
29
  window->orig_height = height;
30
30
  window->viewport.width = width;
31
31
  window->viewport.height = height;
32
- window->viewport.mode = S2D_SCALE;
32
+ window->viewport.mode = R2D_SCALE;
33
33
  window->update = update;
34
34
  window->render = render;
35
35
  window->flags = flags;
@@ -53,10 +53,10 @@ S2D_Window *S2D_CreateWindow(const char *title, int width, int height,
53
53
  /*
54
54
  * Show the window
55
55
  */
56
- int S2D_Show(S2D_Window *window) {
56
+ int R2D_Show(R2D_Window *window) {
57
57
 
58
58
  if (!window) {
59
- S2D_Error("S2D_Show", "Window cannot be shown (because it's NULL)");
59
+ R2D_Error("R2D_Show", "Window cannot be shown (because it's NULL)");
60
60
  return 1;
61
61
  }
62
62
 
@@ -68,8 +68,8 @@ int S2D_Show(S2D_Window *window) {
68
68
  SDL_WINDOW_OPENGL | window->flags // flags
69
69
  );
70
70
 
71
- if (!window->sdl) S2D_Error("SDL_CreateWindow", SDL_GetError());
72
- if (window->icon) S2D_SetIcon(window, window->icon);
71
+ if (!window->sdl) R2D_Error("SDL_CreateWindow", SDL_GetError());
72
+ if (window->icon) R2D_SetIcon(window, window->icon);
73
73
 
74
74
  // The window created by SDL might not actually be the requested size.
75
75
  // If it's not the same, retrieve and store the actual window size.
@@ -77,7 +77,7 @@ int S2D_Show(S2D_Window *window) {
77
77
  SDL_GetWindowSize(window->sdl, &actual_width, &actual_height);
78
78
 
79
79
  if ((window->width != actual_width) || (window->height != actual_height)) {
80
- S2D_Log(S2D_INFO,
80
+ R2D_Log(R2D_INFO,
81
81
  "Scaling window to %ix%i (requested size was %ix%i)",
82
82
  actual_width, actual_height, window->width, window->height
83
83
  );
@@ -89,7 +89,13 @@ int S2D_Show(S2D_Window *window) {
89
89
 
90
90
  // Set Up OpenGL /////////////////////////////////////////////////////////////
91
91
 
92
- S2D_GL_Init(window);
92
+ R2D_GL_Init(window);
93
+
94
+ // SDL 2.0.10 and macOS 10.15 fix ////////////////////////////////////////////
95
+
96
+ #if MACOS
97
+ SDL_SetWindowSize(window->sdl, window->width, window->height);
98
+ #endif
93
99
 
94
100
  // Set Main Loop Data ////////////////////////////////////////////////////////
95
101
 
@@ -110,7 +116,7 @@ int S2D_Show(S2D_Window *window) {
110
116
  // Enable VSync
111
117
  if (window->vsync) {
112
118
  if (!SDL_SetHint(SDL_HINT_RENDER_VSYNC, "1")) {
113
- S2D_Log(S2D_WARN, "VSync cannot be enabled");
119
+ R2D_Log(R2D_WARN, "VSync cannot be enabled");
114
120
  }
115
121
  }
116
122
 
@@ -122,7 +128,7 @@ int S2D_Show(S2D_Window *window) {
122
128
 
123
129
  // Clear Frame /////////////////////////////////////////////////////////////
124
130
 
125
- S2D_GL_Clear(window->background);
131
+ R2D_GL_Clear(window->background);
126
132
 
127
133
  // Set FPS /////////////////////////////////////////////////////////////////
128
134
 
@@ -158,8 +164,8 @@ int S2D_Show(S2D_Window *window) {
158
164
 
159
165
  case SDL_KEYDOWN:
160
166
  if (window->on_key && e.key.repeat == 0) {
161
- S2D_Event event = {
162
- .type = S2D_KEY_DOWN, .key = SDL_GetScancodeName(e.key.keysym.scancode)
167
+ R2D_Event event = {
168
+ .type = R2D_KEY_DOWN, .key = SDL_GetScancodeName(e.key.keysym.scancode)
163
169
  };
164
170
  window->on_key(event);
165
171
  }
@@ -167,8 +173,8 @@ int S2D_Show(S2D_Window *window) {
167
173
 
168
174
  case SDL_KEYUP:
169
175
  if (window->on_key) {
170
- S2D_Event event = {
171
- .type = S2D_KEY_UP, .key = SDL_GetScancodeName(e.key.keysym.scancode)
176
+ R2D_Event event = {
177
+ .type = R2D_KEY_UP, .key = SDL_GetScancodeName(e.key.keysym.scancode)
172
178
  };
173
179
  window->on_key(event);
174
180
  }
@@ -176,11 +182,11 @@ int S2D_Show(S2D_Window *window) {
176
182
 
177
183
  case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONUP:
178
184
  if (window->on_mouse) {
179
- S2D_GetMouseOnViewport(window, e.button.x, e.button.y, &mx, &my);
180
- S2D_Event event = {
185
+ R2D_GetMouseOnViewport(window, e.button.x, e.button.y, &mx, &my);
186
+ R2D_Event event = {
181
187
  .button = e.button.button, .x = mx, .y = my
182
188
  };
183
- event.type = e.type == SDL_MOUSEBUTTONDOWN ? S2D_MOUSE_DOWN : S2D_MOUSE_UP;
189
+ event.type = e.type == SDL_MOUSEBUTTONDOWN ? R2D_MOUSE_DOWN : R2D_MOUSE_UP;
184
190
  event.dblclick = e.button.clicks == 2 ? true : false;
185
191
  window->on_mouse(event);
186
192
  }
@@ -188,8 +194,8 @@ int S2D_Show(S2D_Window *window) {
188
194
 
189
195
  case SDL_MOUSEWHEEL:
190
196
  if (window->on_mouse) {
191
- S2D_Event event = {
192
- .type = S2D_MOUSE_SCROLL, .direction = e.wheel.direction,
197
+ R2D_Event event = {
198
+ .type = R2D_MOUSE_SCROLL, .direction = e.wheel.direction,
193
199
  .delta_x = e.wheel.x, .delta_y = -e.wheel.y
194
200
  };
195
201
  window->on_mouse(event);
@@ -198,9 +204,9 @@ int S2D_Show(S2D_Window *window) {
198
204
 
199
205
  case SDL_MOUSEMOTION:
200
206
  if (window->on_mouse) {
201
- S2D_GetMouseOnViewport(window, e.motion.x, e.motion.y, &mx, &my);
202
- S2D_Event event = {
203
- .type = S2D_MOUSE_MOVE,
207
+ R2D_GetMouseOnViewport(window, e.motion.x, e.motion.y, &mx, &my);
208
+ R2D_Event event = {
209
+ .type = R2D_MOUSE_MOVE,
204
210
  .x = mx, .y = my, .delta_x = e.motion.xrel, .delta_y = e.motion.yrel
205
211
  };
206
212
  window->on_mouse(event);
@@ -209,8 +215,8 @@ int S2D_Show(S2D_Window *window) {
209
215
 
210
216
  case SDL_CONTROLLERAXISMOTION:
211
217
  if (window->on_controller) {
212
- S2D_Event event = {
213
- .which = e.caxis.which, .type = S2D_AXIS,
218
+ R2D_Event event = {
219
+ .which = e.caxis.which, .type = R2D_AXIS,
214
220
  .axis = e.caxis.axis, .value = e.caxis.value
215
221
  };
216
222
  window->on_controller(event);
@@ -218,9 +224,9 @@ int S2D_Show(S2D_Window *window) {
218
224
  break;
219
225
 
220
226
  case SDL_JOYAXISMOTION:
221
- if (window->on_controller && !S2D_IsController(e.jbutton.which)) {
222
- S2D_Event event = {
223
- .which = e.jaxis.which, .type = S2D_AXIS,
227
+ if (window->on_controller && !R2D_IsController(e.jbutton.which)) {
228
+ R2D_Event event = {
229
+ .which = e.jaxis.which, .type = R2D_AXIS,
224
230
  .axis = e.jaxis.axis, .value = e.jaxis.value
225
231
  };
226
232
  window->on_controller(event);
@@ -229,35 +235,35 @@ int S2D_Show(S2D_Window *window) {
229
235
 
230
236
  case SDL_CONTROLLERBUTTONDOWN: case SDL_CONTROLLERBUTTONUP:
231
237
  if (window->on_controller) {
232
- S2D_Event event = {
238
+ R2D_Event event = {
233
239
  .which = e.cbutton.which, .button = e.cbutton.button
234
240
  };
235
- event.type = e.type == SDL_CONTROLLERBUTTONDOWN ? S2D_BUTTON_DOWN : S2D_BUTTON_UP;
241
+ event.type = e.type == SDL_CONTROLLERBUTTONDOWN ? R2D_BUTTON_DOWN : R2D_BUTTON_UP;
236
242
  window->on_controller(event);
237
243
  }
238
244
  break;
239
245
 
240
246
  case SDL_JOYBUTTONDOWN: case SDL_JOYBUTTONUP:
241
- if (window->on_controller && !S2D_IsController(e.jbutton.which)) {
242
- S2D_Event event = {
247
+ if (window->on_controller && !R2D_IsController(e.jbutton.which)) {
248
+ R2D_Event event = {
243
249
  .which = e.jbutton.which, .button = e.jbutton.button
244
250
  };
245
- event.type = e.type == SDL_JOYBUTTONDOWN ? S2D_BUTTON_DOWN : S2D_BUTTON_UP;
251
+ event.type = e.type == SDL_JOYBUTTONDOWN ? R2D_BUTTON_DOWN : R2D_BUTTON_UP;
246
252
  window->on_controller(event);
247
253
  }
248
254
  break;
249
255
 
250
256
  case SDL_JOYDEVICEADDED:
251
- S2D_Log(S2D_INFO, "Controller connected (%i total)", SDL_NumJoysticks());
252
- S2D_OpenControllers();
257
+ R2D_Log(R2D_INFO, "Controller connected (%i total)", SDL_NumJoysticks());
258
+ R2D_OpenControllers();
253
259
  break;
254
260
 
255
261
  case SDL_JOYDEVICEREMOVED:
256
- if (S2D_IsController(e.jdevice.which)) {
257
- S2D_Log(S2D_INFO, "Controller #%i: %s removed (%i remaining)", e.jdevice.which, SDL_GameControllerName(SDL_GameControllerFromInstanceID(e.jdevice.which)), SDL_NumJoysticks());
262
+ if (R2D_IsController(e.jdevice.which)) {
263
+ R2D_Log(R2D_INFO, "Controller #%i: %s removed (%i remaining)", e.jdevice.which, SDL_GameControllerName(SDL_GameControllerFromInstanceID(e.jdevice.which)), SDL_NumJoysticks());
258
264
  SDL_GameControllerClose(SDL_GameControllerFromInstanceID(e.jdevice.which));
259
265
  } else {
260
- S2D_Log(S2D_INFO, "Controller #%i: %s removed (%i remaining)", e.jdevice.which, SDL_JoystickName(SDL_JoystickFromInstanceID(e.jdevice.which)), SDL_NumJoysticks());
266
+ R2D_Log(R2D_INFO, "Controller #%i: %s removed (%i remaining)", e.jdevice.which, SDL_JoystickName(SDL_JoystickFromInstanceID(e.jdevice.which)), SDL_NumJoysticks());
261
267
  SDL_JoystickClose(SDL_JoystickFromInstanceID(e.jdevice.which));
262
268
  }
263
269
  break;
@@ -268,13 +274,13 @@ int S2D_Show(S2D_Window *window) {
268
274
  // Store new window size, set viewport
269
275
  window->width = e.window.data1;
270
276
  window->height = e.window.data2;
271
- S2D_GL_SetViewport(window);
277
+ R2D_GL_SetViewport(window);
272
278
  break;
273
279
  }
274
280
  break;
275
281
 
276
282
  case SDL_QUIT:
277
- S2D_Close(window);
283
+ R2D_Close(window);
278
284
  break;
279
285
  }
280
286
  }
@@ -286,8 +292,8 @@ int S2D_Show(S2D_Window *window) {
286
292
  for (int i = 0; i < num_keys; i++) {
287
293
  if (window->on_key) {
288
294
  if (key_state[i] == 1) {
289
- S2D_Event event = {
290
- .type = S2D_KEY_HELD, .key = SDL_GetScancodeName(i)
295
+ R2D_Event event = {
296
+ .type = R2D_KEY_HELD, .key = SDL_GetScancodeName(i)
291
297
  };
292
298
  window->on_key(event);
293
299
  }
@@ -297,7 +303,7 @@ int S2D_Show(S2D_Window *window) {
297
303
  // Get and store mouse position relative to the viewport
298
304
  int wx, wy; // mouse x, y coordinates relative to the window
299
305
  SDL_GetMouseState(&wx, &wy);
300
- S2D_GetMouseOnViewport(window, wx, wy, &window->mouse.x, &window->mouse.y);
306
+ R2D_GetMouseOnViewport(window, wx, wy, &window->mouse.x, &window->mouse.y);
301
307
 
302
308
  // Update Window State /////////////////////////////////////////////////////
303
309
 
@@ -313,6 +319,11 @@ int S2D_Show(S2D_Window *window) {
313
319
  if (window->render) window->render();
314
320
 
315
321
  // Draw Frame //////////////////////////////////////////////////////////////
322
+
323
+ // Render and flush all OpenGL buffers
324
+ R2D_GL_FlushBuffers();
325
+
326
+ // Swap buffers to display drawn contents in the window
316
327
  SDL_GL_SwapWindow(window->sdl);
317
328
  }
318
329
 
@@ -323,14 +334,14 @@ int S2D_Show(S2D_Window *window) {
323
334
  /*
324
335
  * Set the icon for the window
325
336
  */
326
- void S2D_SetIcon(S2D_Window *window, const char *icon) {
327
- S2D_Image *img = S2D_CreateImage(icon);
337
+ void R2D_SetIcon(R2D_Window *window, const char *icon) {
338
+ R2D_Image *img = R2D_CreateImage(icon);
328
339
  if (img) {
329
340
  window->icon = icon;
330
341
  SDL_SetWindowIcon(window->sdl, img->surface);
331
- S2D_FreeImage(img);
342
+ R2D_FreeImage(img);
332
343
  } else {
333
- S2D_Log(S2D_WARN, "Could not set window icon");
344
+ R2D_Log(R2D_WARN, "Could not set window icon");
334
345
  }
335
346
  }
336
347
 
@@ -338,10 +349,10 @@ void S2D_SetIcon(S2D_Window *window, const char *icon) {
338
349
  /*
339
350
  * Take a screenshot of the window
340
351
  */
341
- void S2D_Screenshot(S2D_Window *window, const char *path) {
352
+ void R2D_Screenshot(R2D_Window *window, const char *path) {
342
353
 
343
354
  #if GLES
344
- S2D_Error("S2D_Screenshot", "Not supported in OpenGL ES");
355
+ R2D_Error("R2D_Screenshot", "Not supported in OpenGL ES");
345
356
  #else
346
357
  // Create a surface the size of the window
347
358
  SDL_Surface *surface = SDL_CreateRGBSurface(
@@ -357,7 +368,7 @@ void S2D_Screenshot(S2D_Window *window, const char *path) {
357
368
 
358
369
  void *temp_row = (void *)malloc(surface->pitch);
359
370
  if (!temp_row) {
360
- S2D_Error("S2D_Screenshot", "Out of memory!");
371
+ R2D_Error("R2D_Screenshot", "Out of memory!");
361
372
  SDL_FreeSurface(surface);
362
373
  return;
363
374
  }
@@ -382,9 +393,9 @@ void S2D_Screenshot(S2D_Window *window, const char *path) {
382
393
  /*
383
394
  * Close the window
384
395
  */
385
- int S2D_Close(S2D_Window *window) {
396
+ int R2D_Close(R2D_Window *window) {
386
397
  if (!window->close) {
387
- S2D_Log(S2D_INFO, "Closing window");
398
+ R2D_Log(R2D_INFO, "Closing window");
388
399
  window->close = true;
389
400
  }
390
401
  return 0;
@@ -394,8 +405,8 @@ int S2D_Close(S2D_Window *window) {
394
405
  /*
395
406
  * Free all resources
396
407
  */
397
- int S2D_FreeWindow(S2D_Window *window) {
398
- S2D_Close(window);
408
+ int R2D_FreeWindow(R2D_Window *window) {
409
+ R2D_Close(window);
399
410
  SDL_GL_DeleteContext(window->glcontext);
400
411
  SDL_DestroyWindow(window->sdl);
401
412
  free(window);
data/lib/ruby2d.rb CHANGED
@@ -1,26 +1,29 @@
1
1
  # Ruby2D module and native extension loader, adds DSL
2
2
 
3
3
  unless RUBY_ENGINE == 'mruby'
4
- require 'ruby2d/colorize'
4
+ require 'ruby2d/cli/colorize'
5
5
  require 'ruby2d/exceptions'
6
6
  require 'ruby2d/renderable'
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'
22
25
 
23
- if RUBY_PLATFORM =~ /mingw/
26
+ if defined?(RubyInstaller)
24
27
  s2d_dll_path = Gem::Specification.find_by_name('ruby2d').gem_dir + '/assets/mingw/bin'
25
28
  RubyInstaller::Runtime.add_dll_directory(File.expand_path(s2d_dll_path))
26
29
  end
data/lib/ruby2d/circle.rb CHANGED
@@ -10,8 +10,8 @@ module Ruby2D
10
10
  @x = opts[:x] || 25
11
11
  @y = opts[:y] || 25
12
12
  @z = opts[:z] || 0
13
- @radius = opts[:radius] || 25
14
- @sectors = opts[:sectors] || 20
13
+ @radius = opts[:radius] || 50
14
+ @sectors = opts[:sectors] || 30
15
15
  self.color = opts[:color] || 'white'
16
16
  self.opacity = opts[:opacity] if opts[:opacity]
17
17
  add
@@ -21,5 +21,21 @@ module Ruby2D
21
21
  Math.sqrt((x - @x)**2 + (y - @y)**2) <= @radius
22
22
  end
23
23
 
24
+ def self.draw(opts = {})
25
+ ext_draw([
26
+ opts[:x], opts[:y], opts[:radius], opts[:sectors],
27
+ opts[:color][0], opts[:color][1], opts[:color][2], opts[:color][3]
28
+ ])
29
+ end
30
+
31
+ private
32
+
33
+ def render
34
+ self.class.ext_draw([
35
+ @x, @y, @radius, @sectors,
36
+ @color.r, @color.g, @color.b, @color.a
37
+ ])
38
+ end
39
+
24
40
  end
25
41
  end
@@ -7,7 +7,7 @@ require 'fileutils'
7
7
 
8
8
  # The Ruby 2D library files
9
9
  @lib_files = [
10
- 'colorize',
10
+ 'cli/colorize',
11
11
  'exceptions',
12
12
  'renderable',
13
13
  'color',
@@ -96,7 +96,7 @@ def build_native(rb_file)
96
96
  end
97
97
 
98
98
  # Compile to a native executable
99
- `cc build/app.c -lmruby \`simple2d --libs\` -o build/app`
99
+ `cc build/app.c -lmruby -o build/app`
100
100
 
101
101
  # Clean up
102
102
  clean_up unless @debug
@@ -162,12 +162,6 @@ end
162
162
  def build_ios_tvos(rb_file, device)
163
163
  check_build_src_file(rb_file)
164
164
 
165
- # Check for Simple 2D framework,
166
- unless File.exist?('/usr/local/Frameworks/Simple2D/iOS/Simple2D.framework') && File.exist?('/usr/local/Frameworks/Simple2D/tvOS/Simple2D.framework')
167
- puts "#{'Error:'.error} Simple 2D iOS and tvOS frameworks not found. Install them and try again.\n"
168
- exit
169
- end
170
-
171
165
  # Check if MRuby exists; if not, quit
172
166
  if `which mruby`.empty?
173
167
  puts "#{'Error:'.error} Can't find MRuby, which is needed to build native Ruby 2D applications.\n"
@@ -197,6 +191,7 @@ def build_ios_tvos(rb_file, device)
197
191
  f << File.read("#{@gem_dir}/ext/ruby2d/ruby2d.c")
198
192
  end
199
193
 
194
+ # TODO: Need add this functionality to the gem
200
195
  # Build the Xcode project
201
196
  `simple2d build --#{device} build/#{device}/MyApp.xcodeproj`
202
197