# * Reload (load screen improvement) by mewsterus
# * To install, just insert this in a descriptive code slot right above Main
#===============================================================================
# ¦ Window_Load
#-------------------------------------------------------------------------------
# Edited by mewsterus
#===============================================================================
class Window_Load < Window_Base
attr_reader :filename
attr_reader :selected
#-----------------------------------------------------------------------------
# @ Make the window
#-----------------------------------------------------------------------------
def initialize(file_index)
super(0, 64 + file_index % 4 * 104, 640, 104)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
self.contents_opacity = 155
self.back_opacity = 160
@file_index = file_index
@filename = "Save#{@file_index + 1}.rxdata"
@selected = false
refresh
update
end
#-----------------------------------------------------------------------------
# @ Refresh the window
#-----------------------------------------------------------------------------
def refresh
self.contents.clear
@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)
@frame_count = Marshal.load(file)
@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)
@total_sec = @frame_count / Graphics.frame_rate
file.close
self.windowskin = RPG::Cache.windowskin(@game_system.windowskin_name)
for i in 0...@characters.size
if $face_enabled
bitmap = RPG::Cache.picture(@characters[i][0])
cw = 80
ch = 80
else
bitmap = RPG::Cache.character(@characters[i][0], @characters[i][1])
cw = bitmap.rect.width / 4
ch = bitmap.rect.height / 4
end
src_rect = Rect.new(0, 0, cw, ch)
x = 608 + (i - @characters.size) * 84
self.contents.blt(x, 80 - ch, bitmap, src_rect)
end
hour = @total_sec / 60 / 60
min = @total_sec / 60 % 60
sec = @total_sec % 60
text = sprintf("%02d:%02d:%02d", hour, min, sec)
self.contents.font.color = normal_color
self.contents.draw_text(4, 8, 256, 32, text, 2)
time_string = @time_stamp.strftime("%Y/%m/%d %H:%M")
self.contents.draw_text(4, 40, 256, 32, time_string, 2)
if $location_enabled
name = @game_map.name.delete("*").to_s
else
name = @game_party.actors[0].name
end
else
self.windowskin = RPG::Cache.windowskin($game_system.windowskin_name)
name = "[Empty]"
end
self.contents.font.color = normal_color
self.contents.draw_text(4, 8, 600, 32, name)
end
#-----------------------------------------------------------------------------
# @ Update the window
#-----------------------------------------------------------------------------
def update
super
if @selected
if self.contents_opacity < 255
self.contents_opacity += 10
end
else
if self.contents_opacity > 155
self.contents_opacity -= 10
end
end
end
#-----------------------------------------------------------------------------
# @ Accept whether window is selected
#-----------------------------------------------------------------------------
def selected=(selected)
@selected = selected
update
end
end
#===============================================================================
# ¦ Window_LoadCommand
#-------------------------------------------------------------------------------
# Written by mewsterus
#===============================================================================
class Window_LoadCommand < Window_Selectable
#-----------------------------------------------------------------------------
# @ Make the window
#-----------------------------------------------------------------------------
def initialize
super(-640, 0, 640, 64)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = 24
self.back_opacity = 160
self.index = 0
@commands = ["New Game", "Delete"]
@item_max = 2
@column_max = 2
draw_item(0)
draw_item(1)
end
#-----------------------------------------------------------------------------
# @ Draw item
#-----------------------------------------------------------------------------
def draw_item(index)
self.contents.font.color = system_color
rect = Rect.new(164 + index * 160, 0, 118, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.draw_text(rect, @commands[index], 1)
end
#-----------------------------------------------------------------------------
# @ Update the window
#-----------------------------------------------------------------------------
def update
if Input.repeat?(Input::DOWN) or Input.repeat?(Input::UP)
return
end
if Input.repeat?(Input::RIGHT)
if @index < @item_max - 1
$game_system.se_play($data_system.cursor_se)
@index += 1
end
end
if Input.repeat?(Input::LEFT)
if @index > 0
$game_system.se_play($data_system.cursor_se)
@index -= 1
end
end
super
end
#-----------------------------------------------------------------------------
# @ Update the cursor
#-----------------------------------------------------------------------------
def update_cursor_rect
if self.active
self.cursor_rect.set(160 + @index * 160, 0, 128, 32)
else
self.cursor_rect.empty
end
end
end
#===============================================================================
# ¦ Scene_Load
#-------------------------------------------------------------------------------
# Edited by mewsterus
#===============================================================================
class Scene_Load
#-----------------------------------------------------------------------------
# @ Main loop
#-----------------------------------------------------------------------------
def main
@sprite = Sprite.new
@sprite.bitmap = RPG::Cache.title($data_system.title_name)
@top_window = Window_LoadCommand.new
@savefile_windows = []
for i in 0..3
@savefile_windows.push(Window_Load.new(i))
end
@savefile_windows[0].x = 640
@savefile_windows[1].x = -640
@savefile_windows[2].x = 640
@savefile_windows[3].x = -640
Graphics.transition
loop do
Graphics.update
Input.update
if @savefile_windows[0].x > 0
@savefile_windows[0].x -= 64
end
if @savefile_windows[1].x < 0
@savefile_windows[1].x += 64
end
if @savefile_windows[2].x > 0
@savefile_windows[2].x -= 64
end
if @savefile_windows[3].x < 0
@savefile_windows[3].x += 64
end
if @top_window.x < 0
@top_window.x += 64
else
update
end
if $scene != self
break
end
end
unless @scene_title
@sprite.dispose
end
for i in 0..10
@top_window.x += 64
@savefile_windows[0].x -= 64
@savefile_windows[1].x += 64
@savefile_windows[2].x -= 64
@savefile_windows[3].x += 64
Graphics.update
end
Graphics.freeze
@top_window.dispose
for i in @savefile_windows
i.dispose
end
end
#-----------------------------------------------------------------------------
# @ Update the screen
#-----------------------------------------------------------------------------
def update
unless @delete
@top_window.update
end
for i in @savefile_windows
i.update
end
if @top_window.active
update_top
return
end
if @file_active
update_file
return
end
end
#-----------------------------------------------------------------------------
# @ Update the top window
#-----------------------------------------------------------------------------
def update_top
if Input.trigger?(Input::C)
case @top_window.index
when 0
command_new_game
return
when 1
@delete = true
$game_system.se_play($data_system.decision_se)
@top_window.active = false
@file_active = true
@file_index = 0
@savefile_windows[@file_index].selected = true
return
end
end
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Title.new
@scene_title = true
return
end
if Input.repeat?(Input::DOWN)
$game_system.se_play($data_system.cursor_se)
@top_window.active = false
@file_active = true
@file_index = 0
@savefile_windows[@file_index].selected = true
return
end
if Input.trigger?(Input::UP)
$game_system.se_play($data_system.cursor_se)
@top_window.active = false
@file_active = true
@file_index = 3
@savefile_windows[@file_index].selected = true
return
end
end
#-----------------------------------------------------------------------------
# @ Update the file windows
#-----------------------------------------------------------------------------
def update_file
if Input.trigger?(Input::C)
if @delete
if FileTest.exist?("Save#{@file_index + 1}.rxdata")
$game_system.se_play($data_system.decision_se)
File.delete("Save#{@file_index + 1}.rxdata")
@savefile_windows[@file_index].refresh
@delete = false
@savefile_windows[@file_index].selected = false
@file_active = false
@top_window.active = true
else
$game_system.se_play($data_system.buzzer_se)
end
return
end
on_decision("Save#{@file_index + 1}.rxdata")
return
end
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
if @delete
@delete = false
@savefile_windows[@file_index].selected = false
@file_active = false
@top_window.active = true
return
end
$scene = Scene_Title.new
@scene_title = true
return
end
if Input.repeat?(Input::DOWN)
unless @file_index < 3 or @delete
if Input.trigger?(Input::DOWN)
$game_system.se_play($data_system.cursor_se)
@savefile_windows[@file_index].selected = false
@file_active = false
@top_window.active = true
return
end
end
if Input.trigger?(Input::DOWN) or @file_index < 3
$game_system.se_play($data_system.cursor_se)
@savefile_windows[@file_index].selected = false
@file_index = (@file_index + 1) % 4
@savefile_windows[@file_index].selected = true
return
end
end
if Input.repeat?(Input::UP)
unless @file_index > 0 or @delete
$game_system.se_play($data_system.cursor_se)
@savefile_windows[@file_index].selected = false
@file_active = false
@top_window.active = true
return
end
if Input.trigger?(Input::UP) or @file_index > 0
$game_system.se_play($data_system.cursor_se)
@savefile_windows[@file_index].selected = false
@file_index = (@file_index + 3) % 4
@savefile_windows[@file_index].selected = true
return
end
end
end
#-----------------------------------------------------------------------------
# @ Decision command
#-----------------------------------------------------------------------------
def on_decision(filename)
unless FileTest.exist?(filename)
command_new_game
return
end
$game_system.se_play($data_system.load_se)
$game_temp = Game_Temp.new
file = File.open(filename, "rb")
characters = Marshal.load(file)
Graphics.frame_count = Marshal.load(file)
$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)
if $game_system.magic_number != $data_system.magic_number
$game_map.setup($game_map.map_id)
$game_player.center($game_player.x, $game_player.y)
end
$game_party.refresh
file.close
$game_system.bgm_play($game_system.playing_bgm)
$game_system.bgs_play($game_system.playing_bgs)
$game_map.update
$scene = Scene_Map.new
@scene_title = false
end
#--------------------------------------------------------------------------
# @ Generate new game
#--------------------------------------------------------------------------
def command_new_game
$game_system.se_play($data_system.decision_se)
Audio.bgm_stop
Graphics.frame_count = 0
$game_temp = Game_Temp.new
$game_system = Game_System.new
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_self_switches = Game_SelfSwitches.new
$game_screen = Game_Screen.new
$game_actors = Game_Actors.new
$game_party = Game_Party.new
$game_troop = Game_Troop.new
$game_map = Game_Map.new
$game_player = Game_Player.new
$game_party.setup_starting_members
$game_map.setup($data_system.start_map_id)
$game_player.moveto($data_system.start_x, $data_system.start_y)
$game_player.refresh
$game_map.autoplay
$game_map.update
$scene = Scene_Map.new
@scene_title = false
end
end
               (
geocities.com/mewsterus)