#==========================================================================
# Dump_Font
#--------------------------------------------------------------------------
# Fontの属性情報をdumpできるように保存するクラス
# Bitmap#font=()へ引き渡す際はto_fontメソッドを用いる
#--------------------------------------------------------------------------
# ver.1.00(05/10/06) by 箱入小屋 [url]http://aea.to/hako/[/url]
#==========================================================================
class Dump_Font
# 初期化
# font : Fontオブジェクト
def initialize(font)
@name = font.name
@size = font.size
@bold = font.bold
@italic = font.italic
@color = Color.new(font.color.red, font.color.green, font.color.blue,
font.color.alpha)
end
# Fontオブジェクトに変換して返す
def to_font
font = Font.new(@name, @size)
font.bold = @bold
font.italic = @italic
font.color = @color
return font
end
end
#==========================================================================
# text_picture
#--------------------------------------------------------------------------
# イベントコマンド「スクリプト」でメソッド「text_picture」を呼び出した後、
# イベントコマンド「ピクチャの表示」で表示します。
# クラス「Dump_Font」が必要です。
#--------------------------------------------------------------------------
# ver 1.03 (05/10/08) by 箱入小屋 [url]http://aea.to/hako/[/url]
#==========================================================================
class Interpreter
#--------------------------------------------------------------------------
# ● 文字列を「ピクチャ」として表示
# text : 文字列
# font : フォント(Font) *省略可
#--------------------------------------------------------------------------
def text_picture(text, font = nil)
if font.is_a?(Font) and not Font.exist?(font.name)
#◆ フォントが存在しない場合のフォント名
font.name = ["MS Pゴシック", "MS P明朝", "黑体", "宋体"]
elsif font.nil?
font = Font.new
#◆ フォントを指定しなかった場合のフォント
font.name = ["MS Pゴシック", "MS P明朝", "黑体", "宋体"] # フォント名
font.size = 22 # サイズ
font.bold = false # ボールド(太字)フラグ
font.italic = false # イタリック(斜体)フラグ
font.color = Color.new(255,255,255) # フォントカラー(R, G, B)
end
@draw_text = [1, text, Dump_Font.new(font)]
return true
end
#--------------------------------------------------------------------------
# ● ピクチャの表示(再定義)
#--------------------------------------------------------------------------
alias text_picture_command231 command_231
def command_231
unless @draw_text.nil?
@parameters[1] = @draw_text # picture_name
end
text_picture_command231
@draw_text = nil
return true
end
end
class Sprite_Picture < Sprite
#--------------------------------------------------------------------------
# ● フレーム更新(再定義)
#--------------------------------------------------------------------------
alias text_picture_update update
def update
# text_picture(Interpreter)で文字列を指定された場合
if @picture_name != @picture.name and @picture.name[0] == 1
@picture_name = @picture.name # [id(1), text, Dump_Font]の配列
self.bitmap = Bitmap.new(640, 100)
font = @picture_name[2].to_font
self.bitmap.font = font
rect = self.bitmap.text_size(@picture_name[1])
self.bitmap.dispose
self.bitmap = Bitmap.new(rect.width, rect.height)
self.bitmap.font = font
self.bitmap.draw_text(rect, @picture_name[1])
end
text_picture_update
end
end
#==========================================================================
# text_picture2 -- 複数行の文字列を「ピクチャ」として表示
#--------------------------------------------------------------------------
# イベントコマンド「スクリプト」で
# text_picture2(text [, font [, align]])
# を呼び出した後、イベントコマンド「ピクチャの表示」で表示します。
# クラス「Dump_Font」が必要です。
#--------------------------------------------------------------------------
# ver 1.00 (05/10/10) by 箱入小屋 [url]http://aea.to/hako/[/url]
#==========================================================================
class Sprite_Picture < Sprite
#--------------------------------------------------------------------------
# ◆ 定数
#--------------------------------------------------------------------------
# 行間の指定 (指定しない方は nil にしてください)
LINE_SPACE_PIXEL = 10 # ピクセル数で指定
LINE_SPACE_VARID = nil # このIDのゲーム変数に代入されている値で指定
end
class Interpreter
#--------------------------------------------------------------------------
# ● 複数行の文字列を「ピクチャ」として設定
# text : 文字列
# font : フォント(Font) *省略可
# align : アラインメント (0..左揃え、1..中央揃え、2..右揃え) *省略可
#--------------------------------------------------------------------------
def text_picture2(text, font = nil, align = 0)
if font.is_a?(Font) and not Font.exist?(font.name)
#◆ フォントがない場合のフォント名
font.name = ["MS Pゴシック", "MS P明朝", "黑体", "宋体"]
elsif font.nil?
font = Font.new
#◆ フォントを指定しなかった場合のフォント
font.name = ["MS Pゴシック", "MS P明朝", "黑体", "宋体"] # フォント名
font.size = 22 # サイズ
font.bold = false # ボールド(太字)フラグ
font.italic = false # イタリック(斜体)フラグ
font.color = Color.new(255,255,255) # フォントカラー(R, G, B)
end
@draw_text = [2, text, Dump_Font.new(font), align]
return true
end
#--------------------------------------------------------------------------
# ● ピクチャの表示(再定義)
#--------------------------------------------------------------------------
alias text_picture2_command231 command_231
def command_231
unless @draw_text.nil?
@parameters[1] = @draw_text
end
text_picture2_command231
@draw_text = nil
return true
end
end
class Sprite_Picture < Sprite
#--------------------------------------------------------------------------
# ● フレーム更新(再定義)
#--------------------------------------------------------------------------
alias text_picture2_update update
def update
# Interpreter#text_picture2で文字列表示の情報を受け取った場合
if @picture_name != @picture.name and @picture.name[0] == 2
@picture_name = @picture.name #=> [id(2), text, Dump_Font, align]
self.bitmap = Bitmap.new(640, 480)
self.bitmap.font = @picture_name[2].to_font
y = 0
space = LINE_SPACE_PIXEL ? LINE_SPACE_PIXEL : $game_variables[LINE_SPACE_VARID]
@picture_name[1].each_line do |line|
h = self.bitmap.text_size(line).height
self.bitmap.draw_text(0, y, 640, h, line, @picture_name[3])
y += h + space
end
end
text_picture2_update
end
end