#==============================================================================
# ** Window_SaveFile
#------------------------------------------------------------------------------
# This window displays save files on the save and load screens.
#==============================================================================
class Window_SaveFile < Window_Base
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_reader :filename # file name
attr_reader :selected # selected
#--------------------------------------------------------------------------
# * Object Initialization
# file_index : save file index (0-3)
# filename : file name
#--------------------------------------------------------------------------
def initialize(file_index, filename)
super(0, 52 + file_index % 3 * 111, 640, 140)
self.contents = Bitmap.new(width - 32, height - 32)
@file_index = file_index
@filename = "Save#{@file_index + 1}.rxdata"
@time_stamp = Time.at(0)
@file_exist = FileTest.exist?(@filename)
if @file_exist
file = File.open(@filename, "r")
@time_stamp = file.mtime
@characters = Marshal.load(file)
@lead = Marshal.load(file)
@frame_count = Marshal.load(file)
@game_system = Marshal.load(file)
@game_switches = Marshal.load(file)
@game_variables = Marshal.load(file)
@total_sec = @frame_count / Graphics.frame_rate
file.close
end
self.opacity = 0
@background_sprite = Sprite.new
@background_sprite.bitmap = RPG::Cache.picture("file")
@background_sprite.z = self.z - 1
@background_sprite.x = self.x + 4
@background_sprite.y = self.y + 16
refresh
@selected = false
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
# Draw file number
self.contents.font.color = normal_color
name = "File#{@file_index + 1}"
self.contents.draw_text(4, 8, 600, 32, name)
@name_width = contents.text_size(name).width
# If save file exists
if @file_exist
self.contents.draw_text(64, 8, 600, 32, @lead[0].to_s)
self.contents.draw_text(64, 40, 600, 32, "Lv " + @lead[1].to_s)
# Draw character
for i in 0...@characters.size
bitmap = RPG::Cache.face(@characters[i])
x = 400 - @characters.size * bitmap.width + i * bitmap.width
self.contents.blt(x, 4, bitmap, Rect.new(0, 0, bitmap.width, bitmap.height))
end
# Draw map name
self.contents.draw_text(4, 8, 600, 32, @lead[2].to_s, 2)
# Draw play time
hour = @total_sec / 60 / 60
min = @total_sec / 60 % 60
sec = @total_sec % 60
time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
self.contents.font.color = normal_color
self.contents.draw_text(4, 64, 600, 32, time_string, 2)
end
end
#--------------------------------------------------------------------------
# * Cursor Rectangle Update
#--------------------------------------------------------------------------
def update_cursor_rect
if @selected
self.cursor_rect.set(0, 8, @name_width + 8, 32)
else
self.cursor_rect.empty
end
end
def dispose
@background_sprite.dispose
super
end
end