95 lines
3.4 KiB
Ruby
95 lines
3.4 KiB
Ruby
|
#==============================================================================
|
||
|
# ** Scene_Load
|
||
|
#------------------------------------------------------------------------------
|
||
|
# This class performs load screen processing.
|
||
|
#==============================================================================
|
||
|
|
||
|
class Scene_Load < Scene_File
|
||
|
#--------------------------------------------------------------------------
|
||
|
# * Object Initialization
|
||
|
#--------------------------------------------------------------------------
|
||
|
def initialize
|
||
|
# Remake temporary object
|
||
|
$game_temp = Game_Temp.new
|
||
|
# Timestamp selects new file
|
||
|
$game_temp.last_file_index = 0
|
||
|
latest_time = Time.at(0)
|
||
|
for i in 0..3
|
||
|
filename = make_filename(i)
|
||
|
if FileTest.exist?(filename)
|
||
|
file = File.open(filename, "r")
|
||
|
if file.mtime > latest_time
|
||
|
latest_time = file.mtime
|
||
|
$game_temp.last_file_index = i
|
||
|
end
|
||
|
file.close
|
||
|
end
|
||
|
end
|
||
|
super("Which file would you like to load?")
|
||
|
end
|
||
|
#--------------------------------------------------------------------------
|
||
|
# * Decision Processing
|
||
|
#--------------------------------------------------------------------------
|
||
|
def on_decision(filename)
|
||
|
# If file doesn't exist
|
||
|
unless FileTest.exist?(filename)
|
||
|
# Play buzzer SE
|
||
|
$game_system.se_play($data_system.buzzer_se)
|
||
|
return
|
||
|
end
|
||
|
# Play load SE
|
||
|
$game_system.se_play($data_system.load_se)
|
||
|
# Read save data
|
||
|
file = File.open(filename, "rb")
|
||
|
read_save_data(file)
|
||
|
file.close
|
||
|
# Restore BGM and BGS
|
||
|
$game_system.bgm_play($game_system.playing_bgm)
|
||
|
$game_system.bgs_play($game_system.playing_bgs)
|
||
|
# Update map (run parallel process event)
|
||
|
$game_map.update
|
||
|
# Switch to map screen
|
||
|
$scene = Scene_Map.new
|
||
|
end
|
||
|
#--------------------------------------------------------------------------
|
||
|
# * Cancel Processing
|
||
|
#--------------------------------------------------------------------------
|
||
|
def on_cancel
|
||
|
# Play cancel SE
|
||
|
$game_system.se_play($data_system.cancel_se)
|
||
|
# Switch to title screen
|
||
|
$scene = Scene_Title.new
|
||
|
end
|
||
|
#--------------------------------------------------------------------------
|
||
|
# * Read Save Data
|
||
|
# file : file object for reading (opened)
|
||
|
#--------------------------------------------------------------------------
|
||
|
def read_save_data(file)
|
||
|
# Read character data for drawing save file
|
||
|
characters = Marshal.load(file)
|
||
|
# Read frame count for measuring play time
|
||
|
Graphics.frame_count = Marshal.load(file)
|
||
|
# Read each type of game object
|
||
|
$game_system = Marshal.load(file)
|
||
|
$game_switches = Marshal.load(file)
|
||
|
$game_variables = Marshal.load(file)
|
||
|
$game_self_switches = Marshal.load(file)
|
||
|
$game_screen = Marshal.load(file)
|
||
|
$game_actors = Marshal.load(file)
|
||
|
$game_party = Marshal.load(file)
|
||
|
$game_troop = Marshal.load(file)
|
||
|
$game_map = Marshal.load(file)
|
||
|
$game_player = Marshal.load(file)
|
||
|
$game_oneshot = Marshal.load(file)
|
||
|
# If magic number is different from when saving
|
||
|
# (if editing was added with editor)
|
||
|
if $game_system.magic_number != $data_system.magic_number
|
||
|
# Load map
|
||
|
$game_map.setup($game_map.map_id)
|
||
|
$game_player.center($game_player.x, $game_player.y)
|
||
|
end
|
||
|
# Refresh party members
|
||
|
$game_party.refresh
|
||
|
end
|
||
|
end
|