class Window_Mession < Window_Base
#--------------------------------------------------------------------------
# ● 初始化窗口
#--------------------------------------------------------------------------
def initialize(mession)
super(160, 0, 480, 480)
self.contents = Bitmap.new(width - 32, height - 32)
@mession = mession
refresh(@mession)
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh(msg)
@mession = msg
self.contents.clear
self.contents.font.color = normal_color
x = y = 0
# 有等待显示的文字的情况下
if @mession != nil
text = @mession.clone
# 限制文字处理
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!(/\\[Gg]/) { "\002" }
# 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
self.contents.font.color = text_color(color)
end
# 下面的文字
next
end
# 另起一行文字的情况下
if c == "\n"
# 刷新选择项及光标的高
if y >= $game_temp.choice_start
@cursor_width = [@cursor_width, x].max
end
# y 加 1
y += 1
x = 0
# 移动到选择项的下一行
if y >= $game_temp.choice_start
x = 8
end
# 下面的文字
next
end
# 描绘文字
self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
# x 为要描绘文字的加法运算
x += self.contents.text_size(c).width
end
end
end
end
#==============================================================================
# ■ Scene_Mession
#------------------------------------------------------------------------------
# 显示任务内容的窗口。
#==============================================================================
class Scene_Mession
#---------------
# 初始化
#---------------
def initialize
#如果什么都没有
if $game_system.list == []
#显示:什么都没有
@list_window = Window_Command.new(160,["无任务"])
#此外
else
#显示列表
@list_window = Window_Command.new(160,$game_system.list)
end
@content_window = Window_Mession.new($game_system.contents[0])
end
#---------------
# 主循环
#---------------
def main
# 执行过渡(格式,不用管)
Graphics.transition
# 主循环(格式,不用管)
loop do
# 刷新游戏画面(格式,不用管)
Graphics.update
# 刷新键盘按键的情报(格式,不用管)
Input.update
# 刷新内容
update
# 如果画面被切换的话就中断循环(格式,不用管)
if $scene != self
break
end
end
# 过渡(格式,不用管)
Graphics.freeze
# 释放内存
@list_window.dispose
@content_window.dispose
end