前の記事に書いた dxopal_sdl.rb
を使う形に書き換えます。
ここは上記の記事に書いた通り。
--- a/main.rb +++ b/main.rb @@ -1,4 +1,13 @@ -require 'dxopal' +def browser? + Kernel.const_defined?(:Native) +end + +if browser? + require "dxopal" +else + require "./dxopal_sdl" +end + include DXOpal require_remote "./data.rb"
実行時に環境変数で切り替えるように run.sh
を修正。
--- a/run.sh +++ b/run.sh @@ -7,4 +7,8 @@ bundle exec ruby gen_sound.rb \ ruby preprocess.rb "$@" > data.rb -bundle exec dxopal server +if [ "$BROWSER" = "1" ]; then + bundle exec dxopal server +else + bundle exec ruby main.rb +fi
ブラウザで動かすときは
BROWSER=1 ./run.sh ...
のように実行します。
SDL版で動かすときは
BROWSER=0 ./run.sh ...
のように実行します。
BROWSER=1
でなければ何でもいいので環境変数自体を省略してもOK。
もう一箇所、JSON のパース部分が動かなくなるのでここも直します。
--- a/main.rb +++ b/main.rb @@ -18,7 +18,12 @@ require_remote "./view.rb" PPC = 30 def parse_json(json) - Native(`JSON.parse(json)`) + if browser? + Native(`JSON.parse(json)`) + else + require "json" + JSON.parse(json) + end end
これでよし。 DXOpal 版と SDL 版が両方動くようになりました。