=begin タイルマップ指定 for VX ver 0.0.1.0         by 半生 http://www.tktkgame.com/ http://www11.atpages.jp/namahanka/ ■ 必須スクリプト  ・当サイトの"キャッシュ整理用メソッド追加"をあわせて導入する必要があります。 ■ 内容  ・Map毎にタイルセット画像を指定できるようにします。 ■ 使用方法  ・当サイトのキャッシュ整理用メソッド追加をあわせて導入します。 ・ツクールのエディタには対応していないのでプロジェクトをコピー  => 違うタイルセットをデフォルト名にしてマップを作成  => マップデータを元のプロジェクトにコピー  => 使用したタイルセットを名前を変えて元プロジェクトにコピー   => "System.rvdata"の名前を変えて元プロジェクトにコピー(通行設定ファイル)  => スクリプト設定の変更  とする必要があります(面倒) マップデータ("MapXXX.rvdata"と"MapInfos.rvdata")は常に同期させておく必要 があります。 ■ 更新履歴 ver 0.0.1.0 (2010/05/30)  使いにくかったので色々変更 ver 0.0.0.1 (2010/05/23)  公開 =end module HN;end # ▼ 設定ココから ▼ module HN::Tileset # キャッシュを保持する期間(1以上) CACHE_COUNT = 3 # タイルセット設定 TILE_SETS = [ ["TileA1", "TileA2", "TileA3", "TileA4", "TileA5", "TileB", "TileC", "TileD", "TileE"], ["set1/TileA1", "set1/TileA2", "set1/TileA3", "set1/TileA4", "set1/TileA5", "set1/TileB", "set1/TileC", "set1/TileD", "set1/TileE"], ["set2/TileA1", "set2/TileA2", "set2/TileA3", "set2/TileA4", "set2/TileA5", "set2/TileB", "set2/TileC", "set2/TileD", "set2/TileE"], ] # 通行設定ファイル名(元"System.rvdata") PASSENGERS = [ "System.rvdata", "Pass1.rvdata", "Pass2.rvdata", ] # マップの設定 MAP_SETTING = { # MapID => [タイル設定, 通行設定ファイル名], 2 => [TILE_SETS[1], PASSENGERS[1]], 3 => [TILE_SETS[1], PASSENGERS[1]], } end # ▲ 設定ココまで ▲ module HN::Tileset DEFAULT_SET = ["TileA1", "TileA2", "TileA3", "TileA4", "TileA5", "TileB", "TileC", "TileD", "TileE"] @filenames = DEFAULT_SET.dup @pass_datas = {} @cache_tilesets = {} def self.filenames return @filenames end def self.passages return @passages end def self.set_up(map_id) if MAP_SETTING.key?(map_id) @filenames = MAP_SETTING[map_id][0].dup @passages = self.pass_data(MAP_SETTING[map_id][1]) else @filenames = DEFAULT_SET.dup @passages = $data_system.passages end end def self.pass_data(filename) case filename when "System.rvdata", "" return $data_system.passages else unless @pass_datas.key?(filename) @pass_datas[filename] = load_data("Data/" + filename).passages end return @pass_datas[filename] end end def self.refresh @filenames.each_with_index do |filename, index| unless DEFAULT_SET.include?(filename) @cache_tilesets[filename] = CACHE_COUNT end end # しばらく使われていないキャッシュを削除 @cache_tilesets.keys.each do |filename| count = (@cache_tilesets[filename] -= 1) if ( count < 0 ) Cache.delete_system(filename) end end @cache_tilesets.delete_if{|filename,count| count < 0} end def self.reset @cache_tilesets.keys.each do |filename| Cache.delete_system(filename) end @cache_tilesets.clear @filenames = DEFAULT_SET.dup end end class Game_Map attr_reader :tilemaps alias :_hn_tileset__setup :setup unless method_defined?(:_hn_tileset__setup) def setup(map_id) HN::Tileset.set_up(map_id) _hn_tileset__setup(map_id) @passages = HN::Tileset.passages end end class Spriteset_Map #-------------------------------------------------------------------------- # ● タイルマップの作成 #-------------------------------------------------------------------------- alias :_hn_tileset__create_tilemap :create_tilemap unless method_defined?(:_hn_tileset__create_tilemap) def create_tilemap _hn_tileset__create_tilemap refresh_tileset end def refresh_tileset 9.times do |i| @tilemap.bitmaps[i] = Cache.system(HN::Tileset.filenames[i]) end end end class Sprite_Character #-------------------------------------------------------------------------- # ● 指定されたタイルが含まれるタイルセット画像の取得 # tile_id : タイル ID #-------------------------------------------------------------------------- # 再定義 def tileset_bitmap(tile_id) set_number = tile_id / 256 return Cache.system(HN::Tileset.filenames[5]) if set_number == 0 return Cache.system(HN::Tileset.filenames[6]) if set_number == 1 return Cache.system(HN::Tileset.filenames[7]) if set_number == 2 return Cache.system(HN::Tileset.filenames[8]) if set_number == 3 return nil end end