Permanent
Creation

RPGツクールXP/VX用のRGSS素材です。
一部英語版対応です。 (A few materials can be used for English RPG MAKER XP/VX.)
競合率はルファーの独断と偏見なのでたまにハズレます。


#==============================================================================
# ■ セーブデータ圧縮
#------------------------------------------------------------------------------
#  セーブデータの読み書きを、圧縮しながら行うようにします。
# (C) ルファー
# https://tkoolerlufar.pages.dev/
#==============================================================================

=begin
  =対応RGSS
  3

  =他の素材との競合の可能性
  !.. おそらくありませんが、上のほうに置くと競合しにくくなるかもしれません。
  連絡してくだされば対応します。

  =注意
   この素材を導入すると、以前のセーブデータは読み込めなくなってしまいます。
  ご注意ください。

  =更新履歴
  2011/12/17 「ゲームデータの圧縮」時、デバッグ時のセーブデータが含まれる
             可能性があった(未検証)ため、セーブデータのファイル名を変更

  2011/12/15 公開

  =再定義しているメソッド
  DataManager.save_file_exists?
  DataManager.make_filename
  DataManager.save_game_without_rescue
  DataManager.load_game_without_rescue
  DataManager.load_header_without_rescue

  =新規定義している定数
  DataManager::Lufar_FILENAME_FORMAT
=end
#----------------------------------------------------------------------------
# ◆ DataManager モジュール
#----------------------------------------------------------------------------
module DataManager
  #--------------------------------------------------------------------------
  # ● 定数
  #--------------------------------------------------------------------------
  Lufar_FILENAME_FORMAT = "Save%s.rvdata2"  # ファイル名の書式
  #--------------------------------------------------------------------------
  # ● セーブファイルの存在判定
  #--------------------------------------------------------------------------
  def self.save_file_exists?
    !Dir.glob(sprintf(Lufar_FILENAME_FORMAT, "*")).empty?
  end
  #--------------------------------------------------------------------------
  # ● ファイル名の作成
  #     index : ファイルインデックス
  #--------------------------------------------------------------------------
  def self.make_filename(index)
    sprintf(Lufar_FILENAME_FORMAT, sprintf("%02d", index + 1))
  end
  #--------------------------------------------------------------------------
  # ● セーブの実行(例外処理なし)
  #--------------------------------------------------------------------------
  def self.save_game_without_rescue(index)
    Zlib::GzipWriter.open(make_filename(index)) do |file|
      $game_system.on_before_save
      Marshal.dump(make_save_header, file)
      Marshal.dump(make_save_contents, file)
      @last_savefile_index = index
    end
    return true
  end
  #--------------------------------------------------------------------------
  # ● ロードの実行(例外処理なし)
  #--------------------------------------------------------------------------
  def self.load_game_without_rescue(index)
    Zlib::GzipReader.open(make_filename(index)) do |file|
      Marshal.load(file)
      extract_save_contents(Marshal.load(file))
      reload_map_if_updated
      @last_savefile_index = index
    end
    return true
  end
  #--------------------------------------------------------------------------
  # ● セーブヘッダのロード(例外処理なし)
  #--------------------------------------------------------------------------
  def self.load_header_without_rescue(index)
    Zlib::GzipReader.open(make_filename(index)) do |file|
      return Marshal.load(file)
    end
    return nil
  end
end

戻る