#
# クイックロード(RGSS3)
# (C)2012 TYPE74RX-T
#
#==============================================================================
# ■ SceneManager
#------------------------------------------------------------------------------
# シーン遷移を管理するモジュールです。たとえばメインメニューからアイテム画面
# を呼び出し、また戻るというような階層構造を扱うことができます。
#==============================================================================
class << SceneManager # module内のエイリアス
alias rx3_1201202_first_scene_class first_scene_class
def first_scene_class
# ★ クイックロードモードの条件を満たしていたらクイックロードに飛ぶ
return Scene_RX_QuickLoad if rx_quick_load?
rx3_1201202_first_scene_class # メソッド呼び戻し
end
end
module SceneManager
#--------------------------------------------------------------------------
# ★ クイックロードモードの条件を満たしているか
#--------------------------------------------------------------------------
def self.rx_quick_load?
$RX_QLOAD = 0
Input.update
$RX_QLOAD = 1 if Input.press?(:C) # 最後にロードしたファイルから始める
$RX_QLOAD = 2 if Input.press?(:B) # 最後にセーブしたファイルから始める
chk = Dir.glob('RX_SaveFileInfos.dat').size > 0 && $RX_QLOAD > 0
return chk
end
end
#==============================================================================
# ■ Scene_Save
#------------------------------------------------------------------------------
# セーブ画面の処理を行うクラスです。
#==============================================================================
class Scene_Save < Scene_File
#--------------------------------------------------------------------------
# ● セーブ成功時の処理
#--------------------------------------------------------------------------
alias rx3_1201202_on_save_success on_save_success
def on_save_success
index_save # ★ セーブしたファイルインデックス情報を書き込む
rx3_1201202_on_save_success # メソッド呼び戻し
end
#--------------------------------------------------------------------------
# ★ セーブしたファイルインデックス情報を書き込む
#--------------------------------------------------------------------------
def index_save
chk = rx_read_load_index # インデックス情報があれば、それを読み込む
file = File.open("RX_SaveFileInfos.dat", "wb")
# ファイルインデックス情報ファイルがなければ、仮に -1 を記録
chk ? Marshal.dump(@rx_load_index, file) : Marshal.dump(-1, file)
Marshal.dump(@index, file)
file.close
end
#--------------------------------------------------------------------------
# ★ ロードしたファイルインデックス情報を読み込む
#--------------------------------------------------------------------------
def rx_read_load_index
chk = Dir.glob('RX_SaveFileInfos.dat').size > 0
return false unless chk
file = File.open("RX_SaveFileInfos.dat", "rb")
@rx_load_index = Marshal.load(file)
sav_id = Marshal.load(file)
file.close
return true
end
end
#==============================================================================
# ■ Scene_Load
#------------------------------------------------------------------------------
# ロード画面の処理を行うクラスです。
#==============================================================================
class Scene_Load < Scene_File
#--------------------------------------------------------------------------
# ● ロード成功時の処理
#--------------------------------------------------------------------------
alias rx3_1201202_on_load_success on_load_success
def on_load_success
index_save # ★ ロードしたファイルインデックス情報を書き込む
rx3_1201202_on_load_success # メソッド呼び戻し
end
#--------------------------------------------------------------------------
# ★ ロードしたファイルインデックス情報を書き込む
#--------------------------------------------------------------------------
def index_save
rx_read_save_index # 先にセーブしたファイルインデックス情報を読み込む
file = File.open("RX_SaveFileInfos.dat", "wb")
Marshal.dump(@index, file)
Marshal.dump(@rx_save_index, file)
file.close
end
#--------------------------------------------------------------------------
# ★ セーブしたファイルインデックス情報を読み込む
#--------------------------------------------------------------------------
def rx_read_save_index
file = File.open("RX_SaveFileInfos.dat", "rb")
rx_load_index = Marshal.load(file)
@rx_save_index = Marshal.load(file)
file.close
end
end
#==============================================================================
# ★ Scene_RX_QuickLoad
#------------------------------------------------------------------------------
# クイックロードの処理を行うクラスです。
#==============================================================================
class Scene_RX_QuickLoad < Scene_MenuBase
#--------------------------------------------------------------------------
# ● 開始処理
#--------------------------------------------------------------------------
def start
super
quick_load
end
#--------------------------------------------------------------------------
# ● クイックロード
#--------------------------------------------------------------------------
def quick_load
index = read_index
if index >= 0
$game_system.on_after_load if DataManager.load_game(index)
SceneManager.goto(Scene_Map)
else
SceneManager.goto(Scene_Title)
end
end
#--------------------------------------------------------------------------
# ● インデックス情報をロード
#--------------------------------------------------------------------------
def read_index
file = File.open("RX_SaveFileInfos.dat", "rb")
load_index = Marshal.load(file)
save_index = Marshal.load(file)
file.close
return load_index if $RX_QLOAD == 1
return save_index if $RX_QLOAD == 2
end
end