Jewel-mmo開発日記

RubyでMMORPGを作る過程を記録する日記。 Yokohama.rb 発起人。
2006-12-10

[MyGame] フォントに関する問題

MyGame には TTF を扱う Font クラスがある。

今まではアプリケーションが毎回 ttf ファイルの絶対パスを指定する方針だったのだが、これでは何かと面倒だ。 MyGame にデフォルトの ttf を同梱して MyGame インストール時に ttf ファイルも Ruby へぶち込んでしまえば、利用者はなにも考えなくていいので楽なんじゃないかと思った。

Ruby のディレクトリを見てみると share というのがあったので、もしかしてこれがそういう用途のために用意されているものじゃないだろうか。

インストーラに以下を追加。

mygame_datadir = File.join(datadir, 'mygame')
FileUtils.mkpath(datadir, option)
FileUtils.mkpath(mygame_datadir, option)
Dir.glob("fonts/*.ttf"){|fname| FileUtils.install(fname, mygame_datadir, option)}

でもって Font クラスには以下を追加して、何も設定しなくてもデフォルトのフォントを使うようにする。

require 'rbconfig'
class Font < DrawPrim
  def self.setup_default_setting(ttf = nil, size = nil)
    datadir = Config::CONFIG["datadir"]
    mygame_datadir = File.join(datadir, 'mygame')
    @@default_ttf_path = ttf || File.join(mygame_datadir, 'fontname.ttf')
    @@default_size = size || 16
  end
  setup_default_setting
end

フォント描画の例。

require 'mygame/boot'
Font.draw "Hello"

一行減った。わーい。