# 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
@show_count = 0 unless $game_map.name_display##########
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 = nil ; @map_name_en = nil
$game_map.note.scan(/<第一行:(.*)>/){|matched|@map_name_cn = matched[0]}
@map_name_ch = @map_name_cn || $game_map.display_name
$game_map.note.scan(/<第二行:(.*)>/){|matched|@map_name_en = matched[0]}
@map_name_en = MODIFIER + " " + (@map_name_en || "作者未填写地图简介") + " " + MODIFIER
##########
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
##########
module MAPNAMEPLUS
VAR_ID = 123##########變量
end
#==============================================================================
# ** Game_Map
#------------------------------------------------------------------------------
# This class handles maps. It includes scrolling and passage determination
# functions. The instance of this class is referenced by $game_map.
#==============================================================================
class Game_Map
#--------------------------------------------------------------------------
# * New method: note
#--------------------------------------------------------------------------
def note
@map ? @map.note : ""
end
end
#encoding:utf-8
#==============================================================================
# ■ Window_MapName
#------------------------------------------------------------------------------
# 顯示地圖名稱的窗口。
#==============================================================================
class Window_MapName < Window_Base
#--------------------------------------------------------------------------
# ● 打開窗口
#--------------------------------------------------------------------------
alias :window_mapname_open_map_name_plus :open
def open
return if $game_variables[MAPNAMEPLUS::VAR_ID] >= 2
window_mapname_open_map_name_plus
end
#--------------------------------------------------------------------------
# ● 關閉窗口
#--------------------------------------------------------------------------
alias :window_mapname_close_map_name_plus :close
def close
return if $game_variables[MAPNAMEPLUS::VAR_ID] >= 2
window_mapname_close_map_name_plus
end
end
#encoding:utf-8
#==============================================================================
# ■ Scene_Map
#------------------------------------------------------------------------------
# 地圖畫面
#==============================================================================
class Scene_Map < Scene_Base
#--------------------------------------------------------------------------
# ● 結束前處理
#--------------------------------------------------------------------------
alias :scene_map_pre_terminate_map_name_plus :pre_terminate
def pre_terminate
scene_map_pre_terminate_map_name_plus
@map_name_plus_window.dispose if @map_name_plus_window && !@map_name_plus_window.disposed?
@map_name_plus_window = nil
end
#--------------------------------------------------------------------------
# ● 場所移動前的處理
#--------------------------------------------------------------------------
alias :scene_map_pre_transfer_map_name_plus :pre_transfer
def pre_transfer
@map_name_plus_window.close if @map_name_plus_window
scene_map_pre_transfer_map_name_plus
end
#--------------------------------------------------------------------------
# ● 場所移動后的處理
#--------------------------------------------------------------------------
alias :scene_map_post_transfer_map_name_plus :post_transfer
def post_transfer
scene_map_post_transfer_map_name_plus
var_value = $game_variables[MAPNAMEPLUS::VAR_ID]
case var_value
when 1, 2
@map_name_plus_window = Window_MapNamePlus.new unless @map_name_plus_window
end
@map_name_plus_window.open if @map_name_plus_window
end
end
##########