#encoding:utf-8
#----------------------------------------------------------------------
#~ 【显示地图名加强】 by maliut 2012.1.28 使用、转载请注明
#----------------------------------------------------------------------
#~ 该脚本可以完全代替Window_MapName
#~ 用法说明:在【地图设置】的【显示名称】内填入:显示名|参数
#~ 其中“|”是“\”的上档键
#~ 参数说明(X代表数字):
#~ bX:背景(background)颜色为X(颜色为window.png中设定)
#~ iX:显示X号图标(icon)
#~ tX:文本(text)颜色为X(颜色为window.png中设定)
#~ sX:文字大小(size)为X
#~ 参数可以单独使用也可以组合使用,使用的顺序可以随意
#~ 如显示名称【主角家】,5号图标,背景色为6,文本色为14,则填入“主角家|i5b6t14”
#~ 高级:
#~ 1.如果需要显示的地图名带有|,则会与本脚本起冲突,在此情况下需要修改第85、87行的“|”为任意其他字符
#~ 2.va默认的字很有问题,因此我在main中加了些东西,但此时显示地图名的字号也会发生变化。
#~ 如果显示的字号不对,请大家因地制宜修改第83行的默认字号。
#~ 3.如果地图名很长,和图标显示部分重叠,请修改第106行的数字48,改得越小越靠左
class Window_MapName < Window_Base
#初始化对象
def initialize
super(0, 0, window_width, fitting_height(1))
self.opacity = 0
self.contents_opacity = 0
@show_count = 0
refresh
end
#获取窗口的宽度
def window_width
return 240
end
#更新画面
def update
super
if @show_count > 0 && $game_map.name_display
update_fadein
@show_count -= 1
else
update_fadeout
end
end
#更新淡入
def update_fadein
self.contents_opacity += 16
end
#更新淡出
def update_fadeout
self.contents_opacity -= 16
end
#打开窗口
def open
refresh
@show_count = 150
self.contents_opacity = 0
self
end
#关闭窗口
def close
@show_count = 0
self
end
##刷新
def refresh
contents.clear
unless $game_map.display_name.empty?
#初始化
@para_chr = []
@para_num = []
@para_hash = {}
contents.font.color = text_color(0)
contents.font.size = 20
#是否有参数?
if $game_map.display_name =~ /[|]/
#拆分文本和参数
x = $game_map.display_name.split("|")
text = x[0]
para = x[1]
#提取字母
@para_chr = para.split(/\d+/)
#提取数字
@para_num = para.scan(/\d+/)
#补全数组
4.times{@para_chr << "x"}
4.times{@para_num << "0"}
#创建hash表
@para_hash = {
@para_chr[0] => @para_num[0].to_i,
@para_chr[1] => @para_num[1].to_i,
@para_chr[2] => @para_num[2].to_i,
@para_chr[3] => @para_num[3].to_i,
}
#开始设置
draw_background(contents.rect)
draw_icon(@para_hash["i"],48,0,true) if @para_chr.include?("i")
contents.font.color = text_color(@para_hash["t"]) if @para_chr.include?("t")
contents.font.size = @para_hash["s"] if @para_chr.include?("s")
draw_text(contents.rect, text, 1)
else
draw_background(contents.rect)
draw_text(contents.rect, $game_map.display_name, 1)
end
end
end
#绘制背景
def draw_background(rect)
temp_rect = rect.clone
temp_rect.width /= 2
contents.gradient_fill_rect(temp_rect, back_color2, back_color1)
temp_rect.x = temp_rect.width
contents.gradient_fill_rect(temp_rect, back_color1, back_color2)
end
##获取背景色 1
def back_color1
if @para_chr.include?("b")
text_color(@para_hash["b"])
else
Color.new(0, 0, 0, 192)
end
end
#获取背景色 2
def back_color2
Color.new(0, 0, 0, 0)
end
end