135 lines
No EOL
5.8 KiB
Ruby
135 lines
No EOL
5.8 KiB
Ruby
#==============================================================================
|
|
# ■ DataManager
|
|
#------------------------------------------------------------------------------
|
|
# データベースとゲームオブジェクトを管理するモジュールです。ゲームで使用する
|
|
# ほぼ全てのグローバル変数はこのモジュールで初期化されます。
|
|
#==============================================================================
|
|
|
|
module DataManager
|
|
#--------------------------------------------------------------------------
|
|
# ● セーブファイルの存在判定 ※再定義
|
|
#--------------------------------------------------------------------------
|
|
def self.save_file_exists?
|
|
!Dir.glob('Save/Save*.rvdata2').empty?
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● セーブファイルの最大数 ※再定義
|
|
#--------------------------------------------------------------------------
|
|
def self.savefile_max
|
|
return 40
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● ファイル名の作成 ※再定義
|
|
# index : ファイルインデックス
|
|
#--------------------------------------------------------------------------
|
|
def self.make_filename(index)
|
|
sprintf("Save/Save%02d.rvdata2", index + 1)
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● セーブの実行 ※再定義
|
|
#--------------------------------------------------------------------------
|
|
def self.save_game(index)
|
|
Dir.mkdir("Save") unless Dir.exist?("Save")
|
|
begin
|
|
save_game_without_rescue(index)
|
|
rescue
|
|
delete_save_file(index)
|
|
false
|
|
end
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● セーブヘッダの作成
|
|
#--------------------------------------------------------------------------
|
|
def self.make_save_header
|
|
header = {}
|
|
header[:characters] = $game_party.characters_for_savefile
|
|
header[:members] = $game_party.member_for_savefile
|
|
header[:playtime_s] = $game_system.playtime_s
|
|
header[:game_clear] = $game_variables[27]
|
|
header[:save_time] = $game_party.save_day_time
|
|
header[:save_map] = $game_map.save_name
|
|
header[:liberate] = $game_variables[FAKEREAL::LIBERATE]
|
|
header[:draw_flag] = $game_switches[FAKEREAL::LIBERATE_OPACITY]
|
|
header[:chapter] = $game_system.now_chapter
|
|
header
|
|
end
|
|
end
|
|
|
|
#==============================================================================
|
|
# ■ Game_Party
|
|
#------------------------------------------------------------------------------
|
|
# パーティを扱うクラスです。所持金やアイテムなどの情報が含まれます。このクラ
|
|
# スのインスタンスは $game_party で参照されます。
|
|
#==============================================================================
|
|
|
|
class Game_Party < Game_Unit
|
|
#--------------------------------------------------------------------------
|
|
# ○ セーブした日付
|
|
#--------------------------------------------------------------------------
|
|
def save_day_time
|
|
time = Time.now
|
|
return "#{time.year}/#{time.mon}/#{time.mday}"
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ○ セーブファイル表示用のキャラクター情報
|
|
#--------------------------------------------------------------------------
|
|
def member_for_savefile
|
|
battle_members.collect do |actor|
|
|
[actor.face_name, actor.face_index, actor.name, actor.level]
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
=begin
|
|
#==============================================================================
|
|
# ■ SceneManager
|
|
#------------------------------------------------------------------------------
|
|
# シーン遷移を管理するモジュールです。たとえばメインメニューからアイテム画面
|
|
# を呼び出し、また戻るというような階層構造を扱うことができます。
|
|
#==============================================================================
|
|
|
|
module SceneManager
|
|
#--------------------------------------------------------------------------
|
|
# ● モジュールのインスタンス変数
|
|
#--------------------------------------------------------------------------
|
|
@save_bitmap = nil # 背景用ビットマップ
|
|
end
|
|
|
|
class << SceneManager
|
|
#--------------------------------------------------------------------------
|
|
# ● 背景として使うためのスナップショット作成
|
|
#--------------------------------------------------------------------------
|
|
alias save_snapshot_for_background snapshot_for_background
|
|
def snapshot_for_background
|
|
save_snapshot_for_background
|
|
@save_bitmap.dispose if @save_bitmap
|
|
@save_bitmap = Graphics.snap_to_bitmap
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ● 背景用ビットマップを取得
|
|
#--------------------------------------------------------------------------
|
|
def save_bitmap
|
|
@save_bitmap
|
|
end
|
|
end
|
|
|
|
#==============================================================================
|
|
# ■ Scene_MenuBase
|
|
#------------------------------------------------------------------------------
|
|
# メニュー画面系の基本処理を行うクラスです。
|
|
#==============================================================================
|
|
|
|
class Scene_MenuBase < Scene_Base
|
|
#--------------------------------------------------------------------------
|
|
# ● 背景の作成
|
|
#--------------------------------------------------------------------------
|
|
def create_background
|
|
@background_sprite = Sprite.new
|
|
@background_sprite.bitmap = SceneManager.save_bitmap
|
|
@background_sprite.width
|
|
@background_sprite.height
|
|
@background_sprite.color.set(16, 16, 16, 128)
|
|
end
|
|
end
|
|
=end |