#==============================================================================
# ★RGSS2
# STR27_文字ピクチャ生成 v1.2 09/04/18
#
# ・指定した文字列をピクチャ表示させます。
#
# ■使用方法
# 以下のスクリプトをイベントコマンドで実行した後、
# ピクチャの表示"コマンドで文字ピクチャを表示させます。
=begin
ここから
# テキスト
t = "hogehoge"
s = 20 # 文字サイズ
p = 0 # フォントパターン
text_picture(t, p, s)
ここまで
=end
#
# ※フォントパターンは下の設定箇所で定義します。
# ※フォントサイズが小さすぎたり大きすぎたりすると
# エラーがでます。注意してください。
#
#------------------------------------------------------------------------------
#
# 更新履歴
# ◇1.1→1.2
# 影文字を無効に出来ない不具合を修正
# ◇1.0→1.1
# ""内の改行箇所などで・が表示されるバグを修正
#
#==============================================================================
# ★ フォントパターン定義(設定箇所)
#==============================================================================
module STRRGSS2
# ↓対応する値
# 通常の文字
STR27_FLIST = {
#==============================================================================
# GK TILES
0 => [GK::DEFAULT_FONT,false,false,false,false,Colors::AliceBlue,Color.new(0,0,0)],
1 => [GK::DEFAULT_FONT,false,false,false,false,Colors::MediumVioletred,Color.new(0,0,0)],
2 => [GK::DEFAULT_FONT,false,false,false,false,Colors::DeepSkyBlue,Color.new(0,0,0)],
#白 縁:黒UmePlus Gothic
10 => [GK::DEFAULT_FONT, # フォント名
false, # 太字
false, # 斜体
true, # 影文字
true, # 縁取り
Color.new(255,255,255), # 文字色
Color.new(0,0,0) # 縁取り色
],
#黄 縁:黒
11 => [GK::DEFAULT_FONT, # フォント名
false, # 太字
false, # 斜体
false, # 影文字
true, # 縁取り
Color.new(255,255,0), # 文字色
Color.new(0,0,0) # 縁取り色
],
#青
12 => [GK::DEFAULT_FONT, # フォント名
true, # 太字
false, # 斜体
false, # 影文字
true, # 縁取り
Color.new(100,100,255), # 文字色
Color.new( 0, 0, 0) # 縁取り色
],
#赤
13 => [GK::DEFAULT_FONT, # フォント名
true, # 太字
false, # 斜体
false, # 影文字
true, # 縁取り
Color.new(255,100,100), # 文字色
Color.new( 0, 0, 0) # 縁取り色
],
#黄
14 => [GK::DEFAULT_FONT, # フォント名
true, # 太字
false, # 斜体
false, # 影文字
true, # 縁取り
Color.new(200,200, 50), # 文字色
Color.new( 0, 0, 0) # 縁取り色
],
#マップアナウンス
15 => [GK::DEFAULT_FONT, # フォント名
false, # 太字
false, # 斜体
false, # 影文字
true, # 縁取り
Color.new(255,255,255), # 文字色
Color.new(0,0,0) # 縁取り色
],
#パズルスタート
16 => [GK::DEFAULT_FONT, # フォント名
true, # 太字
false, # 斜体
true, # 影文字
false, # 縁取り
Color.new(255,255,255), # 文字色
Color.new(0,0,0) # 縁取り色
],
#==============================================================================
}
#
end
#==============================================================================
# ■ Game_Interpreter
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# ● 文字ピクチャ指定
#--------------------------------------------------------------------------
def text_picture(text, p = 0, size = 20)
strfp = STRRGSS2::STR27_FLIST[p]
font = Font.new(strfp[0], size)
font.bold = strfp[1] ; font.italic = strfp[2]
font.shadow = strfp[3] ; font.color = strfp[5]
text.gsub!(/[\t\n\r\f]*/,"")
@strtxpic = [text, STR_DumpFont.new(font, strfp[4], strfp[6])]
end
#--------------------------------------------------------------------------
# ● ピクチャの表示(エイリアス)
#--------------------------------------------------------------------------
alias command_231_str27 command_231
def command_231
@params[1] = @strtxpic if @strtxpic != nil ; @strtxpic = nil
command_231_str27
end
end
#==============================================================================
# ■ Sprite_Picture
#==============================================================================
class Sprite_Picture < Sprite
#--------------------------------------------------------------------------
# ● フレーム更新(エイリアス)
#--------------------------------------------------------------------------
alias update_str27 update
def update
if @picture.name.is_a?(Array) and @picture_name != @picture.name
# 文字ピクチャ
@picture_name = @picture.name
str27_update_2 if @picture_name != ""
elsif @picture_name != @picture.name
# 通常ピクチャ
@picture_name = @picture.name
if @picture_name != ""
self.bitmap.dispose unless @picture_name.is_a?(String)
self.bitmap = Cache.picture(@picture_name)
end
end
# 呼び戻し
update_str27
end
#--------------------------------------------------------------------------
# ● 文字ピクチャ生成(追加)
#--------------------------------------------------------------------------
def str27_update_2
self.bitmap.dispose if self.bitmap != nil and not @picture_name.is_a?(String)
f = @picture_name[1].undump
# 文字サイズ取得
self.bitmap = Bitmap.new(1, 1) ; self.bitmap.font = f[0]
size = self.bitmap.text_size(@picture_name[0])
size.width += f[0].size / 4 if f[0].italic
size.width += 4 ; self.bitmap.dispose
# イメージ作成
self.bitmap = Bitmap.new(size.width + 2, size.height + 2)
self.bitmap.font = f[0] ; self.bitmap.font.shadow = f[0].shadow
unless f[1]
self.bitmap.draw_text(1, 1, size.width, size.height, @picture_name[0])
else
self.bitmap.draw_text_f(1, 1, size.width, size.height, @picture_name[0], 0, f[2])
end
end
end
#==============================================================================
# ■ STR_DumpFont
#==============================================================================
class STR_DumpFont
#--------------------------------------------------------------------------
# ● 初期化
#--------------------------------------------------------------------------
def initialize(font, edge, ed_color)
@name = font.name ; @size = font.size
@bold = font.bold ; @italic = font.italic
[url=home.php?mod=space&uid=31758]@Shadow[/url] = font.shadow ; [url=home.php?mod=space&uid=278544]@Edge[/url] = edge ; @ed_color = ed_color.clone
[url=home.php?mod=space&uid=10453]@color[/url] = Color.new(font.color.red,font.color.green,font.color.blue,font.color.alpha)
end
#--------------------------------------------------------------------------
# ● 変換
#--------------------------------------------------------------------------
def undump
font = Font.new(@name, @size)
font.bold = @bold ; font.italic = @italic
font.shadow = @shadow ; font.color = @color
return [font, @edge, @ed_color]
end
end