- #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ 
- #_/    ◆ 迷你地图 - KMS_MiniMap ◆ VX Ace ◆ 
- #_/    ◇ Last update : 2012/02/12  (TOMY@Kamesoft) ◇ 
- #_/---------------------------------------------------------------------------- 
- #_/  追加迷你地图表示机能。 
- #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ 
-   
- #============================================================================== 
- # ★ 设定项目 - BEGIN Setting ★ 
- #============================================================================== 
-   
- module KMS_MiniMap 
-   # ◆ 迷你地图表示切换按键 
-   #  空白则按钮转换无效。 
-   SWITCH_BUTTON = :Z 
-   
-   # ◆ 迷你地图表示位置和大小 (X, Y, 寛, 高) 
-   MAP_RECT = Rect.new(364, 20, 160, 120) 
-   # ◆ 迷你地图 Z 座标 
-   #  注意:太大可能影响其他东西。 
-   MAP_Z = 0 
-   # ◆ 1格大小 
-   # 推荐 3 以上。 
-   GRID_SIZE = 5 
-   
-   # ◆ 迷你地图顔色 
-   FOREGROUND_COLOR = Color.new(192, 192, 224, 160)  # 前景色 (通行可) 
-   BACKGROUND_COLOR = Color.new(  0,   0, 160, 160)  # 背景色 (通行不可) 
-   POSITION_COLOR   = Color.new(255,   0,   0, 192)  # 现在位置 
-   MOVE_EVENT_COLOR = Color.new(255, 160,   0, 192)  # 地图移动事件 
-   VEHICLE_COLOR    = Color.new( 96, 128,   0, 192)  # 载物 
-   
-   # ◆ 物件顔色 
-   #  按顺序OBJ1, OBJ2,... 对应。 
-   OBJECT_COLOR = [ 
-     Color.new(  0, 128,   0, 192),  # OBJ 1 
-     Color.new(  0, 160, 160, 192),  # OBJ 2 
-     Color.new(160,   0, 160, 192),  # OBJ 3 
-   ]  # ← 这个]不能消去! 
-   
-   # ◆ 图标的闪烁强度 
-   # 推荐 5 ~ 8 之间。 
-   BLINK_LEVEL = 7 
-   
-   # ◆ 地图缓存的数量 
-   #  超越这个数的话,会删除长期间没参照东西。 
-   CACHE_NUM = 10 
- end 
-   
- #============================================================================== 
- # ☆ 设定完成 - END Setting ☆ 
- #============================================================================== 
-   
- $kms_imported = {} if $kms_imported == nil 
- $kms_imported["MiniMap"] = true 
-   
- module KMS_MiniMap 
-   # 迷你地图非表示 
-   REGEX_NO_MINIMAP_NOTE = /<(?:ミニマップ|MINIMAP)\s*(?:非表示|HIDE)>/i 
-   REGEX_NO_MINIMAP_NAME = /\[NOMAP\]/i 
-   
-   # 障害物 
-   REGEX_WALL_EVENT = /<(?:ミニマップ|MINIMAP)\s*(?:壁|障害物|WALL)>/i 
-   
-   # 移动事件 
-   REGEX_MOVE_EVENT = /<(?:ミニマップ|MINIMAP)\s*(?:移动|MOVE)>/i 
-   
-   # 物件 
-   REGEX_OBJECT = /<(?:ミニマップ|MINIMAP)\s+OBJ(?:ECT)?\s*(\d+)>/i 
- end 
-   
- # ***************************************************************************** 
-   
- #============================================================================== 
- # □ KMS_Commands 
- #============================================================================== 
-   
- module KMS_Commands 
-   module_function 
-   #-------------------------------------------------------------------------- 
-   # ○ 表示迷你地图 
-   #-------------------------------------------------------------------------- 
-   def show_minimap 
-     $game_temp.minimap_manual_visible = true 
-     $game_system.minimap_show         = true 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 不表示迷你地图 
-   #-------------------------------------------------------------------------- 
-   def hide_minimap 
-     $game_system.minimap_show = false 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 迷你地图表示状态取得 
-   #-------------------------------------------------------------------------- 
-   def minimap_showing? 
-     return $game_system.minimap_show 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 刷新迷你地图 
-   #-------------------------------------------------------------------------- 
-   def refresh_minimap 
-     return unless SceneManager.scene_is?(Scene_Map) 
-   
-     $game_map.refresh if $game_map.need_refresh 
-     SceneManager.scene.refresh_minimap 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 更新迷你地图对象 
-   #-------------------------------------------------------------------------- 
-   def update_minimap_object 
-     return unless SceneManager.scene_is?(Scene_Map) 
-   
-     $game_map.refresh if $game_map.need_refresh 
-     SceneManager.scene.update_minimap_object 
-   end 
- end 
-   
- #============================================================================== 
- # ■ Game_Interpreter 
- #============================================================================== 
-   
- class Game_Interpreter 
-   # 事件指令:直接處理指令 
-   include KMS_Commands 
- end 
-   
- #============================================================================== 
- # ■ RPG::Map 
- #============================================================================== 
-   
- class RPG::Map 
-   #-------------------------------------------------------------------------- 
-   # ○ 生成迷你地图缓存 
-   #-------------------------------------------------------------------------- 
-   def create_minimap_cache 
-     @__minimap_show = true 
-   
-     note.each_line { |line| 
-       if line =~ KMS_MiniMap::REGEX_NO_MINIMAP_NOTE  # マップ非表示 
-         @__minimap_show = false 
-       end 
-     } 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 表示迷你地图 
-   #-------------------------------------------------------------------------- 
-   def minimap_show? 
-     create_minimap_cache if @__minimap_show.nil? 
-     return @__minimap_show 
-   end 
- end 
-   
- #============================================================================== 
- # ■ RPG::MapInfo 
- #============================================================================== 
-   
- class RPG::MapInfo 
-   #-------------------------------------------------------------------------- 
-   # ● 地图名取得 
-   #-------------------------------------------------------------------------- 
-   def name 
-     return @name.gsub(/\[.*\]/) { "" } 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 取得原始地图名 
-   #-------------------------------------------------------------------------- 
-   def original_name 
-     return @name 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 生成迷你地图缓存 
-   #-------------------------------------------------------------------------- 
-   def create_minimap_cache 
-     @__minimap_show = !(@name =~ KMS_MiniMap::REGEX_NO_MINIMAP_NAME) 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 表示迷你地图 
-   #-------------------------------------------------------------------------- 
-   def minimap_show? 
-     create_minimap_cache if @__minimap_show == nil 
-     return @__minimap_show 
-   end 
- end 
-   
- #============================================================================== 
- # ■ Game_Temp 
- #============================================================================== 
-   
- class Game_Temp 
-   #-------------------------------------------------------------------------- 
-   # ○ 公共实例变量 
-   #-------------------------------------------------------------------------- 
-   attr_accessor :minimap_manual_visible  # 手动切换小地图显示标志 
-   #-------------------------------------------------------------------------- 
-   # ○ 对象初始化 
-   #-------------------------------------------------------------------------- 
-   alias initialize_KMS_MiniMap initialize 
-   def initialize 
-     initialize_KMS_MiniMap 
-   
-     @minimap_manual_visible = true 
-   end 
- end 
-   
- #============================================================================== 
- # ■ Game_System 
- #============================================================================== 
-   
- class Game_System 
-   #-------------------------------------------------------------------------- 
-   # ○ 公开インスタンス変数 
-   #-------------------------------------------------------------------------- 
-   attr_accessor :minimap_show  # 迷你地图显示标志 
-   #-------------------------------------------------------------------------- 
-   # ○ 对象初始化 
-   #-------------------------------------------------------------------------- 
-   alias initialize_KMS_MiniMap initialize 
-   def initialize 
-     initialize_KMS_MiniMap 
-   
-     @minimap_show = true 
-   end 
- end 
-   
- #============================================================================== 
- # ■ Game_Map 
- #============================================================================== 
-   
- class Game_Map 
-   #-------------------------------------------------------------------------- 
-   # ○ 定数 
-   #-------------------------------------------------------------------------- 
-   MINIMAP_FADE_NONE = 0  # ミニマップ フェードなし 
-   MINIMAP_FADE_IN   = 1  # ミニマップ フェードイン 
-   MINIMAP_FADE_OUT  = 2  # ミニマップ フェードアウト 
-   #-------------------------------------------------------------------------- 
-   # ○ 公开インスタンス変数 
-   #-------------------------------------------------------------------------- 
-   attr_accessor :minimap_fade 
-   #-------------------------------------------------------------------------- 
-   # ○ ミニマップを表示するか 
-   #-------------------------------------------------------------------------- 
-   def minimap_show? 
-     return $data_mapinfos[map_id].minimap_show? && @map.minimap_show? 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ ミニマップをフェードイン 
-   #-------------------------------------------------------------------------- 
-   def fadein_minimap 
-     @minimap_fade = MINIMAP_FADE_IN 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ ミニマップをフェードアウト 
-   #-------------------------------------------------------------------------- 
-   def fadeout_minimap 
-     @minimap_fade = MINIMAP_FADE_OUT 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● リフレッシュ 
-   #-------------------------------------------------------------------------- 
-   alias refresh_KMS_MiniMap refresh 
-   def refresh 
-     refresh_KMS_MiniMap 
-   
-     SceneManager.scene.refresh_minimap if SceneManager.scene_is?(Scene_Map) 
-   end 
- end 
-   
- #============================================================================== 
- # ■ Game_Event 
- #============================================================================== 
-   
- class Game_Event < Game_Character 
-   #-------------------------------------------------------------------------- 
-   # ○ ミニマップ用のキャッシュを作成 
-   #-------------------------------------------------------------------------- 
-   def __create_minimap_cache 
-     @__last_page = @page 
-     @__minimap_wall_event  = false 
-     @__minimap_move_event  = false 
-     @__minimap_object_type = -1 
-   
-     return if @page.nil? 
-   
-     @page.list.each { |cmd| 
-       # 注釈以外に到达したら离脱 
-       break unless [108, 408].include?(cmd.code) 
-   
-       # 正规表现判定 
-       case cmd.parameters[0] 
-       when KMS_MiniMap::REGEX_WALL_EVENT 
-         @__minimap_wall_event = true 
-       when KMS_MiniMap::REGEX_MOVE_EVENT 
-         @__minimap_move_event = true 
-       when KMS_MiniMap::REGEX_OBJECT 
-         @__minimap_object_type = $1.to_i 
-       end 
-     } 
-   end 
-   private :__create_minimap_cache 
-   #-------------------------------------------------------------------------- 
-   # ○ グラフィックがあるか 
-   #-------------------------------------------------------------------------- 
-   def graphic_exist? 
-     return (character_name != "" || tile_id > 0) 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 障害物か 
-   #-------------------------------------------------------------------------- 
-   def is_minimap_wall_event? 
-     if @__minimap_wall_event.nil? || @__last_page != @page 
-       __create_minimap_cache 
-     end 
-   
-     return @__minimap_wall_event 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 移动イベントか 
-   #-------------------------------------------------------------------------- 
-   def is_minimap_move_event? 
-     if @__minimap_move_event.nil? || @__last_page != @page 
-       __create_minimap_cache 
-     end 
-   
-     return @__minimap_move_event 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ ミニマップオブジェクトか 
-   #-------------------------------------------------------------------------- 
-   def is_minimap_object? 
-     if @__minimap_object_type.nil? || @__last_page != @page 
-       __create_minimap_cache 
-     end 
-   
-     return @__minimap_object_type > 0 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ ミニマップオブジェクトタイプ 
-   #-------------------------------------------------------------------------- 
-   def minimap_object_type 
-     if @__minimap_object_type.nil? || @__last_page != @page 
-       __create_minimap_cache 
-     end 
-   
-     return @__minimap_object_type 
-   end 
- end 
-   
- #============================================================================== 
- # □ Game_MiniMap 
- #------------------------------------------------------------------------------ 
- #   ミニマップを扱うクラスです。 
- #============================================================================== 
-   
- class Game_MiniMap 
-   #-------------------------------------------------------------------------- 
-   # ○ 构造体 
-   #-------------------------------------------------------------------------- 
-   Point = Struct.new(:x, :y) 
-   Size  = Struct.new(:width, :height) 
-   PassageCache = Struct.new(:map_id, :table, :scan_table) 
-   #-------------------------------------------------------------------------- 
-   # ○ クラス変数 
-   #-------------------------------------------------------------------------- 
-   @@passage_cache = []  # 通行フラグテーブルキャッシュ 
-   #-------------------------------------------------------------------------- 
-   # ● オブジェクト初期化 
-   #-------------------------------------------------------------------------- 
-   def initialize(tilemap) 
-     @map_rect  = KMS_MiniMap::MAP_RECT 
-     @grid_size = [KMS_MiniMap::GRID_SIZE, 1].max 
-   
-     @x = 0 
-     @y = 0 
-     @grid_num = Point.new( 
-       (@map_rect.width  + @grid_size - 1) / @grid_size, 
-       (@map_rect.height + @grid_size - 1) / @grid_size 
-     ) 
-     @draw_grid_num    = Point.new(@grid_num.x + 2, @grid_num.y + 2) 
-     @draw_range_begin = Point.new(0, 0) 
-     @draw_range_end   = Point.new(0, 0) 
-     @tilemap = tilemap 
-   
-     @last_x = $game_player.x 
-     @last_y = $game_player.y 
-   
-     @showing = false 
-     @hiding  = false 
-   
-     create_sprites 
-     refresh 
-   
-     unless $game_temp.minimap_manual_visible 
-       self.opacity = 0 
-     end 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ スプライト作成 
-   #-------------------------------------------------------------------------- 
-   def create_sprites 
-     @viewport   = Viewport.new(@map_rect) 
-     @viewport.z = KMS_MiniMap::MAP_Z 
-   
-     # ビットマップサイズ计算 
-     @bmp_size = Size.new( 
-       (@grid_num.x + 2) * @grid_size, 
-       (@grid_num.y + 2) * @grid_size 
-     ) 
-     @buf_bitmap = Bitmap.new(@bmp_size.width, @bmp_size.height) 
-   
-     # マップ用スプライト作成 
-     @map_sprite   = Sprite.new(@viewport) 
-     @map_sprite.x = -@grid_size 
-     @map_sprite.y = -@grid_size 
-     @map_sprite.z = 0 
-     @map_sprite.bitmap = Bitmap.new(@bmp_size.width, @bmp_size.height) 
-   
-     # オブジェクト用スプライト作成 
-     @object_sprite   = Sprite_MiniMapIcon.new(@viewport) 
-     @object_sprite.x = -@grid_size 
-     @object_sprite.y = -@grid_size 
-     @object_sprite.z = 1 
-     @object_sprite.bitmap = Bitmap.new(@bmp_size.width, @bmp_size.height) 
-   
-     # 现在位置スプライト作成 
-     @position_sprite   = Sprite_MiniMapIcon.new 
-     @position_sprite.x = @map_rect.x + @grid_num.x / 2 * @grid_size 
-     @position_sprite.y = @map_rect.y + @grid_num.y / 2 * @grid_size 
-     @position_sprite.z = @viewport.z + 2 
-     bitmap = Bitmap.new(@grid_size, @grid_size) 
-     bitmap.fill_rect(bitmap.rect, KMS_MiniMap::POSITION_COLOR) 
-     @position_sprite.bitmap = bitmap 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● 解放 
-   #-------------------------------------------------------------------------- 
-   def dispose 
-     @buf_bitmap.dispose 
-     @map_sprite.bitmap.dispose 
-     @map_sprite.dispose 
-     @object_sprite.bitmap.dispose 
-     @object_sprite.dispose 
-     @position_sprite.bitmap.dispose 
-     @position_sprite.dispose 
-     @viewport.dispose 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 可视状态取得 
-   #-------------------------------------------------------------------------- 
-   def visible 
-     return @map_sprite.visible 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 可视状态设定 
-   #-------------------------------------------------------------------------- 
-   def visible=(value) 
-     @viewport.visible        = value 
-     @map_sprite.visible      = value 
-     @object_sprite.visible   = value 
-     @position_sprite.visible = value 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 不透明度取得 
-   #-------------------------------------------------------------------------- 
-   def opacity 
-     return @map_sprite.opacity 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 不透明度设定 
-   #-------------------------------------------------------------------------- 
-   def opacity=(value) 
-     @map_sprite.opacity      = value 
-     @object_sprite.opacity   = value 
-     @position_sprite.opacity = value 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ リフレッシュ 
-   #-------------------------------------------------------------------------- 
-   def refresh 
-     update_draw_range 
-     update_passage_table 
-     update_object_list 
-     update_position 
-     draw_map 
-     draw_object 
-     Graphics.frame_reset 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ フェードイン 
-   #-------------------------------------------------------------------------- 
-   def fadein 
-     @showing = true 
-     @hiding  = false 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ フェードアウト 
-   #-------------------------------------------------------------------------- 
-   def fadeout 
-     @showing = false 
-     @hiding  = true 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ キー入力更新 
-   #-------------------------------------------------------------------------- 
-   def update_input 
-     return if KMS_MiniMap::SWITCH_BUTTON.nil? 
-   
-     if Input.trigger?(KMS_MiniMap::SWITCH_BUTTON) 
-       if opacity < 255 && !@showing 
-         $game_temp.minimap_manual_visible = true 
-         fadein 
-       elsif opacity > 0 && !@hiding 
-         $game_temp.minimap_manual_visible = false 
-         fadeout 
-       end 
-     end 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 描画范囲更新 
-   #-------------------------------------------------------------------------- 
-   def update_draw_range 
-     range = [] 
-     (2).times { |i| range[i] = @draw_grid_num[i] / 2 } 
-   
-     @draw_range_begin.x = $game_player.x - range[0] 
-     @draw_range_begin.y = $game_player.y - range[1] 
-     @draw_range_end.x   = $game_player.x + range[0] 
-     @draw_range_end.y   = $game_player.y + range[1] 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 通行可否テーブル更新 
-   #-------------------------------------------------------------------------- 
-   def update_passage_table 
-     cache = get_passage_table_cache 
-     @passage_table      = cache.table 
-     @passage_scan_table = cache.scan_table 
-   
-     update_around_passage_table 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 通行可否テーブルのキャッシュを取得 
-   #-------------------------------------------------------------------------- 
-   def get_passage_table_cache 
-     map_id = $game_map.map_id 
-     cache  = @@passage_cache.find { |c| c.map_id == map_id } 
-   
-     # キャッシュミスしたら新规作成 
-     if cache == nil 
-       cache = PassageCache.new(map_id) 
-       cache.table      = Table.new($game_map.width, $game_map.height) 
-       cache.scan_table = Table.new( 
-         ($game_map.width  + @draw_grid_num.x - 1) / @draw_grid_num.x, 
-         ($game_map.height + @draw_grid_num.y - 1) / @draw_grid_num.y 
-       ) 
-     end 
-   
-     # 直近のキャッシュは先头に移动し、古いキャッシュは削除 
-     @@passage_cache.unshift(cache) 
-     @@passage_cache.delete_at(KMS_MiniMap::CACHE_NUM) 
-   
-     return cache 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 通行可否テーブルのキャッシュをクリア 
-   #-------------------------------------------------------------------------- 
-   def clear_passage_table_cache 
-     return if @passage_scan_table == nil 
-   
-     table = @passage_scan_table 
-     @passage_scan_table = Table.new(table.xsize, table.ysize) 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 通行可否テーブルの探索 
-   #     x, y : 探索位置 
-   #-------------------------------------------------------------------------- 
-   def scan_passage(x, y) 
-     dx = x / @draw_grid_num.x 
-     dy = y / @draw_grid_num.y 
-   
-     # 探索済み 
-     return if @passage_scan_table[dx, dy] == 1 
-   
-     # マップ范囲外 
-     return unless dx.between?(0, @passage_scan_table.xsize - 1) 
-     return unless dy.between?(0, @passage_scan_table.ysize - 1) 
-   
-     rx = (dx * @draw_grid_num.x)...((dx + 1) * @draw_grid_num.x) 
-     ry = (dy * @draw_grid_num.y)...((dy + 1) * @draw_grid_num.y) 
-     mw = $game_map.width  - 1 
-     mh = $game_map.height - 1 
-   
-     # 探索范囲内の通行テーブルを生成 
-     rx.each { |x| 
-       next unless x.between?(0, mw) 
-       ry.each { |y| 
-         next unless y.between?(0, mh) 
-   
-         # 通行方向フラグ作成 
-         # (↓、←、→、↑ の顺に 1, 2, 4, 8 が対応) 
-         flag = 0 
-         [2, 4, 6, 8].each{ |d| 
-           flag |= 1 << (d / 2 - 1) if $game_map.passable?(x, y, d) 
-         } 
-         @passage_table[x, y] = flag 
-       } 
-     } 
-     @passage_scan_table[dx, dy] = 1 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 周辺の通行可否テーブル更新 
-   #-------------------------------------------------------------------------- 
-   def update_around_passage_table 
-     gx = @draw_grid_num.x 
-     gy = @draw_grid_num.y 
-     dx = $game_player.x - gx / 2 
-     dy = $game_player.y - gy / 2 
-     scan_passage(dx,      dy) 
-     scan_passage(dx + gx, dy) 
-     scan_passage(dx,      dy + gy) 
-     scan_passage(dx + gx, dy + gy) 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ オブジェクト一覧更新 
-   #-------------------------------------------------------------------------- 
-   def update_object_list 
-     events = $game_map.events.values 
-   
-     # WALL 
-     @wall_events = events.find_all { |e| e.is_minimap_wall_event? } 
-   
-     # MOVE 
-     @move_events = events.find_all { |e| e.is_minimap_move_event? } 
-   
-     # OBJ 
-     @object_list = events.find_all { |e| e.is_minimap_object? } 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 位置更新 
-   #-------------------------------------------------------------------------- 
-   def update_position 
-     # 移动量算出 
-     pt = Point.new($game_player.x, $game_player.y) 
-     ox = ($game_player.real_x - pt.x) * @grid_size 
-     oy = ($game_player.real_y - pt.y) * @grid_size 
-   
-     @viewport.ox = ox 
-     @viewport.oy = oy 
-   
-     # 移动していたらマップ再描画 
-     if pt.x != @last_x || pt.y != @last_y 
-       draw_map 
-       @last_x = pt.x 
-       @last_y = pt.y 
-     end 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 描画范囲内判定 
-   #-------------------------------------------------------------------------- 
-   def in_draw_range?(x, y) 
-     rb = @draw_range_begin 
-     re = @draw_range_end 
-     return (x.between?(rb.x, re.x) && y.between?(rb.y, re.y)) 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ マップ范囲内判定 
-   #-------------------------------------------------------------------------- 
-   def in_map_range?(x, y) 
-     mw = $game_map.width 
-     mh = $game_map.height 
-     return (x.between?(0, mw - 1) && y.between?(0, mh - 1)) 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ マップ描画 
-   #-------------------------------------------------------------------------- 
-   def draw_map 
-     update_around_passage_table 
-   
-     bitmap  = @map_sprite.bitmap 
-     bitmap.fill_rect(bitmap.rect, KMS_MiniMap::BACKGROUND_COLOR) 
-   
-     draw_map_foreground(bitmap) 
-     draw_map_move_event(bitmap) 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 通行可能领域の描画 
-   #-------------------------------------------------------------------------- 
-   def draw_map_foreground(bitmap) 
-     range_x = (@draw_range_begin.x)..(@draw_range_end.x) 
-     range_y = (@draw_range_begin.y)..(@draw_range_end.y) 
-     map_w   = $game_map.width  - 1 
-     map_h   = $game_map.height - 1 
-     rect    = Rect.new(0, 0, @grid_size, @grid_size) 
-   
-     range_x.each { |x| 
-       next unless x.between?(0, map_w) 
-       range_y.each { |y| 
-         next unless y.between?(0, map_h) 
-         next if @passage_table[x, y] == 0 
-         next if @wall_events.find { |e| e.x == x && e.y == y }  # 壁 
-   
-         # グリッド描画サイズ算出 
-         rect.set(0, 0, @grid_size, @grid_size) 
-         rect.x = (x - @draw_range_begin.x) * @grid_size 
-         rect.y = (y - @draw_range_begin.y) * @grid_size 
-         flag = @passage_table[x, y] 
-         if flag & 0x01 == 0  # 下通行不能 
-           rect.height -= 1 
-         end 
-         if flag & 0x02 == 0  # 左通行不能 
-           rect.x     += 1 
-           rect.width -= 1 
-         end 
-         if flag & 0x04 == 0  # 右通行不能 
-           rect.width -= 1 
-         end 
-         if flag & 0x08 == 0  # 上通行不能 
-           rect.y      += 1 
-           rect.height -= 1 
-         end 
-         bitmap.fill_rect(rect, KMS_MiniMap::FOREGROUND_COLOR) 
-       } 
-     } 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 移动イベントの描画 
-   #-------------------------------------------------------------------------- 
-   def draw_map_move_event(bitmap) 
-     rect = Rect.new(0, 0, @grid_size, @grid_size) 
-     @move_events.each { |e| 
-       rect.x = (e.x - @draw_range_begin.x) * @grid_size 
-       rect.y = (e.y - @draw_range_begin.y) * @grid_size 
-       bitmap.fill_rect(rect, KMS_MiniMap::MOVE_EVENT_COLOR) 
-     } 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ アニメーション更新 
-   #-------------------------------------------------------------------------- 
-   def update_animation 
-     if @showing 
-       # フェードイン 
-       self.opacity += 16 
-       if opacity == 255 
-         @showing = false 
-       end 
-     elsif @hiding 
-       # フェードアウト 
-       self.opacity -= 16 
-       if opacity == 0 
-         @hiding = false 
-       end 
-     end 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ オブジェクト描画 
-   #-------------------------------------------------------------------------- 
-   def draw_object 
-     # 下准备 
-     bitmap = @object_sprite.bitmap 
-     bitmap.clear 
-     rect = Rect.new(0, 0, @grid_size, @grid_size) 
-   
-     # オブジェクト描画 
-     @object_list.each { |obj| 
-       next unless in_draw_range?(obj.x, obj.y) 
-   
-       color = KMS_MiniMap::OBJECT_COLOR[obj.minimap_object_type - 1] 
-       next if color.nil? 
-   
-       rect.x = (obj.real_x - @draw_range_begin.x) * @grid_size 
-       rect.y = (obj.real_y - @draw_range_begin.y) * @grid_size 
-       bitmap.fill_rect(rect, color) 
-     } 
-   
-     # 乗り物描画 
-     $game_map.vehicles.each { |vehicle| 
-       next if vehicle.transparent 
-   
-       rect.x = (vehicle.real_x - @draw_range_begin.x) * @grid_size 
-       rect.y = (vehicle.real_y - @draw_range_begin.y) * @grid_size 
-       bitmap.fill_rect(rect, KMS_MiniMap::VEHICLE_COLOR) 
-     } 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 更新 
-   #-------------------------------------------------------------------------- 
-   def update 
-     update_input 
-   
-     return unless need_update? 
-   
-     update_draw_range 
-     update_position 
-     update_animation 
-     draw_object 
-   
-     @map_sprite.update 
-     @object_sprite.update 
-     @position_sprite.update 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ 更新判定 
-   #-------------------------------------------------------------------------- 
-   def need_update? 
-     return (visible && opacity > 0) || @showing || @hiding 
-   end 
- end 
-   
- #============================================================================== 
- # □ Sprite_MiniMapIcon 
- #------------------------------------------------------------------------------ 
- #   ミニマップ用アイコンのクラスです。 
- #============================================================================== 
-   
- class Sprite_MiniMapIcon < Sprite 
-   DURATION_MAX = 60 
-   #-------------------------------------------------------------------------- 
-   # ● オブジェクト初期化 
-   #     viewport : ビューポート 
-   #-------------------------------------------------------------------------- 
-   def initialize(viewport = nil) 
-     super(viewport) 
-     @duration = DURATION_MAX / 2 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● フレーム更新 
-   #-------------------------------------------------------------------------- 
-   def update 
-     super 
-     @duration += 1 
-     if @duration == DURATION_MAX 
-       @duration = 0 
-     end 
-     update_effect 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ エフェクトの更新 
-   #-------------------------------------------------------------------------- 
-   def update_effect 
-     self.color.set(255, 255, 255, 
-       (@duration - DURATION_MAX / 2).abs * KMS_MiniMap::BLINK_LEVEL 
-     ) 
-   end 
- end 
-   
- #============================================================================== 
- # ■ Spriteset_Map 
- #============================================================================== 
-   
- class Spriteset_Map 
-   attr_reader :minimap 
-   #-------------------------------------------------------------------------- 
-   # ● オブジェクト初期化 
-   #-------------------------------------------------------------------------- 
-   alias initialize_KMS_MiniMap initialize 
-   def initialize 
-     initialize_KMS_MiniMap 
-   
-     create_minimap 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ ミニマップの作成 
-   #-------------------------------------------------------------------------- 
-   def create_minimap 
-     @minimap = Game_MiniMap.new(@tilemap) 
-     @minimap.visible = $game_system.minimap_show && $game_map.minimap_show? 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● 解放 
-   #-------------------------------------------------------------------------- 
-   alias dispose_KMS_MiniMap dispose 
-   def dispose 
-     dispose_KMS_MiniMap 
-   
-     dispose_minimap 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ ミニマップの解放 
-   #-------------------------------------------------------------------------- 
-   def dispose_minimap 
-     @minimap.dispose 
-     @minimap = nil 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● フレーム更新 
-   #-------------------------------------------------------------------------- 
-   alias update_KMS_MiniMap update 
-   def update 
-     update_KMS_MiniMap 
-   
-     update_minimap 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ ミニマップ更新 
-   #-------------------------------------------------------------------------- 
-   def minimap_show? 
-     return $game_map.minimap_show? && $game_system.minimap_show 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ ミニマップ更新 
-   #-------------------------------------------------------------------------- 
-   def update_minimap 
-     return if @minimap.nil? 
-   
-     # 表示切替 
-     if minimap_show? 
-       @minimap.visible = true 
-     else 
-       @minimap.visible = false 
-       return 
-     end 
-   
-     # フェード判定 
-     case $game_map.minimap_fade 
-     when Game_Map::MINIMAP_FADE_IN 
-       @minimap.fadein 
-       $game_map.minimap_fade = Game_Map::MINIMAP_FADE_NONE 
-     when Game_Map::MINIMAP_FADE_OUT 
-       @minimap.fadeout 
-       $game_map.minimap_fade = Game_Map::MINIMAP_FADE_NONE 
-     end 
-   
-     @minimap.update 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ ミニマップ全体をリフレッシュ 
-   #-------------------------------------------------------------------------- 
-   def refresh_minimap 
-     return if @minimap.nil? 
-   
-     @minimap.clear_passage_table_cache 
-     @minimap.refresh 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ ミニマップのオブジェクトを更新 
-   #-------------------------------------------------------------------------- 
-   def update_minimap_object 
-     @minimap.update_object_list unless @minimap.nil? 
-   end 
- end 
-   
- #============================================================================== 
- # ■ Scene_Map 
- #============================================================================== 
-   
- class Scene_Map 
-   #-------------------------------------------------------------------------- 
-   # ● 场所移动後の処理 
-   #-------------------------------------------------------------------------- 
-   alias post_transfer_KMS_MiniMap post_transfer 
-   def post_transfer 
-     refresh_minimap 
-   
-     post_transfer_KMS_MiniMap 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ ミニマップ全体をリフレッシュ 
-   #-------------------------------------------------------------------------- 
-   def refresh_minimap 
-     @spriteset.refresh_minimap unless @spriteset.nil? 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ○ ミニマップのオブジェクトを更新 
-   #-------------------------------------------------------------------------- 
-   def update_minimap_object 
-     @spriteset.update_minimap_object unless @spriteset.nil? 
-   end 
- end