def talk_view_update(str="")
return if str == ""
x = 0
@line += 1
move_line
@talkview[@line].bitmap.font.size = 12
# 有等待显示的文字的情况下
if str != nil
text = str.dup
# 限制文字处理
begin
last_text = text.clone
text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
end until text == last_text
text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
end
# 为了方便、将 "\\\\" 变换为 "\000"
text.gsub!(/\\\\/) { "\000" }
# "\\C" 变为 "\001" に、"\\G" 变为 "\002"
text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "\002[#{$1}]" }
# "\P" 变为 "\003"
text.gsub!(/\\[Pp]/) { "\003" }
# c 获取 1 个字 (如果不能取得文字就循环)
while ((c = text.slice!(/./m)) != nil)
# \\ 的情况下
if c == "\000"
# 还原为本来的文字
c = "\\"
end
# \C[n] 的情况下
if c == "\001"
# 更改文字色
text.sub!(/\[([0-9]+)\]/, "")
color = $1.to_i
if color >= 0 and color <= 7
@talkview[@line].bitmap.font.color = text_color(color)
end
# 下面的文字
next
end
# \S[n] 的情况下
if c == "\002"
# 更改字体大小
text.sub!(/\[([0-9]+)\]/, "")
size = $1.to_i > 12 ? 12 : $1.to_i
@talkview[@line].bitmap.font.size = size
end
# 图片的情况下
if c == "\003"
pic_name = ''
while ((cha = text.slice!(/./m)) != ']')
next if cha == '['
pic_name += cha
end
pic = RPG::Cache.picture(pic_name)
#@talkview[t].y += pic.height if @talkview[t].y + pic.height > 480
@talkview[@line].bitmap.blt(x + 4, @talkview[@line].y+1, pic, Rect.new(0, 0, pic.width, pic.height))
x += pic.width
next
end
if x > 150-12
# y 加 1
@line += 1
x = 0
move_line
# 下面的文字
next
end
# 另起一行文字的情况下
if c == "\n"
# y 加 1
@line += 1
x = 0
# 下面的文字
next
end
# 描绘文字
@talkview[@line].bitmap.draw_text(4 + x, 1, 20, 12, c)
# x 为要描绘文字的加法运算
x += @talkview[@line].bitmap.text_size(c).width
end