From 3947ca0a07fdbe27a737522b366cca026a757c65 Mon Sep 17 00:00:00 2001 From: Tom Black Date: Thu, 3 Jan 2019 21:25:37 -0800 Subject: Add an assets path variable Adds `Ruby2D.assets/=`. By default, will resolve to `./assets`. If run in a macOS app bundle, will resolve to `App.app/Contents/Resources/assets`, for example. --- ext/ruby2d/ruby2d.c | 15 ++++++++++ lib/ruby2d.rb | 79 +++++++++++++++++++++++++++++++------------------ lib/ruby2d/cli/build.rb | 12 ++++---- 3 files changed, 71 insertions(+), 35 deletions(-) diff --git a/ext/ruby2d/ruby2d.c b/ext/ruby2d/ruby2d.c index 3d300dc..300c8e0 100644 --- a/ext/ruby2d/ruby2d.c +++ b/ext/ruby2d/ruby2d.c @@ -154,6 +154,18 @@ double normalize_controller_axis(int val) { } +/* + * Ruby2D#self.ext_base_path + */ +#if MRUBY +static R_VAL ruby2d_ext_base_path(mrb_state* mrb, R_VAL self) { +#else +static R_VAL ruby2d_ext_base_path(R_VAL self) { +#endif + return r_str_new(SDL_GetBasePath()); +} + + /* * Ruby2D#self.ext_screenshot */ @@ -1102,6 +1114,9 @@ void Init_ruby2d() { // Ruby2D R_CLASS ruby2d_module = r_define_module("Ruby2D"); + // Ruby2D#self.ext_base_path + r_define_class_method(ruby2d_module, "ext_base_path", ruby2d_ext_base_path, r_args_none); + // Ruby2D::Triangle R_CLASS ruby2d_triangle_class = r_define_class(ruby2d_module, "Triangle"); diff --git a/lib/ruby2d.rb b/lib/ruby2d.rb index 2471888..305f065 100644 --- a/lib/ruby2d.rb +++ b/lib/ruby2d.rb @@ -1,36 +1,59 @@ # Ruby2D module and native extension loader, adds DSL -require 'ruby2d/colorize' -require 'ruby2d/exceptions' -require 'ruby2d/renderable' -require 'ruby2d/color' -require 'ruby2d/window' -require 'ruby2d/dsl' -require 'ruby2d/quad' -require 'ruby2d/line' -require 'ruby2d/circle' -require 'ruby2d/rectangle' -require 'ruby2d/square' -require 'ruby2d/triangle' -require 'ruby2d/image' -require 'ruby2d/sprite' -require 'ruby2d/font' -require 'ruby2d/text' -require 'ruby2d/sound' -require 'ruby2d/music' - -if RUBY_PLATFORM =~ /mingw/ - # When using the Windows CI AppVeyor - if ENV['APPVEYOR'] - s2d_dll_path = 'C:\msys64\usr\local\bin' - # When in a standard MinGW shell - else - s2d_dll_path = '~/../../usr/local/bin' +unless RUBY_ENGINE == 'mruby' + require 'ruby2d/colorize' + require 'ruby2d/exceptions' + require 'ruby2d/renderable' + require 'ruby2d/color' + require 'ruby2d/window' + require 'ruby2d/dsl' + require 'ruby2d/quad' + require 'ruby2d/line' + require 'ruby2d/circle' + require 'ruby2d/rectangle' + require 'ruby2d/square' + require 'ruby2d/triangle' + require 'ruby2d/image' + require 'ruby2d/sprite' + require 'ruby2d/font' + require 'ruby2d/text' + require 'ruby2d/sound' + require 'ruby2d/music' + + if RUBY_PLATFORM =~ /mingw/ + # When using the Windows CI AppVeyor + if ENV['APPVEYOR'] + s2d_dll_path = 'C:\msys64\usr\local\bin' + # When in a standard MinGW shell + else + s2d_dll_path = '~/../../usr/local/bin' + end + RubyInstaller::Runtime.add_dll_directory(File.expand_path(s2d_dll_path)) end - RubyInstaller::Runtime.add_dll_directory(File.expand_path(s2d_dll_path)) + + require 'ruby2d/ruby2d' # load native extension end -require 'ruby2d/ruby2d' # load native extension + +module Ruby2D + + @assets = nil + + class << self + def assets + unless @assets + if RUBY_ENGINE == 'mruby' + @assets = Ruby2D.ext_base_path + 'assets' + else + @assets = './assets' + end + end + @assets + end + + def assets=(path); @assets = path end + end +end include Ruby2D extend Ruby2D::DSL diff --git a/lib/ruby2d/cli/build.rb b/lib/ruby2d/cli/build.rb index 72b80a4..5f26e66 100644 --- a/lib/ruby2d/cli/build.rb +++ b/lib/ruby2d/cli/build.rb @@ -7,8 +7,9 @@ require 'fileutils' # The Ruby 2D library files @lib_files = [ - 'renderable', + 'colorize', 'exceptions', + 'renderable', 'color', 'window', 'dsl', @@ -23,7 +24,8 @@ require 'fileutils' 'font', 'text', 'sound', - 'music' + 'music', + '../ruby2d' ] @@ -45,15 +47,11 @@ def make_lib lib_dir = "#{@gem_dir}/lib/ruby2d/" - lib = "" + lib = '' @lib_files.each do |f| lib << File.read("#{lib_dir + f}.rb") + "\n\n" end - lib << " -include Ruby2D -extend Ruby2D::DSL\n" - File.write('build/lib.rb', lib) end -- cgit v1.2.3