=begin キャッシュ整理用メソッド追加 for XP ver 0.0.0.1         by 半生 http://www.tktkgame.com http://www11.atpages.jp/namahanka/ ■ 内容  RPG::Cacheモジュールにキャッシュ整理用のメソッドを追加します。 ■ Methods RPG::Cache.refresh  解放済みのキャッシュをキャッシュリストから削除します。 RPG::Cache.delete_animation(filename, hue=0) RPG::Cache.delete_autotile(filename) RPG::Cache.delete_battleback(filename) RPG::Cache.delete_battler(filename, hue=0) RPG::Cache.delete_character(filename) RPG::Cache.delete_fog(filename, hue=0) RPG::Cache.delete_gameover(filename) RPG::Cache.delete_icon(filename) RPG::Cache.delete_panorama(filename, hue=0) RPG::Cache.delete_picture(filename) RPG::Cache.delete_tileset(filename) RPG::Cache.delete_title(filename) RPG::Cache.delete_windowskin(filename)  キャッシュを個別に削除します RPG::Cache.delete_animation2(filename) RPG::Cache.delete_battler2(filename) RPG::Cache.delete_fog2(filename) RPG::Cache.delete_panorama2(filename)  色相差分も含めてキャッシュを個別に削除します。 RPG::Cache.delete_group(group)  キャッシュをグループ毎削除します。 ■ 更新履歴 ver 0.0.0.1 (2010/05/19)  公開 =end module HN;end module HN::CacheUtil REGEX_ANIME = /^Graphics\/Animations\// REGEX_AUTOTILE = /^Graphics\/Autotiles\// REGEX_BATTLEBACK = /^Graphics\/Battlebacks\// REGEX_BATTLER = /^Graphics\/Battlers\// REGEX_CHARA = /^Graphics\/Characters\// REGEX_FOG = /^Graphics\/Fogs\// REGEX_GAMEOVER = /^Graphics\/Gameovers\// REGEX_ICON = /^Graphics\/Icons\// REGEX_PANORAMA = /^Graphics\/Panoramas\// REGEX_PICTURE = /^Graphics\/Pictures\// REGEX_TILESET = /^Graphics\/Tilesets\// REGEX_TITLE = /^Graphics\/Titles\// REGEX_SKIN = /^Graphics\/Windowskins\// REGEX_TILE = /^Graphics\/Tiles\// # 解放済みのBitmapオブジェクトをキャッシュから削除する def refresh @cache.delete_if{|key, bitmap| bitmap.disposed?} end # キャッシュのされている画像の個数 def size(filter=false) if filter @cache.select{|key, bitmap| !bitmap.disposed?}.size else @cache.size end end # キャッシュを個別に削除する def delete(folder_name, filename, hue=0) path = folder_name + filename if hue == 0 key = path else key = [path, hue] end if @cache.key?(key) @cache[key].dispose @cache.delete(key) end end # キャッシュを個別に削除する,色相差分も削除する def delete2(folder_name, filename) path = folder_name + filename # 元キャッシュを削除 self.delete(folder_name, filename) # 色相差分キャッシュを削除 @cache.keys.each do |key| if key.is_a?(Array) and key[0] == path self.delete(folder_name, filename, key[1]) end end end # キャッシュをグループ毎削除する。 def delete_group(group) case group when :animation, "animation" regex = HN::CacheUtil::REGEX_ANIME when :autotile, "autotile" regex = HN::CacheUtil::REGEX_AUTOTILE when :battleback, "battleback" regex = HN::CacheUtil::REGEX_BATTLEBACK when :battler, "battler" regex = HN::CacheUtil::REGEX_BATTLER when :charactor, "charactor" regex = HN::CacheUtil::REGEX_CHARA when :fog, "fog" regex = HN::CacheUtil::REGEX_FOG when :gameover, "gameover" regex = HN::CacheUtil::REGEX_GAMEOVER when :icon, "icon" regex = HN::CacheUtil::REGEX_ICON when :panorama, "panorama" regex = HN::CacheUtil::RREGEX_PANORAMA when :picture, "picture" regex = HN::CacheUtil::REGEX_PICTURE when :tileset, "tileset" regex = HN::CacheUtil::REGEX_TILESET when :title, "title" regex = HN::CacheUtil::REGEX_TITLE when :windowskin, "windowskin" regex = HN::CacheUtil::REGEX_SKIN when :tile, "tile" regex = HN::CacheUtil::REGEX_TILE else return end delete_list = [] @cache.each do |key, bitmap| if bitmap.disposed? delete_list.push(key) next end if key.is_a?(Array) if key[0][regex] bitmap.dispose delete_list.push(key) end else if key[regex] bitmap.dispose delete_list.push(key) end end end delete_list.each do |key| @cache.delete(key) end end # アニメーションキャッシュを個別に削除 def delete_animation(filename, hue=0) self.delete("Graphics/Animations/", filename, hue) end # アニメーションキャッシュを個別に削除,色相差分も削除する def delete_animation2(filename) self.delete2("Graphics/Animations/", filename) end # オートタイルキャッシュを個別に削除 def delete_autotile(filename) self.delete("Graphics/Autotiles/", filename) end # 戦闘背景キャッシュを個別に削除 def delete_battleback(filename) self.delete("Graphics/Battlebacks/", filename) end # バトラーキャッシュを個別に削除 def delete_battler(filename, hue=0) self.delete("Graphics/Battlers/", filename, hue) end # バトラーキャッシュを個別に削除,色相差分も削除する def delete_battler2(filename) self.delete2("Graphics/Battlers/", filename) end # 歩行グラキャッシュを個別に削除 def delete_character(filename) self.delete("Graphics/Characters/", filename) end # フォグキャッシュを個別に削除 def delete_fog(filename, hue=0) self.delete("Graphics/Fogs/", filename, hue) end # フォグキャッシュを個別に削除,色相差分も削除する def delete_fog2(filename) self.delete2("Graphics/Fogs/", filename) end # ゲームオーバーキャッシュを個別に削除 def delete_gameover(filename) self.delete("Graphics/Gameovers/", filename) end # アイコンキャッシュを個別に削除 def delete_icon(filename) self.delete("Graphics/Icons/", filename) end # パノラマキャッシュを個別に削除 def delete_panorama(filename, hue=0) self.delete("Graphics/Panoramas/", filename, hue) end # パノラマキャッシュを個別に削除,色相差分も削除する def delete_panorama2(filename) self.delete2("Graphics/Panoramas/", filename) end # ピクチャキャッシュを個別に削除 def delete_picture(filename) self.delete("Graphics/Pictures/", filename) end # タイルセットキャッシュを個別に削除 def delete_tileset(filename) self.delete("Graphics/Tilesets/", filename) end # タイトルキャッシュを個別に削除 def delete_title(filename) self.delete("Graphics/Titles/", filename) end # ウィンドウスキンキャッシュを個別に削除 def delete_windowskin(filename) self.delete("Graphics/Windowskins/", filename) end end # Chacheモジュールに組み込む RPG::Cache.extend HN::CacheUtil