#****************************************************************************** # TES本体 強力置換追加 # for RGSS3 2015.05.27 # ◆機能説明 #  TESシナリオファイルをメッセージに限らず置換する # replace.txtより強力なreplace2.txtを使えるようにする # 本体書き換えスクリプトです。 # # ◆書き方 # TES本体スクリプトより下に置いてください。 # replace2.txtの書き方はreplace.txtと同じです。 # また、replace.txtよりも先に置換されます。 # # ◆注意事項 #  ※このモジュールの動作には、TESの本体が必要です。 #  ※このモジュールの動作には、TES基本モジュールが必要です。 # # 提供者:ユウワン http://nightbug.net/ #****************************************************************************** class Window_TesBottom < Window_Selectable #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh return unless @target @info_list = [] list = {} src = TES::SOURCE_DIR + @target + "/" # 更新情報からリスト作成 if @update_info[@target] @update_info[@target].each do |filename, mtime| list[filename] = [mtime, nil] end end # フォルダからリスト作成 Dir.entries(src, :encoding => "UTF-8").each do |file| if TesManager.extname(file) == ".txt" and file != "replace.txt" and file != "replace2.txt" list[file] = [nil, nil] unless list.include?(file) list[file][1] = File.mtime(src + file) end end # リストを配列に変換 list.each do |filename, mtimes| @info_list << [filename, mtimes[0], mtimes[1]] end create_contents contents.font.size = 20 draw_all_items end end module TesManager #-------------------------------------------------------------------------- # ○ TES変換(ファイル単位) #-------------------------------------------------------------------------- class << self alias convert_file_org convert_file end def self.convert_file(dir, file) return unless extname(file) == ".txt" return if file == "replace2.txt" # 置換リストは処理しない self.convert_file_org(dir, file) end end class Tes_Loader < Tes_ConverterBase #-------------------------------------------------------------------------- # ○ オブジェクト初期化 #-------------------------------------------------------------------------- alias initialize_org initialize def initialize initialize_org super @replace2_list = [] end #-------------------------------------------------------------------------- # ○ メイン処理 #-------------------------------------------------------------------------- def processing super @replace2_list.clear return unless FileTest.exist?(@dir + "replace2.txt") File.open(@dir + "replace2.txt", "r", :encoding => "BOM|UTF-8") do |f| f.each_line do |line| line.gsub!(/\r\n|\r|\n/) { "" } before, after = line.split(/\t+/, 2) @replace2_list << [before, after] if !before.empty? and !after.empty? end end File.open(@dir + @filename, "r", :encoding => "BOM|UTF-8") do |f| f.each_line do |line| @line_number += 1 line.gsub!(/\r\n|\r|\n/) { "" } @replace2_list.each do |before, after| line.gsub!(/#{before}/) { after } end @data << [line, @line_number] end end end end