module KGC module MiniMap EXTRA_COLOR = {} # ◆ 様々な条件下でのミニマップのマスの色 # EXTRA_COLOR[[優先度, "条件"]] = 色 で指定。 # 複数の色の条件が満たされた場合、優先度が高い色が優先されます。 EXTRA_COLOR[[0, "$game_map.slip_floor?(x, y)"]] = Color.new(255, 255, 0) end end #============================================================================== # □ Game_MiniMap #============================================================================== class Game_MiniMap #-------------------------------------------------------------------------- # ● マップ描画 #-------------------------------------------------------------------------- def draw_map(dir = 0) bitmap = @map_sprite.bitmap bitmap.fill_rect(bitmap.rect, KGC::MiniMap::BACKGROUND_COLOR) rect = Rect.new(0, 0, @grid_size, @grid_size) range_x = (@draw_range_begin.x)..(@draw_range_end.x) range_y = (@draw_range_begin.y)..(@draw_range_end.y) mw = $game_map.width - 1 mh = $game_map.height - 1 update_around_passage # 通行可能領域描画 range_x.each { |x| next unless x.between?(0, mw) range_y.each { |y| next unless y.between?(0, mh) next if @passage_table[x, y] == 0 next if @wall_events.find { |e| e.x == x && e.y == y } # 壁 rect.x = (x - @draw_range_begin.x) * @grid_size rect.y = (y - @draw_range_begin.y) * @grid_size color = KGC::MiniMap::FOREGROUND_COLOR # ☆ ここから KGC::MiniMap::EXTRA_COLOR.keys.sort_by{|key|key[0]}.each{|key| color = KGC::MiniMap::EXTRA_COLOR[key] if eval(key[1]) } bitmap.fill_rect(rect, color) # ☆ ここまで } } # MOVE @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, KGC::MiniMap::MOVE_EVENT_COLOR) } end end