ruby2d 0.12.1 → 1.0.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.
- checksums.yaml +4 -4
- data/LICENSE.md +7 -0
- data/README.md +141 -0
- data/USAGE.md +2435 -0
- data/assets/Rakefile +637 -0
- data/assets/build_support/CMakeLists.txt +94 -0
- data/assets/build_support/mruby/build_config.rb +34 -0
- data/assets/build_support/mruby/build_config_wasm.rb +30 -0
- data/assets/build_support/sdl_test.c +174 -0
- data/assets/deps.yaml +16 -0
- data/assets/platform/include/SDL3/SDL.h +91 -0
- data/assets/platform/include/SDL3/SDL_assert.h +705 -0
- data/assets/platform/include/SDL3/SDL_asyncio.h +550 -0
- data/assets/platform/include/SDL3/SDL_atomic.h +692 -0
- data/assets/platform/include/SDL3/SDL_audio.h +2370 -0
- data/assets/platform/include/SDL3/SDL_begin_code.h +553 -0
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_bits.h +47 -27
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_blendmode.h +59 -55
- data/assets/platform/include/SDL3/SDL_camera.h +535 -0
- data/assets/platform/include/SDL3/SDL_clipboard.h +331 -0
- data/assets/{include/SDL2/close_code.h → platform/include/SDL3/SDL_close_code.h} +9 -8
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_copying.h +3 -1
- data/assets/platform/include/SDL3/SDL_cpuinfo.h +374 -0
- data/assets/platform/include/SDL3/SDL_dialog.h +343 -0
- data/assets/platform/include/SDL3/SDL_dlopennote.h +234 -0
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_egl.h +11 -8
- data/assets/platform/include/SDL3/SDL_endian.h +645 -0
- data/assets/platform/include/SDL3/SDL_error.h +226 -0
- data/assets/platform/include/SDL3/SDL_events.h +1645 -0
- data/assets/platform/include/SDL3/SDL_filesystem.h +537 -0
- data/assets/platform/include/SDL3/SDL_gamepad.h +1656 -0
- data/assets/platform/include/SDL3/SDL_gpu.h +4608 -0
- data/assets/platform/include/SDL3/SDL_guid.h +106 -0
- data/assets/platform/include/SDL3/SDL_haptic.h +1461 -0
- data/assets/platform/include/SDL3/SDL_hidapi.h +571 -0
- data/assets/platform/include/SDL3/SDL_hints.h +5001 -0
- data/assets/platform/include/SDL3/SDL_init.h +507 -0
- data/assets/platform/include/SDL3/SDL_intrin.h +410 -0
- data/assets/platform/include/SDL3/SDL_iostream.h +1379 -0
- data/assets/platform/include/SDL3/SDL_joystick.h +1385 -0
- data/assets/platform/include/SDL3/SDL_keyboard.h +608 -0
- data/assets/platform/include/SDL3/SDL_keycode.h +347 -0
- data/assets/platform/include/SDL3/SDL_loadso.h +145 -0
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_locale.h +40 -24
- data/assets/platform/include/SDL3/SDL_log.h +541 -0
- data/assets/platform/include/SDL3/SDL_main.h +704 -0
- data/assets/platform/include/SDL3/SDL_main_impl.h +151 -0
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_messagebox.h +85 -48
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_metal.h +29 -29
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_misc.h +13 -12
- data/assets/platform/include/SDL3/SDL_mouse.h +813 -0
- data/assets/platform/include/SDL3/SDL_mutex.h +1117 -0
- data/assets/platform/include/SDL3/SDL_oldnames.h +1339 -0
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengl.h +1247 -278
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengl_glext.h +5 -1
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles.h +6 -7
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2.h +10 -11
- data/assets/platform/include/SDL3/SDL_pen.h +198 -0
- data/assets/platform/include/SDL3/SDL_pixels.h +1441 -0
- data/assets/{include/SDL2/SDL_test_log.h → platform/include/SDL3/SDL_platform.h} +25 -26
- data/assets/platform/include/SDL3/SDL_platform_defines.h +497 -0
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_power.h +40 -20
- data/assets/platform/include/SDL3/SDL_process.h +441 -0
- data/assets/platform/include/SDL3/SDL_properties.h +572 -0
- data/assets/platform/include/SDL3/SDL_rect.h +528 -0
- data/assets/platform/include/SDL3/SDL_render.h +3028 -0
- data/assets/platform/include/SDL3/SDL_revision.h +59 -0
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_scancode.h +59 -68
- data/assets/platform/include/SDL3/SDL_sensor.h +321 -0
- data/assets/platform/include/SDL3/SDL_stdinc.h +6186 -0
- data/assets/platform/include/SDL3/SDL_storage.h +686 -0
- data/assets/platform/include/SDL3/SDL_surface.h +1769 -0
- data/assets/platform/include/SDL3/SDL_system.h +840 -0
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test.h +16 -22
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_assert.h +27 -34
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_common.h +109 -52
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_compare.h +22 -14
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_crc32.h +27 -30
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_font.h +50 -49
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_fuzzer.h +64 -79
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_harness.h +47 -30
- data/assets/platform/include/SDL3/SDL_test_log.h +83 -0
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_md5.h +21 -28
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_memory.h +19 -16
- data/assets/platform/include/SDL3/SDL_thread.h +602 -0
- data/assets/platform/include/SDL3/SDL_time.h +249 -0
- data/assets/platform/include/SDL3/SDL_timer.h +454 -0
- data/assets/platform/include/SDL3/SDL_touch.h +184 -0
- data/assets/platform/include/SDL3/SDL_tray.h +544 -0
- data/assets/platform/include/SDL3/SDL_version.h +198 -0
- data/assets/platform/include/SDL3/SDL_video.h +3497 -0
- data/assets/platform/include/SDL3/SDL_vulkan.h +287 -0
- data/assets/platform/include/SDL3_image/SDL_image.h +3328 -0
- data/assets/platform/include/SDL3_mixer/SDL_mixer.h +3369 -0
- data/assets/platform/include/SDL3_ttf/SDL_textengine.h +181 -0
- data/assets/platform/include/SDL3_ttf/SDL_ttf.h +2833 -0
- data/assets/{include → platform/include}/mrbconf.h +42 -31
- data/assets/{include → platform/include}/mruby/array.h +3 -4
- data/assets/{include → platform/include}/mruby/boxing_nan.h +10 -0
- data/assets/platform/include/mruby/boxing_no.h +59 -0
- data/assets/{include → platform/include}/mruby/boxing_word.h +72 -26
- data/assets/platform/include/mruby/class.h +157 -0
- data/assets/{include → platform/include}/mruby/common.h +30 -1
- data/assets/{include → platform/include}/mruby/compile.h +52 -74
- data/assets/{include → platform/include}/mruby/data.h +2 -2
- data/assets/{include → platform/include}/mruby/debug.h +12 -5
- data/assets/{include → platform/include}/mruby/dump.h +7 -9
- data/assets/{include → platform/include}/mruby/endian.h +1 -1
- data/assets/platform/include/mruby/error.h +173 -0
- data/assets/platform/include/mruby/gc.h +79 -0
- data/assets/{include → platform/include}/mruby/hash.h +1 -7
- data/assets/platform/include/mruby/internal.h +282 -0
- data/assets/platform/include/mruby/irep.h +143 -0
- data/assets/{include → platform/include}/mruby/istruct.h +1 -1
- data/assets/platform/include/mruby/khash.h +455 -0
- data/assets/platform/include/mruby/mempool.h +19 -0
- data/assets/{include → platform/include}/mruby/numeric.h +7 -10
- data/assets/platform/include/mruby/object.h +51 -0
- data/assets/{include → platform/include}/mruby/opcode.h +5 -5
- data/assets/{include → platform/include}/mruby/ops.h +19 -6
- data/assets/platform/include/mruby/presym/id.h +1447 -0
- data/assets/{include → platform/include}/mruby/presym/scanning.h +10 -7
- data/assets/platform/include/mruby/presym/table.h +2893 -0
- data/assets/platform/include/mruby/presym.h +65 -0
- data/assets/platform/include/mruby/proc.h +184 -0
- data/assets/{include → platform/include}/mruby/range.h +0 -2
- data/assets/{include → platform/include}/mruby/string.h +33 -53
- data/assets/platform/include/mruby/throw.h +81 -0
- data/assets/{include → platform/include}/mruby/value.h +64 -29
- data/assets/{include → platform/include}/mruby/variable.h +6 -23
- data/assets/{include → platform/include}/mruby/version.h +7 -7
- data/assets/{include → platform/include}/mruby.h +238 -116
- data/assets/platform/macos-arm64/bin/mrbc +0 -0
- data/assets/platform/macos-arm64/lib/libSDL3.a +0 -0
- data/assets/platform/macos-arm64/lib/libSDL3_image.a +0 -0
- data/assets/platform/macos-arm64/lib/libSDL3_mixer.a +0 -0
- data/assets/platform/macos-arm64/lib/libSDL3_ttf.a +0 -0
- data/assets/platform/macos-arm64/lib/libmruby.a +0 -0
- data/assets/platform/wasm/lib/libFLAC.a +0 -0
- data/assets/platform/wasm/lib/libSDL3.a +0 -0
- data/assets/platform/wasm/lib/libSDL3_image.a +0 -0
- data/assets/platform/wasm/lib/libSDL3_mixer.a +0 -0
- data/assets/platform/wasm/lib/libSDL3_ttf.a +0 -0
- data/assets/platform/wasm/lib/libfreetype.a +0 -0
- data/assets/platform/wasm/lib/libharfbuzz.a +0 -0
- data/assets/platform/wasm/lib/libmruby.a +0 -0
- data/assets/platform/wasm/lib/libogg.a +0 -0
- data/assets/platform/wasm/lib/libplutosvg.a +0 -0
- data/assets/platform/wasm/lib/libplutovg.a +0 -0
- data/assets/platform/wasm/lib/libpng.a +0 -0
- data/assets/platform/wasm/lib/libpng16.a +0 -0
- data/assets/platform/wasm/lib/libvorbis.a +0 -0
- data/assets/platform/wasm/lib/libvorbisfile.a +0 -0
- data/assets/platform/wasm/lib/libzlibstatic.a +0 -0
- data/assets/platform/windows-arm64-mingw-ucrt/bin/mrbc.exe +0 -0
- data/assets/platform/windows-arm64-mingw-ucrt/lib/libSDL3.a +0 -0
- data/assets/platform/windows-arm64-mingw-ucrt/lib/libSDL3_image.a +0 -0
- data/assets/platform/windows-arm64-mingw-ucrt/lib/libSDL3_mixer.a +0 -0
- data/assets/platform/windows-arm64-mingw-ucrt/lib/libSDL3_ttf.a +0 -0
- data/assets/platform/windows-arm64-mingw-ucrt/lib/libmruby.a +0 -0
- data/assets/platform/windows-x86_64-mingw-ucrt/bin/mrbc.exe +0 -0
- data/assets/platform/windows-x86_64-mingw-ucrt/lib/libSDL3.a +0 -0
- data/assets/platform/windows-x86_64-mingw-ucrt/lib/libSDL3_image.a +0 -0
- data/assets/platform/windows-x86_64-mingw-ucrt/lib/libSDL3_mixer.a +0 -0
- data/assets/platform/windows-x86_64-mingw-ucrt/lib/libSDL3_ttf.a +0 -0
- data/assets/platform/windows-x86_64-mingw-ucrt/lib/libmruby.a +0 -0
- data/assets/resources/fonts/outfit/OFL.txt +93 -0
- data/assets/resources/fonts/outfit/outfit.ttf +0 -0
- data/assets/resources/fonts/roboto_mono/OFL.txt +91 -0
- data/assets/resources/fonts/roboto_mono/roboto_mono.ttf +0 -0
- data/assets/resources/icons/icon.icns +0 -0
- data/assets/resources/icons/icon.png +0 -0
- data/assets/resources/spritesheets/License.txt +28 -0
- data/assets/resources/spritesheets/spritesheet-backgrounds.png +0 -0
- data/assets/resources/spritesheets/spritesheet-backgrounds.xml +16 -0
- data/assets/resources/spritesheets/spritesheet-characters.png +0 -0
- data/assets/resources/spritesheets/spritesheet-characters.xml +47 -0
- data/assets/resources/spritesheets/spritesheet-enemies.png +0 -0
- data/assets/resources/spritesheets/spritesheet-enemies.xml +62 -0
- data/assets/resources/spritesheets/spritesheet-tiles.png +0 -0
- data/assets/resources/spritesheets/spritesheet-tiles.xml +316 -0
- data/assets/{wasm → resources/web}/template.html +1 -1
- data/assets/target.rb +131 -0
- data/bin/ruby2d +281 -82
- data/examples/astar.rb +269 -0
- data/examples/asteroids.rb +403 -0
- data/examples/bezier_editor.rb +96 -0
- data/examples/boids.rb +191 -0
- data/examples/bouncing_balls.rb +119 -0
- data/examples/breakout.rb +186 -0
- data/examples/constellations.rb +100 -0
- data/examples/dashboard.rb +133 -0
- data/examples/double_pendulum.rb +254 -0
- data/examples/falling_sand.rb +291 -0
- data/examples/fireworks.rb +110 -0
- data/examples/fluid_dynamics.rb +340 -0
- data/examples/fourier_epicycles.rb +142 -0
- data/examples/fractal_tree.rb +326 -0
- data/examples/game_of_life.rb +148 -0
- data/examples/gamepads.rb +333 -0
- data/examples/hill_driver.rb +613 -0
- data/examples/logo_animation.rb +251 -0
- data/examples/lorenz_attractor.rb +115 -0
- data/examples/mandelbrot.rb +207 -0
- data/examples/marching_squares.rb +200 -0
- data/examples/maze.rb +323 -0
- data/examples/nbody.rb +338 -0
- data/examples/outrun.rb +391 -0
- data/examples/pixel_paint.rb +313 -0
- data/examples/platformer.rb +335 -0
- data/examples/ray_casting_maze.rb +175 -0
- data/examples/shadow_casting.rb +151 -0
- data/examples/shape_recognizer.rb +908 -0
- data/examples/snake.rb +144 -0
- data/examples/sprite_sheets.rb +246 -0
- data/examples/swarm.rb +206 -0
- data/examples/tsp_annealing.rb +104 -0
- data/examples/ui_controls.rb +163 -0
- data/examples/wireframe_3d.rb +139 -0
- data/ext/ruby2d/audio.c +324 -0
- data/ext/ruby2d/canvas.c +1715 -494
- data/ext/ruby2d/ext.c +541 -0
- data/ext/ruby2d/extconf.rb +122 -145
- data/ext/ruby2d/font.c +566 -20
- data/ext/ruby2d/fps.c +92 -0
- data/ext/ruby2d/image.c +466 -41
- data/ext/ruby2d/ruby2d.c +374 -1890
- data/ext/ruby2d/ruby2d.h +840 -460
- data/ext/ruby2d/shapes.c +931 -101
- data/ext/ruby2d/text.c +586 -21
- data/ext/ruby2d/window.c +1693 -283
- data/lib/ruby2d/atlas_parser.rb +194 -0
- data/lib/ruby2d/audio.rb +73 -0
- data/lib/ruby2d/benchmark.rb +259 -0
- data/lib/ruby2d/bitmap_text.rb +155 -0
- data/lib/ruby2d/button.rb +402 -0
- data/lib/ruby2d/canvas.rb +703 -279
- data/lib/ruby2d/circle.rb +206 -29
- data/lib/ruby2d/cli/browser.rb +314 -0
- data/lib/ruby2d/cli/build.rb +471 -257
- data/lib/ruby2d/cli/colorize.rb +7 -5
- data/lib/ruby2d/cli/examples.rb +127 -0
- data/lib/ruby2d/cli/launch.rb +24 -39
- data/lib/ruby2d/cli/lib_files.rb +48 -0
- data/lib/ruby2d/cli/messages.rb +40 -0
- data/lib/ruby2d/cli/setup.rb +273 -0
- data/lib/ruby2d/cli/static_server.rb +160 -0
- data/lib/ruby2d/cli/usage.rb +255 -0
- data/lib/ruby2d/color.rb +191 -69
- data/lib/ruby2d/core.rb +37 -19
- data/lib/ruby2d/deps_help.rb +89 -0
- data/lib/ruby2d/dsl.rb +51 -12
- data/lib/ruby2d/ellipse.rb +228 -0
- data/lib/ruby2d/exceptions.rb +0 -2
- data/lib/ruby2d/font.rb +34 -74
- data/lib/ruby2d/gamepad.rb +323 -0
- data/lib/ruby2d/gem_paths.rb +19 -0
- data/lib/ruby2d/image.rb +155 -52
- data/lib/ruby2d/interactive.rb +103 -0
- data/lib/ruby2d/json_parser.rb +268 -0
- data/lib/ruby2d/line.rb +194 -85
- data/lib/ruby2d/mruby_compat.rb +12 -0
- data/lib/ruby2d/polygon.rb +297 -0
- data/lib/ruby2d/polyline.rb +368 -0
- data/lib/ruby2d/quad.rb +358 -94
- data/lib/ruby2d/rectangle.rb +77 -19
- data/lib/ruby2d/renderable.rb +411 -11
- data/lib/ruby2d/sprite.rb +471 -180
- data/lib/ruby2d/sprite_sheet.rb +64 -0
- data/lib/ruby2d/square.rb +29 -17
- data/lib/ruby2d/text.rb +196 -65
- data/lib/ruby2d/tileset.rb +139 -81
- data/lib/ruby2d/triangle.rb +324 -89
- data/lib/ruby2d/version.rb +1 -3
- data/lib/ruby2d/vertices.rb +62 -85
- data/lib/ruby2d/warnings.rb +29 -0
- data/lib/ruby2d/window/class_methods.rb +218 -0
- data/lib/ruby2d/window/gamepad_events.rb +141 -0
- data/lib/ruby2d/window/key_events.rb +74 -0
- data/lib/ruby2d/window/mouse_events.rb +171 -0
- data/lib/ruby2d/window/object_events.rb +168 -0
- data/lib/ruby2d/window.rb +632 -585
- data/lib/ruby2d.rb +14 -19
- metadata +275 -443
- data/assets/app.icns +0 -0
- data/assets/include/GL/glew.h +0 -26427
- data/assets/include/GLES2/gl2.h +0 -656
- data/assets/include/GLES2/gl2ext.h +0 -3949
- data/assets/include/GLES2/gl2ext_angle.h +0 -701
- data/assets/include/GLES2/gl2platform.h +0 -27
- data/assets/include/GLES3/gl3.h +0 -1192
- data/assets/include/GLES3/gl31.h +0 -1507
- data/assets/include/GLES3/gl32.h +0 -1808
- data/assets/include/GLES3/gl3platform.h +0 -27
- data/assets/include/KHR/khrplatform.h +0 -290
- data/assets/include/SDL2/SDL.h +0 -233
- data/assets/include/SDL2/SDL_assert.h +0 -326
- data/assets/include/SDL2/SDL_atomic.h +0 -415
- data/assets/include/SDL2/SDL_audio.h +0 -1500
- data/assets/include/SDL2/SDL_clipboard.h +0 -141
- data/assets/include/SDL2/SDL_config.h +0 -61
- data/assets/include/SDL2/SDL_config_android.h +0 -194
- data/assets/include/SDL2/SDL_config_emscripten.h +0 -218
- data/assets/include/SDL2/SDL_config_iphoneos.h +0 -217
- data/assets/include/SDL2/SDL_config_macosx.h +0 -277
- data/assets/include/SDL2/SDL_config_minimal.h +0 -95
- data/assets/include/SDL2/SDL_config_ngage.h +0 -89
- data/assets/include/SDL2/SDL_config_os2.h +0 -207
- data/assets/include/SDL2/SDL_config_pandora.h +0 -141
- data/assets/include/SDL2/SDL_config_windows.h +0 -331
- data/assets/include/SDL2/SDL_config_wingdk.h +0 -253
- data/assets/include/SDL2/SDL_config_winrt.h +0 -220
- data/assets/include/SDL2/SDL_config_xbox.h +0 -235
- data/assets/include/SDL2/SDL_cpuinfo.h +0 -594
- data/assets/include/SDL2/SDL_endian.h +0 -348
- data/assets/include/SDL2/SDL_error.h +0 -163
- data/assets/include/SDL2/SDL_events.h +0 -1166
- data/assets/include/SDL2/SDL_filesystem.h +0 -149
- data/assets/include/SDL2/SDL_gamecontroller.h +0 -1074
- data/assets/include/SDL2/SDL_gesture.h +0 -117
- data/assets/include/SDL2/SDL_guid.h +0 -100
- data/assets/include/SDL2/SDL_haptic.h +0 -1341
- data/assets/include/SDL2/SDL_hidapi.h +0 -451
- data/assets/include/SDL2/SDL_hints.h +0 -2569
- data/assets/include/SDL2/SDL_image.h +0 -2173
- data/assets/include/SDL2/SDL_joystick.h +0 -1066
- data/assets/include/SDL2/SDL_keyboard.h +0 -353
- data/assets/include/SDL2/SDL_keycode.h +0 -358
- data/assets/include/SDL2/SDL_loadso.h +0 -115
- data/assets/include/SDL2/SDL_log.h +0 -404
- data/assets/include/SDL2/SDL_main.h +0 -275
- data/assets/include/SDL2/SDL_mixer.h +0 -2784
- data/assets/include/SDL2/SDL_mouse.h +0 -465
- data/assets/include/SDL2/SDL_mutex.h +0 -471
- data/assets/include/SDL2/SDL_name.h +0 -33
- data/assets/include/SDL2/SDL_pixels.h +0 -644
- data/assets/include/SDL2/SDL_platform.h +0 -261
- data/assets/include/SDL2/SDL_quit.h +0 -58
- data/assets/include/SDL2/SDL_rect.h +0 -376
- data/assets/include/SDL2/SDL_render.h +0 -1919
- data/assets/include/SDL2/SDL_revision.h +0 -6
- data/assets/include/SDL2/SDL_rwops.h +0 -841
- data/assets/include/SDL2/SDL_sensor.h +0 -322
- data/assets/include/SDL2/SDL_shape.h +0 -155
- data/assets/include/SDL2/SDL_stdinc.h +0 -830
- data/assets/include/SDL2/SDL_surface.h +0 -997
- data/assets/include/SDL2/SDL_system.h +0 -623
- data/assets/include/SDL2/SDL_syswm.h +0 -386
- data/assets/include/SDL2/SDL_test_images.h +0 -78
- data/assets/include/SDL2/SDL_test_random.h +0 -115
- data/assets/include/SDL2/SDL_thread.h +0 -464
- data/assets/include/SDL2/SDL_timer.h +0 -222
- data/assets/include/SDL2/SDL_touch.h +0 -150
- data/assets/include/SDL2/SDL_ttf.h +0 -2316
- data/assets/include/SDL2/SDL_types.h +0 -29
- data/assets/include/SDL2/SDL_version.h +0 -204
- data/assets/include/SDL2/SDL_video.h +0 -2150
- data/assets/include/SDL2/SDL_vulkan.h +0 -215
- data/assets/include/SDL2/begin_code.h +0 -187
- data/assets/include/mruby/boxing_no.h +0 -58
- data/assets/include/mruby/class.h +0 -108
- data/assets/include/mruby/error.h +0 -147
- data/assets/include/mruby/gc.h +0 -94
- data/assets/include/mruby/irep.h +0 -147
- data/assets/include/mruby/khash.h +0 -284
- data/assets/include/mruby/object.h +0 -43
- data/assets/include/mruby/presym/disable.h +0 -70
- data/assets/include/mruby/presym/enable.h +0 -37
- data/assets/include/mruby/presym.h +0 -40
- data/assets/include/mruby/proc.h +0 -211
- data/assets/include/mruby/throw.h +0 -66
- data/assets/macos/universal/bin/mrbc +0 -0
- data/assets/macos/universal/lib/libFLAC.a +0 -0
- data/assets/macos/universal/lib/libSDL2.a +0 -0
- data/assets/macos/universal/lib/libSDL2_image.a +0 -0
- data/assets/macos/universal/lib/libSDL2_mixer.a +0 -0
- data/assets/macos/universal/lib/libSDL2_ttf.a +0 -0
- data/assets/macos/universal/lib/libavif.a +0 -0
- data/assets/macos/universal/lib/libbrotlicommon-static.a +0 -0
- data/assets/macos/universal/lib/libbrotlidec-static.a +0 -0
- data/assets/macos/universal/lib/libfreetype.a +0 -0
- data/assets/macos/universal/lib/libgraphite2.a +0 -0
- data/assets/macos/universal/lib/libharfbuzz.a +0 -0
- data/assets/macos/universal/lib/libhwy.a +0 -0
- data/assets/macos/universal/lib/libjpeg.a +0 -0
- data/assets/macos/universal/lib/libjxl.a +0 -0
- data/assets/macos/universal/lib/libmodplug.a +0 -0
- data/assets/macos/universal/lib/libmpg123.a +0 -0
- data/assets/macos/universal/lib/libmruby.a +0 -0
- data/assets/macos/universal/lib/libogg.a +0 -0
- data/assets/macos/universal/lib/libpng.a +0 -0
- data/assets/macos/universal/lib/libtiff.a +0 -0
- data/assets/macos/universal/lib/libvorbis.a +0 -0
- data/assets/macos/universal/lib/libvorbisfile.a +0 -0
- data/assets/macos/universal/lib/libwebp.a +0 -0
- data/assets/macos/universal/lib/libzstd.a +0 -0
- data/assets/test_media/README.md +0 -3
- data/assets/test_media/bitstream_vera/COPYRIGHT.txt +0 -124
- data/assets/test_media/bitstream_vera/vera.ttf +0 -0
- data/assets/test_media/boom.png +0 -0
- data/assets/test_media/coin.png +0 -0
- data/assets/test_media/colors.png +0 -0
- data/assets/test_media/controller.png +0 -0
- data/assets/test_media/dial.wav +0 -0
- data/assets/test_media/hero.png +0 -0
- data/assets/test_media/image.bmp +0 -0
- data/assets/test_media/image.jpg +0 -0
- data/assets/test_media/image.png +0 -0
- data/assets/test_media/music.flac +0 -0
- data/assets/test_media/music.mp3 +0 -0
- data/assets/test_media/music.ogg +0 -0
- data/assets/test_media/music.wav +0 -0
- data/assets/test_media/originals/boom.pxm +0 -0
- data/assets/test_media/originals/coin.pxm +0 -0
- data/assets/test_media/originals/controller.sketch +0 -0
- data/assets/test_media/originals/hero.pxm +0 -0
- data/assets/test_media/originals/image.pxm +0 -0
- data/assets/test_media/originals/music.caf +0 -0
- data/assets/test_media/originals/texture_atlas.pxm +0 -0
- data/assets/test_media/rondo_alla_turka.ogg +0 -0
- data/assets/test_media/sound.flac +0 -0
- data/assets/test_media/sound.mp3 +0 -0
- data/assets/test_media/sound.ogg +0 -0
- data/assets/test_media/sound.wav +0 -0
- data/assets/test_media/sprite_sheet.png +0 -0
- data/assets/test_media/texture_atlas.png +0 -0
- data/assets/wasm/libmruby.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/bin/mrbc.exe +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libFLAC.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libLerc.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2_image.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2_mixer.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2_ttf.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libbrotlicommon.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libbrotlidec.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libbz2.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libdeflate.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libfreetype.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libglew32.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libgraphite2.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libharfbuzz.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libhwy.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libjbig.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libjpeg.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libjxl.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/liblzma.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libmodplug.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libmpg123.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libmruby.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libogg.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libopus.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libopusfile.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libpng.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libsndfile.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libssp.a +0 -1
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libstdc++.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libtiff.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libvorbis.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libvorbisfile.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libwebp.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libz.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libzstd.a +0 -0
- data/assets/windows/mingw-w64-x86_64/bin/mrbc.exe +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libFLAC.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libLerc.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libSDL2.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libSDL2_image.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libSDL2_mixer.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libSDL2_ttf.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libbrotlicommon.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libbrotlidec.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libbz2.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libdeflate.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libfreetype.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libglew32.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libgraphite2.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libharfbuzz.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libhwy.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libjbig.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libjpeg.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libjxl.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/liblzma.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libmodplug.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libmpg123.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libmruby.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libogg.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libopus.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libopusfile.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libpng.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libsndfile.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libssp.a +0 -1
- data/assets/windows/mingw-w64-x86_64/lib/libstdc++.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libtiff.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libvorbis.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libvorbisfile.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libwebp.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libz.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libzstd.a +0 -0
- data/assets/xcode/ios/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -98
- data/assets/xcode/ios/Assets.xcassets/Contents.json +0 -6
- data/assets/xcode/ios/Base.lproj/LaunchScreen.storyboard +0 -27
- data/assets/xcode/ios/Info.plist +0 -43
- data/assets/xcode/ios/MRuby.framework/Headers/mrbconf.h +0 -143
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/array.h +0 -280
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/boxing_nan.h +0 -102
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/boxing_no.h +0 -56
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/boxing_word.h +0 -144
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/class.h +0 -97
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/common.h +0 -77
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/compile.h +0 -195
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/data.h +0 -75
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/debug.h +0 -67
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/dump.h +0 -196
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/error.h +0 -75
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/gc.h +0 -91
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/hash.h +0 -215
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/irep.h +0 -75
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/istruct.h +0 -47
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/khash.h +0 -274
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/numeric.h +0 -161
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/object.h +0 -44
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/opcode.h +0 -69
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/ops.h +0 -117
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/proc.h +0 -131
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/range.h +0 -49
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/re.h +0 -16
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/string.h +0 -444
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/throw.h +0 -55
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/value.h +0 -309
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/variable.h +0 -136
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/version.h +0 -110
- data/assets/xcode/ios/MRuby.framework/Headers/mruby.h +0 -1282
- data/assets/xcode/ios/MRuby.framework/Info.plist +0 -20
- data/assets/xcode/ios/MRuby.framework/MRuby +0 -0
- data/assets/xcode/ios/MyApp.xcodeproj/project.pbxproj +0 -368
- data/assets/xcode/ios/MyApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
- data/assets/xcode/ios/MyApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- data/assets/xcode/ios/MyApp.xcodeproj/project.xcworkspace/xcshareddata/MyApp.xcscmblueprint +0 -30
- data/assets/xcode/ios/main.c +0 -1
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json +0 -16
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Contents.json +0 -6
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Contents.json +0 -17
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json +0 -16
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Contents.json +0 -6
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json +0 -16
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Contents.json +0 -6
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json +0 -16
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Contents.json +0 -6
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Contents.json +0 -17
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json +0 -16
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Contents.json +0 -6
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json +0 -16
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Contents.json +0 -6
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json +0 -32
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json +0 -16
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json +0 -16
- data/assets/xcode/tvos/Assets.xcassets/Contents.json +0 -6
- data/assets/xcode/tvos/Assets.xcassets/LaunchImage.launchimage/Contents.json +0 -22
- data/assets/xcode/tvos/Info.plist +0 -30
- data/assets/xcode/tvos/MRuby.framework/Headers/mrbconf.h +0 -143
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/array.h +0 -280
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/boxing_nan.h +0 -102
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/boxing_no.h +0 -56
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/boxing_word.h +0 -144
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/class.h +0 -97
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/common.h +0 -77
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/compile.h +0 -195
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/data.h +0 -75
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/debug.h +0 -67
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/dump.h +0 -196
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/error.h +0 -75
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/gc.h +0 -91
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/hash.h +0 -215
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/irep.h +0 -75
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/istruct.h +0 -47
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/khash.h +0 -274
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/numeric.h +0 -161
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/object.h +0 -44
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/opcode.h +0 -69
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/ops.h +0 -117
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/proc.h +0 -131
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/range.h +0 -49
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/re.h +0 -16
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/string.h +0 -444
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/throw.h +0 -55
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/value.h +0 -309
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/variable.h +0 -136
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/version.h +0 -110
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby.h +0 -1282
- data/assets/xcode/tvos/MRuby.framework/Info.plist +0 -20
- data/assets/xcode/tvos/MRuby.framework/MRuby +0 -0
- data/assets/xcode/tvos/MyApp.xcodeproj/project.pbxproj +0 -350
- data/assets/xcode/tvos/MyApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
- data/assets/xcode/tvos/MyApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- data/assets/xcode/tvos/MyApp.xcodeproj/project.xcworkspace/xcshareddata/MyApp.xcscmblueprint +0 -30
- data/assets/xcode/tvos/main.c +0 -1
- data/ext/ruby2d/common.c +0 -185
- data/ext/ruby2d/controllers.c +0 -110
- data/ext/ruby2d/gl.c +0 -398
- data/ext/ruby2d/gl2.c +0 -86
- data/ext/ruby2d/gl3.c +0 -304
- data/ext/ruby2d/gles.c +0 -302
- data/ext/ruby2d/input.c +0 -48
- data/ext/ruby2d/music.c +0 -127
- data/ext/ruby2d/sound.c +0 -132
- data/lib/ruby2d/cli/console.rb +0 -65
- data/lib/ruby2d/cli/enable_console.rb +0 -7
- data/lib/ruby2d/cli/platform.rb +0 -17
- data/lib/ruby2d/music.rb +0 -77
- data/lib/ruby2d/pixel.rb +0 -18
- data/lib/ruby2d/pixmap.rb +0 -39
- data/lib/ruby2d/pixmap_atlas.rb +0 -56
- data/lib/ruby2d/sound.rb +0 -61
- data/lib/ruby2d/texture.rb +0 -38
- /data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2_gl2.h +0 -0
- /data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2_gl2ext.h +0 -0
- /data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2_gl2platform.h +0 -0
- /data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2_khrplatform.h +0 -0
- /data/assets/{include → platform/include}/mruby/re.h +0 -0
data/lib/ruby2d/cli/colorize.rb
CHANGED
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
# Extend `String` to include some fancy colors
|
|
4
4
|
class String
|
|
5
5
|
def ruby2d_colorize(c); "\e[#{c}m#{self}\e[0m" end
|
|
6
|
-
def bold;
|
|
7
|
-
def
|
|
8
|
-
def
|
|
9
|
-
def
|
|
10
|
-
def
|
|
6
|
+
def bold; ruby2d_colorize('1') end
|
|
7
|
+
def dim; ruby2d_colorize('2') end
|
|
8
|
+
def info; ruby2d_colorize('1;34') end
|
|
9
|
+
def warning; ruby2d_colorize('1;33') end
|
|
10
|
+
def success; ruby2d_colorize('1;32') end
|
|
11
|
+
def error; ruby2d_colorize('1;31') end
|
|
12
|
+
def ruby2d_red; ruby2d_colorize('38;2;246;60;56') end
|
|
11
13
|
end
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
require_relative 'browser'
|
|
2
|
+
require_relative 'colorize'
|
|
3
|
+
|
|
4
|
+
module Ruby2D
|
|
5
|
+
module CLI
|
|
6
|
+
module Examples
|
|
7
|
+
|
|
8
|
+
EXAMPLES_DIR = File.expand_path('../../../examples', __dir__)
|
|
9
|
+
|
|
10
|
+
# The gem root, where the bundled `assets/` directory sits alongside
|
|
11
|
+
# `examples/`. Examples resolve asset paths relative to this — the same
|
|
12
|
+
# relative layout `ruby2d build` mounts into the web VFS and copies into
|
|
13
|
+
# the native bundle — so example runs `chdir` here (see `run`).
|
|
14
|
+
ROOT_DIR = File.expand_path('..', EXAMPLES_DIR)
|
|
15
|
+
|
|
16
|
+
# Parse the leading comment block from an example file. The convention
|
|
17
|
+
# across `examples/*.rb` is:
|
|
18
|
+
#
|
|
19
|
+
# # Title
|
|
20
|
+
# # Short description (one or two lines, shown in the picker preview).
|
|
21
|
+
# #
|
|
22
|
+
# # Longer narrative — controls, context, anything beyond the tagline.
|
|
23
|
+
#
|
|
24
|
+
# The short description (first paragraph after the title) becomes
|
|
25
|
+
# `:description`; the entire post-title block becomes `:header`.
|
|
26
|
+
def self.parse(path)
|
|
27
|
+
title = nil
|
|
28
|
+
header = []
|
|
29
|
+
File.foreach(path) do |line|
|
|
30
|
+
line = line.chomp
|
|
31
|
+
break unless line.start_with?('#')
|
|
32
|
+
stripped = line.sub(/^#\s?/, '')
|
|
33
|
+
if title.nil?
|
|
34
|
+
title = stripped unless stripped.empty?
|
|
35
|
+
next
|
|
36
|
+
end
|
|
37
|
+
header << stripped
|
|
38
|
+
end
|
|
39
|
+
# Drop leading/trailing blank separator lines around the header block.
|
|
40
|
+
header.shift while header.first == ''
|
|
41
|
+
header.pop while header.last == ''
|
|
42
|
+
# `description` is the first paragraph of the header, joined as one line.
|
|
43
|
+
first_para = header.take_while { |l| !l.empty? }
|
|
44
|
+
name = File.basename(path, '.rb')
|
|
45
|
+
{
|
|
46
|
+
name: name,
|
|
47
|
+
title: title || name,
|
|
48
|
+
description: first_para.join(' ').strip,
|
|
49
|
+
header: header,
|
|
50
|
+
path: path
|
|
51
|
+
}
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Print the example's leading comment block (prose only, no title) in
|
|
55
|
+
# dim text, indented to match the surrounding "Running …" message.
|
|
56
|
+
def self.print_header(example)
|
|
57
|
+
lines = example[:header]
|
|
58
|
+
return if lines.nil? || lines.all?(&:empty?)
|
|
59
|
+
lines.each { |line| puts(line.empty? ? '' : " #{line.dim}") }
|
|
60
|
+
puts
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def self.all
|
|
64
|
+
@all ||= Dir.glob("#{EXAMPLES_DIR}/*.rb").sort.map { |p| parse(p) }
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def self.find(query)
|
|
68
|
+
list = all
|
|
69
|
+
if query.match?(/\A\d+\z/)
|
|
70
|
+
idx = query.to_i
|
|
71
|
+
# 1-based; out-of-range (incl. 0) returns nil rather than wrapping.
|
|
72
|
+
return idx.between?(1, list.length) ? list[idx - 1] : nil
|
|
73
|
+
end
|
|
74
|
+
norm = ->(s) { s.downcase.tr('-_', ' ').delete("'").squeeze(' ').strip }
|
|
75
|
+
q = norm.call(query)
|
|
76
|
+
return nil if q.empty? # an empty query must not match (and run) the first item
|
|
77
|
+
|
|
78
|
+
list.find { |e| norm.call(e[:name]) == q || norm.call(e[:title]) == q } ||
|
|
79
|
+
list.find { |e| norm.call(e[:name]).include?(q) || norm.call(e[:title]).include?(q) }
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def self.run(example)
|
|
83
|
+
# Run from `ROOT_DIR` so an example's relative asset paths (e.g.
|
|
84
|
+
# `assets/resources/spritesheets`) resolve against the bundled assets.
|
|
85
|
+
system(Gem.ruby, example[:path], chdir: ROOT_DIR)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# Non-interactive list, matching the style of `ruby2d usage`.
|
|
89
|
+
def self.print_list
|
|
90
|
+
list = all
|
|
91
|
+
if list.empty?
|
|
92
|
+
puts "\n No examples found.\n\n"
|
|
93
|
+
return
|
|
94
|
+
end
|
|
95
|
+
w = list.length.to_s.length
|
|
96
|
+
puts "\n #{'Ruby 2D'.ruby2d_red.bold} — Examples\n\n"
|
|
97
|
+
list.each_with_index do |ex, i|
|
|
98
|
+
puts " #{(i + 1).to_s.rjust(w).dim} #{ex[:title]}"
|
|
99
|
+
end
|
|
100
|
+
puts "\n #{'ruby2d examples <name|number>'.dim}\n\n"
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def self.browse
|
|
104
|
+
list = all
|
|
105
|
+
if list.empty?
|
|
106
|
+
puts "\n No examples found.\n\n"
|
|
107
|
+
return
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
Browser.run(list: list, label: 'Examples', footer_action: 'run',
|
|
111
|
+
fallback: -> { print_list }) do |ex|
|
|
112
|
+
puts
|
|
113
|
+
puts " #{'Ruby 2D'.ruby2d_red.bold} — Examples"
|
|
114
|
+
puts
|
|
115
|
+
puts " Running #{ex[:title].bold} #{"(#{ex[:name]}.rb)".dim}"
|
|
116
|
+
puts
|
|
117
|
+
print_header(ex)
|
|
118
|
+
ok = run(ex)
|
|
119
|
+
unless ok
|
|
120
|
+
print "\n #{'Example exited with errors. Press Enter to continue…'.dim}"
|
|
121
|
+
$stdin.gets
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
end
|
data/lib/ruby2d/cli/launch.rb
CHANGED
|
@@ -1,50 +1,35 @@
|
|
|
1
1
|
# Launch a built Ruby 2D app
|
|
2
|
+
require_relative '../../../assets/target'
|
|
3
|
+
require_relative 'colorize'
|
|
4
|
+
require_relative 'messages'
|
|
5
|
+
require_relative 'static_server'
|
|
2
6
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
end
|
|
9
|
-
`( cd build && ./app )`
|
|
7
|
+
|
|
8
|
+
# Serve a directory over HTTP and open it in the browser. Backed by a minimal
|
|
9
|
+
# `socket`-based server (no WEBrick dependency) — see static_server.rb.
|
|
10
|
+
def serve(dir:, port: 8080, path: '')
|
|
11
|
+
Ruby2D::CLI::StaticServer.serve(dir: dir, port: port, path: path)
|
|
10
12
|
end
|
|
11
13
|
|
|
12
14
|
|
|
13
|
-
# Launch a
|
|
14
|
-
def
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
open_cmd = 'open'
|
|
20
|
-
case RUBY_PLATFORM
|
|
21
|
-
when /linux/
|
|
22
|
-
open_cmd = "xdg-#{open_cmd}"
|
|
23
|
-
when /mingw/
|
|
24
|
-
open_cmd = "start"
|
|
15
|
+
# Launch a native app, passing its stdio through so console output is visible.
|
|
16
|
+
def launch_native
|
|
17
|
+
exe = AssetsTarget.host_os == 'windows' ? 'app.exe' : 'app'
|
|
18
|
+
unless File.exist?("build/native/#{exe}")
|
|
19
|
+
error 'No native app found. Run `ruby2d build --native` first.'
|
|
20
|
+
exit 1
|
|
25
21
|
end
|
|
26
|
-
|
|
22
|
+
# Run with the build dir as the working directory so the app resolves its
|
|
23
|
+
# bundled media by relative path, the way the built app expects.
|
|
24
|
+
system(File.expand_path("build/native/#{exe}"), chdir: 'build/native')
|
|
27
25
|
end
|
|
28
26
|
|
|
29
27
|
|
|
30
|
-
# Launch
|
|
31
|
-
def
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
puts "No iOS app built!"
|
|
36
|
-
exit
|
|
37
|
-
end
|
|
38
|
-
puts `simple2d simulator --open "iPhone X" &&
|
|
39
|
-
simple2d simulator --install "build/ios/build/Release-iphonesimulator/MyApp.app" &&
|
|
40
|
-
simple2d simulator --launch "Ruby2D.MyApp"`
|
|
41
|
-
when 'tvos'
|
|
42
|
-
if !File.exist? 'build/tvos/build/Release-appletvsimulator/MyApp.app'
|
|
43
|
-
puts "No tvOS app built!"
|
|
44
|
-
exit
|
|
45
|
-
end
|
|
46
|
-
puts `simple2d simulator --open "Apple TV 4K" &&
|
|
47
|
-
simple2d simulator --install "build/tvos/build/Release-appletvsimulator/MyApp.app" &&
|
|
48
|
-
simple2d simulator --launch "Ruby2D.MyApp"`
|
|
28
|
+
# Launch a web app
|
|
29
|
+
def launch_web
|
|
30
|
+
unless File.exist?('build/web/app.html')
|
|
31
|
+
error 'No web app found. Run `ruby2d build --web` first.'
|
|
32
|
+
exit 1
|
|
49
33
|
end
|
|
34
|
+
serve(dir: File.expand_path('build/web'), port: 8080, path: 'app.html')
|
|
50
35
|
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
module Ruby2D
|
|
2
|
+
module CLI
|
|
3
|
+
# The Ruby 2D library files, in load order, that get concatenated and
|
|
4
|
+
# compiled to mruby bytecode. Single source of truth shared by the native/web
|
|
5
|
+
# app build (`cli/build.rb`) and the "Try Ruby 2D" WASM build (`try/build.rb`)
|
|
6
|
+
# so the two lists can't drift. Includes files from subdirectories like
|
|
7
|
+
# `cli/` and `window/`, so it is not a plain `lib/ruby2d/*.rb` glob.
|
|
8
|
+
LIB_FILES = %w[
|
|
9
|
+
mruby_compat
|
|
10
|
+
cli/colorize
|
|
11
|
+
exceptions
|
|
12
|
+
warnings
|
|
13
|
+
window/class_methods
|
|
14
|
+
window/key_events
|
|
15
|
+
window/mouse_events
|
|
16
|
+
window/gamepad_events
|
|
17
|
+
window/object_events
|
|
18
|
+
gamepad
|
|
19
|
+
window
|
|
20
|
+
interactive
|
|
21
|
+
renderable
|
|
22
|
+
color
|
|
23
|
+
audio
|
|
24
|
+
canvas
|
|
25
|
+
circle
|
|
26
|
+
ellipse
|
|
27
|
+
font
|
|
28
|
+
image
|
|
29
|
+
json_parser
|
|
30
|
+
atlas_parser
|
|
31
|
+
sprite_sheet
|
|
32
|
+
line
|
|
33
|
+
polygon
|
|
34
|
+
polyline
|
|
35
|
+
quad
|
|
36
|
+
rectangle
|
|
37
|
+
sprite
|
|
38
|
+
square
|
|
39
|
+
text
|
|
40
|
+
bitmap_text
|
|
41
|
+
tileset
|
|
42
|
+
triangle
|
|
43
|
+
button
|
|
44
|
+
vertices
|
|
45
|
+
dsl
|
|
46
|
+
].freeze
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Ruby 2D CLI messages
|
|
2
|
+
#
|
|
3
|
+
# The `Error:` / `Warning:` / `Note:` lines shared by the `ruby2d` CLI, `rake`,
|
|
4
|
+
# and the build scripts. The label carries the color and the message stays
|
|
5
|
+
# normal weight, so the eye lands on the label first.
|
|
6
|
+
#
|
|
7
|
+
# Kept out of `LIB_FILES` (see `cli/lib_files.rb`) on purpose: these write to a
|
|
8
|
+
# terminal, and compiling them into every native and web app would ship CLI-only
|
|
9
|
+
# code inside a user's game.
|
|
10
|
+
|
|
11
|
+
require_relative 'colorize'
|
|
12
|
+
|
|
13
|
+
# Compose a labeled line. `spaced` adds a blank line above, for a message that
|
|
14
|
+
# interrupts a run of build output; `indent` matches the nesting of the output
|
|
15
|
+
# around it (task bodies indent their results by four).
|
|
16
|
+
#
|
|
17
|
+
# The `ruby2d_` prefix keeps this clear of `mkmf`'s own `message`, which is in
|
|
18
|
+
# scope while `extconf.rb` runs.
|
|
19
|
+
def ruby2d_labeled(label, msg, spaced, indent)
|
|
20
|
+
"#{"\n" if spaced}#{' ' * indent}#{label} #{msg}"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def error(msg, spaced: false, indent: 0)
|
|
24
|
+
puts ruby2d_labeled('Error:'.error, msg, spaced, indent)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def warning(msg, spaced: false, indent: 0)
|
|
28
|
+
puts ruby2d_labeled('Warning:'.warning, msg, spaced, indent)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def note(msg, spaced: false, indent: 0)
|
|
32
|
+
puts ruby2d_labeled('Note:'.bold, msg, spaced, indent)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Print an `Error:` line and exit non-zero. Writes to stderr rather than stdout,
|
|
36
|
+
# and never returns — so it also reads correctly as the right-hand side of
|
|
37
|
+
# `system(cmd) || abort_error(...)`.
|
|
38
|
+
def abort_error(msg, spaced: false, indent: 0)
|
|
39
|
+
abort ruby2d_labeled('Error:'.error, msg, spaced, indent)
|
|
40
|
+
end
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
# Build Ruby 2D's native dependencies (the SDL3 + mruby static libraries) for
|
|
2
|
+
# the current platform. The gem bundles prebuilt libraries for the common
|
|
3
|
+
# RELEASE_PLATFORMS; this builds them for everything else (e.g. Linux, Intel
|
|
4
|
+
# macOS) into a per-user cache outside the — possibly read-only — gem, where
|
|
5
|
+
# `ruby2d build --native` then resolves them (see cli/build's deps_platform_dir).
|
|
6
|
+
|
|
7
|
+
# Requires only extension-free pieces (gem_paths, not ruby2d) so `setup` can run
|
|
8
|
+
# to build the native extension when it doesn't exist yet.
|
|
9
|
+
require 'ruby2d/gem_paths'
|
|
10
|
+
require 'fileutils'
|
|
11
|
+
require 'ruby2d/cli/colorize'
|
|
12
|
+
require 'ruby2d/cli/messages'
|
|
13
|
+
require 'ruby2d/version'
|
|
14
|
+
require_relative '../../../assets/target'
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# A ruby-red diamond banner, matching the `ruby2d` CLI and `rake` output.
|
|
18
|
+
def setup_step(title)
|
|
19
|
+
puts "\n #{'◆'.ruby2d_red} #{title.bold}"
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
# A friendly label for the platform being built (e.g. "macOS (x86_64)"). Reads
|
|
24
|
+
# the resolved target rather than the host: RUBY2D_ASSETS_OS/ARCH redirect setup
|
|
25
|
+
# at another platform's directory, and naming the host would then describe a
|
|
26
|
+
# build that isn't happening. Any toolchain is left to the target id printed
|
|
27
|
+
# alongside it.
|
|
28
|
+
def setup_platform_label
|
|
29
|
+
os, arch, = AssetsTarget.resolved_target
|
|
30
|
+
name = { 'macos' => 'macOS', 'windows' => 'Windows',
|
|
31
|
+
'linux' => 'Linux', 'bsd' => 'BSD' }.fetch(os, os)
|
|
32
|
+
"#{name} (#{arch})"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
# Abbreviate a home-relative path to `~/…` for tidy, portable output.
|
|
37
|
+
def setup_tildify(path)
|
|
38
|
+
home = Dir.home
|
|
39
|
+
path.start_with?(home) ? path.sub(home, '~') : path
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
# Whether a command is on PATH. Unix only — setup's preflight runs there; on
|
|
44
|
+
# Windows the assets Rakefile bootstraps git/cmake via MSYS2 pacman itself.
|
|
45
|
+
def setup_command?(cmd)
|
|
46
|
+
system("command -v #{cmd} >/dev/null 2>&1")
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
# Whether a pkg-config module's development files are installed. Used by the
|
|
51
|
+
# Linux preflight to find missing display libraries before SDL's CMake aborts
|
|
52
|
+
# on them — a wall of text several seconds into the build.
|
|
53
|
+
def setup_pkg_config?(mod)
|
|
54
|
+
system("pkg-config --exists #{mod} >/dev/null 2>&1")
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
# Check the host build toolchain up front and, if something's missing, print a
|
|
59
|
+
# platform-specific hint and stop — rather than failing partway through a
|
|
60
|
+
# multi-minute build. No-op on Windows, where the assets Rakefile offers to
|
|
61
|
+
# install git/cmake via pacman during its own preflight.
|
|
62
|
+
def setup_preflight!
|
|
63
|
+
return if AssetsTarget.host_os == 'windows'
|
|
64
|
+
|
|
65
|
+
cc = ENV['CC'] || 'cc'
|
|
66
|
+
linux = AssetsTarget.host_os == 'linux'
|
|
67
|
+
missing = []
|
|
68
|
+
missing << 'git' unless setup_command?('git')
|
|
69
|
+
missing << 'cmake' unless setup_command?('cmake')
|
|
70
|
+
missing << cc unless setup_command?(cc)
|
|
71
|
+
# SDL's Linux build finds Wayland (and much else) through pkg-config, and the
|
|
72
|
+
# display-library check below needs it to answer — so require it here.
|
|
73
|
+
missing << 'pkg-config' if linux && !setup_command?('pkg-config')
|
|
74
|
+
|
|
75
|
+
unless missing.empty?
|
|
76
|
+
hint = case AssetsTarget.host_os
|
|
77
|
+
when 'macos'
|
|
78
|
+
'Install the Xcode Command Line Tools (`xcode-select --install`) and CMake (`brew install cmake`).'
|
|
79
|
+
when 'linux'
|
|
80
|
+
'Install a C toolchain, CMake, Git, and pkg-config — e.g. `sudo apt install build-essential cmake git pkg-config`.'
|
|
81
|
+
else
|
|
82
|
+
'Install a C toolchain, CMake, and Git with your system package manager (e.g. `pkg install cmake git`).'
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
error "Missing build tools: #{missing.join(', ')}", spaced: true
|
|
86
|
+
puts " #{hint}"
|
|
87
|
+
exit 1
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# SDL won't build a desktop windowing backend without X11 or Wayland
|
|
91
|
+
# development libraries; its CMake mirrors this exact check, but only after
|
|
92
|
+
# cloning and configuring — so catch it here with a clean, actionable message
|
|
93
|
+
# instead of that error's wall of text. pkg-config is guaranteed present
|
|
94
|
+
# above, so it can answer for both. Linux only: the fix (apt packages, the
|
|
95
|
+
# SDL wiki) is Debian-shaped, and BSD's expert audience is served by CMake's.
|
|
96
|
+
if linux && !setup_pkg_config?('x11') && !setup_pkg_config?('wayland-client')
|
|
97
|
+
error 'SDL needs X11 or Wayland development libraries; neither was found.', spaced: true
|
|
98
|
+
puts " Install SDL's build dependencies for your distribution, then re-run #{'ruby2d setup'.bold}:"
|
|
99
|
+
puts ' https://wiki.libsdl.org/SDL3/README-linux'
|
|
100
|
+
exit 1
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
# Ask before doing the involved work, after printing what it entails. Enter
|
|
106
|
+
# accepts (the user asked for this by typing the command — the prompt is there
|
|
107
|
+
# to surface the cost, not to second-guess). Skipped by `--yes`, and when stdin
|
|
108
|
+
# isn't a TTY (CI, pipelines) where there's nobody to answer.
|
|
109
|
+
def setup_confirm!(yes:)
|
|
110
|
+
return if yes || !$stdin.tty?
|
|
111
|
+
|
|
112
|
+
print "\n Continue? #{'[Y/n]'.dim} "
|
|
113
|
+
# A bare Enter accepts; EOF (Ctrl-D) does not — closing the input is a way
|
|
114
|
+
# out of the prompt, not a way to start a multi-minute build.
|
|
115
|
+
answer = $stdin.gets
|
|
116
|
+
return if answer && (answer.strip.empty? || %w[y yes].include?(answer.strip.downcase))
|
|
117
|
+
|
|
118
|
+
puts "\n Cancelled.\n\n"
|
|
119
|
+
exit 0
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
# List the static libraries and binaries a build produced under `dir`.
|
|
124
|
+
def setup_list_artifacts(dir)
|
|
125
|
+
Dir.glob(File.join(dir, 'lib', '*.a')).map { |f| File.basename(f) }.sort.each { |f| puts " lib/#{f}" }
|
|
126
|
+
Dir.glob(File.join(dir, 'bin', '*')).map { |f| File.basename(f) }.sort.each { |f| puts " bin/#{f}" }
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
# Remove this platform's cache build: the libraries, shared headers, and the
|
|
131
|
+
# regenerable intermediates and downloaded sources.
|
|
132
|
+
def setup_clean(yes: false)
|
|
133
|
+
cache = AssetsTarget.cache_root
|
|
134
|
+
platform = AssetsTarget.platform_dir(root: cache)
|
|
135
|
+
|
|
136
|
+
# Nothing cached for this platform — say so rather than confirming a no-op.
|
|
137
|
+
unless Dir.exist?(platform)
|
|
138
|
+
setup_step 'Nothing to remove'
|
|
139
|
+
puts " #{"no cached dependencies for #{setup_platform_label}".dim}"
|
|
140
|
+
puts "\n #{setup_tildify(platform)} doesn't exist.\n\n"
|
|
141
|
+
return
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
setup_step 'Remove cached dependencies'
|
|
145
|
+
puts " #{"for #{setup_platform_label}".dim}"
|
|
146
|
+
puts "\n This removes #{setup_tildify(platform)} and its build files."
|
|
147
|
+
puts " Rebuilding them with #{'ruby2d setup'.bold} takes several minutes."
|
|
148
|
+
setup_confirm!(yes: yes)
|
|
149
|
+
|
|
150
|
+
[platform,
|
|
151
|
+
AssetsTarget.include_dir(root: cache),
|
|
152
|
+
AssetsTarget.build_dir(root: cache),
|
|
153
|
+
AssetsTarget.sources_dir(root: cache)].each { |dir| FileUtils.rm_rf dir }
|
|
154
|
+
|
|
155
|
+
puts "\n Removed #{setup_tildify(platform)}.\n\n"
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
# Build the native SDL3 + mruby static libraries for the current platform.
|
|
160
|
+
def setup(force: false, clean: false, yes: false)
|
|
161
|
+
if clean
|
|
162
|
+
# `--clean` is standalone: it only removes. Say so rather than letting a
|
|
163
|
+
# combined `--force` look like it did something (matches `build --clean`).
|
|
164
|
+
note '`--clean` only removes the built libraries; `--force` was ignored.' if force
|
|
165
|
+
return setup_clean(yes: yes)
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
target = AssetsTarget.target_id
|
|
169
|
+
cache = AssetsTarget.cache_root
|
|
170
|
+
cache_platform = AssetsTarget.platform_dir(root: cache)
|
|
171
|
+
stamp = File.join(cache_platform, '.ruby2d-version')
|
|
172
|
+
|
|
173
|
+
# Already provided? The gem bundles prebuilt libraries for RELEASE_PLATFORMS.
|
|
174
|
+
bundled = AssetsTarget.platform_dir(root: Ruby2D.assets)
|
|
175
|
+
bundled_exists = File.exist?(File.join(bundled, 'lib', 'libSDL3.a'))
|
|
176
|
+
if !force && bundled_exists
|
|
177
|
+
setup_step 'Native dependencies ready'
|
|
178
|
+
puts " #{"#{setup_platform_label} — bundled with the gem".dim}"
|
|
179
|
+
puts "\n Nothing to build. Run #{'ruby2d build --native <app>.rb'.bold} to build an app.\n\n"
|
|
180
|
+
return
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
# Already built for this ruby2d version? Skip unless --force.
|
|
184
|
+
built = File.exist?(File.join(cache_platform, 'lib', 'libSDL3.a')) &&
|
|
185
|
+
File.exist?(stamp) && File.read(stamp).strip == Ruby2D::VERSION
|
|
186
|
+
if built && !force
|
|
187
|
+
setup_step 'Native dependencies ready'
|
|
188
|
+
puts " #{"#{setup_platform_label} — built at #{setup_tildify(cache_platform)}".dim}"
|
|
189
|
+
puts "\n Already built. Re-run with #{'--force'.bold} to rebuild, or #{'ruby2d build --native <app>.rb'.bold} to build an app.\n\n"
|
|
190
|
+
return
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
setup_preflight!
|
|
194
|
+
|
|
195
|
+
# Header — surface the platform and cache location up front (again at the
|
|
196
|
+
# end), spell out what the build entails, and confirm before starting: this
|
|
197
|
+
# downloads sources, compiles for minutes, and rebuilds the installed gem.
|
|
198
|
+
setup_step 'Set up native dependencies'
|
|
199
|
+
puts
|
|
200
|
+
puts " #{'Platform'.dim} #{setup_platform_label} #{"(#{target})".dim}"
|
|
201
|
+
puts " #{'Location'.dim} #{setup_tildify(cache_platform)}"
|
|
202
|
+
puts "\n #{'This will:'.bold}"
|
|
203
|
+
if AssetsTarget.host_os == 'windows'
|
|
204
|
+
puts ' • Offer to install any missing build tools (git, CMake) via MSYS2'
|
|
205
|
+
end
|
|
206
|
+
puts ' • Download the SDL3 and mruby sources with git'
|
|
207
|
+
puts ' • Compile them into static libraries — this takes several minutes'
|
|
208
|
+
puts " • Rebuild the Ruby 2D extension with #{'gem pristine ruby2d'.bold}"
|
|
209
|
+
puts "\n Sources and build files go under the location above; only the last"
|
|
210
|
+
puts ' step touches anything outside it.'
|
|
211
|
+
|
|
212
|
+
# SDL links a lot of the system's development libraries — windowing, audio,
|
|
213
|
+
# and more — and the full set is distro-specific and long, so point at SDL's
|
|
214
|
+
# own list rather than trying to enumerate it. Preflight has already confirmed
|
|
215
|
+
# the one hard requirement (X11 or Wayland); this covers the rest, whose
|
|
216
|
+
# absence quietly disables features (e.g. no audio) instead of failing loudly.
|
|
217
|
+
if AssetsTarget.host_os == 'linux'
|
|
218
|
+
note "SDL builds against your system's development libraries — windowing,", spaced: true
|
|
219
|
+
puts ' audio, and more. Install the packages for your distribution before continuing:'
|
|
220
|
+
puts ' https://wiki.libsdl.org/SDL3/README-linux'
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
# Only `--force` gets here on a platform the gem already bundles, and a build
|
|
224
|
+
# resolves bundled libraries first (see cli/build's deps_platform_dir) — so
|
|
225
|
+
# this build won't be linked against. Worth saying before spending minutes on
|
|
226
|
+
# it, rather than refusing: rebuilding is still a fair way to check the
|
|
227
|
+
# pinned sources compile on this machine.
|
|
228
|
+
if bundled_exists
|
|
229
|
+
warning "This platform's libraries are bundled with the gem, and a", spaced: true
|
|
230
|
+
puts " build prefers those — so #{'ruby2d build'.bold} won't link what this produces."
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
setup_confirm!(yes: yes)
|
|
234
|
+
|
|
235
|
+
setup_step 'Building native dependencies'
|
|
236
|
+
puts " #{'$ rake sdl mruby'.dim}\n\n"
|
|
237
|
+
|
|
238
|
+
# Redirect sources, intermediates, and output to the cache so nothing is
|
|
239
|
+
# written into the gem dir. Scope the override to the build subprocess (env
|
|
240
|
+
# hash) so it doesn't leak into the `gem pristine` below — that step needs the
|
|
241
|
+
# standard bundled -> cache resolution. The assets Rakefile carries the pinned
|
|
242
|
+
# versions, the cmake/mruby build steps, and (on Windows) the pacman bootstrap.
|
|
243
|
+
ok = Dir.chdir(Ruby2D.assets) do
|
|
244
|
+
system({ 'RUBY2D_ASSETS_ROOT' => cache }, 'rake', 'sdl', 'mruby')
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
unless ok
|
|
248
|
+
error 'Failed to build the native dependencies. See the output above.', spaced: true
|
|
249
|
+
exit 1
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
# Stamp the build so `ruby2d build` and extconf only link it against a matching
|
|
253
|
+
# gem version — a later upgrade may pin newer SDL/mruby.
|
|
254
|
+
File.write(stamp, Ruby2D::VERSION)
|
|
255
|
+
|
|
256
|
+
setup_step 'Built the native dependencies'
|
|
257
|
+
puts "\n #{"Native (#{target})".bold}"
|
|
258
|
+
setup_list_artifacts(cache_platform)
|
|
259
|
+
puts "\n Built to #{setup_tildify(cache_platform)}"
|
|
260
|
+
|
|
261
|
+
# Build (or rebuild) the CRuby native extension through RubyGems' standard
|
|
262
|
+
# path now that the libraries exist — extconf resolves this cache build. This
|
|
263
|
+
# keeps the extension entirely on RubyGems' rails; setup builds no extension
|
|
264
|
+
# itself.
|
|
265
|
+
setup_step 'Building the Ruby 2D extension'
|
|
266
|
+
puts " #{'$ gem pristine ruby2d'.dim}\n\n"
|
|
267
|
+
if system('gem', 'pristine', 'ruby2d')
|
|
268
|
+
puts "\n #{'Ready!'.bold} #{"require 'ruby2d'".bold} now works — run #{'ruby2d build --native <app>.rb'.bold} to build an app.\n\n"
|
|
269
|
+
else
|
|
270
|
+
warning "Couldn't rebuild the extension automatically.", spaced: true
|
|
271
|
+
puts " Run #{'gem pristine ruby2d'.bold} yourself to finish.\n\n"
|
|
272
|
+
end
|
|
273
|
+
end
|