# encoding: utf-8
#==============================================================================
# ** Window_MapNamePlus
#------------------------------------------------------------------------------
# This window displays the map name.
#------------------------------------------------------------------------------
# 使用方法:
# 新建脚本页,复制粘贴
# 在“Scene_Map”中找到“Window_MapName.new”,改成"Window_MapNamePlus.new"(大概在
# 159行左右)
# 在地图属性的设置窗口,“显示名称”中的地图名格式:“中文名@EnglishName”,即用“@”分割中文
# 和英文地图名
#==============================================================================
class Window_MapNamePlus < Window_Base
#--------------------------------------------------------------------------
# * Settings
#--------------------------------------------------------------------------
FONT_NAME_CH = ["PMingLiU", "FangSong"] # Chinese Font Name
FONT_SIZE_CH = 42 # Chinese Font Size
FONT_NAME_EN = ["Monotype Corsiva"] # English Font Name
FONT_SIZE_EN = 28 # English Font Size
FONT_BOLD = false # True if Font in Bold
FONT_COLOR = Color.new(255, 255, 255, 255) # Color of Font
FONT_OUT = true # True if Font Has Outline
OUT_COLOR = Color.new(0, 0, 0, 200) # Color of Outline Color of Font
FONT_SHADOW = false # True if Text Drops Shadow
MODIFIER = "~" # Modifier Added beside Map Name
PADDING = 8 # Padding between Window's Frame and Contents
LINE_HEIGHT = 6 # Height of Split Line
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_reader :map_name_ch # Chinese Map Name
attr_reader :map_name_en # English Map Name
attr_reader :line_x # Split Line X Coordinate
attr_reader :line_y # Split Line Y Coordinate
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
#----------------------------------------------------------------------
# * Set the window in the middle of screen.
#----------------------------------------------------------------------
super(((Graphics.width - window_width) / 2),
((Graphics.height - (FONT_SIZE_CH + FONT_SIZE_EN + PADDING * 4 + LINE_HEIGHT)) / 2),
window_width, FONT_SIZE_CH + FONT_SIZE_EN + PADDING * 4 + LINE_HEIGHT)
#----------------------------------------------------------------------
# * Custom font and style.
#----------------------------------------------------------------------
contents.font.bold = FONT_BOLD
contents.font.color = FONT_COLOR
contents.font.outline = FONT_OUT
contents.font.out_color = OUT_COLOR
contents.font.shadow = FONT_SHADOW
#----------------------------------------------------------------------
# * Set Window Opacity
#----------------------------------------------------------------------
self.opacity = 0
self.contents_opacity = 0
@show_count = 0
refresh
end
#--------------------------------------------------------------------------
# * Get Window Width
#--------------------------------------------------------------------------
def window_width
return Graphics.width
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
if @show_count > 0 && $game_map.name_display
update_fadein
@show_count -= 1
else
update_fadeout
end
end
#--------------------------------------------------------------------------
# * Update Fadein
#--------------------------------------------------------------------------
def update_fadein
self.contents_opacity += 16
end
#--------------------------------------------------------------------------
# * Update Fadeout
#--------------------------------------------------------------------------
def update_fadeout
self.contents_opacity -= 16
end
#--------------------------------------------------------------------------
# * Open Window
#--------------------------------------------------------------------------
def open
refresh
@show_count = 150
self.contents_opacity = 0
self
end
#--------------------------------------------------------------------------
# * Close Window
#--------------------------------------------------------------------------
def close
@show_count = 0
self
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
contents.clear
set_map_name
unless $game_map.display_name.empty?
draw_map_name
end
end
#--------------------------------------------------------------------------
# * Draw Line
#--------------------------------------------------------------------------
def draw_line(rect)
temp_rect = rect.clone
temp_rect.height = LINE_HEIGHT
temp_rect.width /= 4
contents.gradient_fill_rect(temp_rect, color2, color1)
temp_rect.x += temp_rect.width
temp_rect.width *= 2
contents.fill_rect(temp_rect, color1)
temp_rect.x += temp_rect.width
temp_rect.width /= 2
contents.gradient_fill_rect(temp_rect, color1, color2)
end
#--------------------------------------------------------------------------
# * Set Map Name
#--------------------------------------------------------------------------
def set_map_name
#temp_map_name = $game_map.display_name.split("@")
#@map_name_ch = temp_map_name[0].to_s
#@map_name_en = MODIFIER + " " + temp_map_name[1].to_s + " " + MODIFIER
@map_name_ch = $game_map.display_name
$game_map.note.sub!(/<enmap:(.*?)>/i, "")
@map_name_en = $1.to_s
end
#--------------------------------------------------------------------------
# * Draw Map Name
#--------------------------------------------------------------------------
def draw_map_name
set_line_position
set_line_width
temp_line_rect = Rect.new(@line_x, @line_y, set_line_width, LINE_HEIGHT)
draw_line(temp_line_rect)
temp_name_rect_ch = Rect.new(0, 0, contents.width, FONT_SIZE_CH)
contents.font.name = FONT_NAME_CH
contents.font.size = FONT_SIZE_CH
draw_text(temp_name_rect_ch, @map_name_ch, 1)
temp_name_rect_en = Rect.new(0, FONT_SIZE_CH, contents.width, FONT_SIZE_EN)
contents.font.size = FONT_SIZE_EN
contents.font.name = FONT_NAME_EN
draw_text(temp_name_rect_en, @map_name_en, 1)
end
#--------------------------------------------------------------------------
# * Set Line Width
#--------------------------------------------------------------------------
def set_line_width
text_width_ch = text_size(@map_name_ch).width * 1.5
text_width_en = text_size(@map_name_en).width * 1.5
(text_width_ch >= text_width_en) ?
(text_width_ch) : (text_width_en)
end
#--------------------------------------------------------------------------
# * Set Line Position
#--------------------------------------------------------------------------
def set_line_position
@line_x = (contents.width - set_line_width) / 2
@line_y = (contents.height - LINE_HEIGHT) / 2
end
#--------------------------------------------------------------------------
# * Get Color 1
#--------------------------------------------------------------------------
def color1
Color.new(255, 255, 255, 255)
end
#--------------------------------------------------------------------------
# * Get Color 2
#--------------------------------------------------------------------------
def color2
Color.new(255, 255, 255, 0)
end
end