=begin
===============================================================================
简易式存档界面 By喵呜喵5
===============================================================================
【说明】
给存档数目只有一个的游戏使用的简易式存档界面
在事件中使用脚本“load”可以快速读档(适用于使用事件作为标题菜单的情况)
=end
module M5SimpleSave
#==============================================================================
# 设定部分
#==============================================================================
SAVE_NAME = "SAVE"
#存档的文件名
SAVE_OPTION = "保存记录"
#存档按钮的提示文字
CANCLE_OPTION = "回到游戏"
#取消按钮的提示文字
SAVING_HINT = "保存中"
#存档时的提示文字
SAVE_HINT = "记录已保存"
#存档完成时的提示文字
SAVE_SE = "Save"
#存档完成时播放的音效
LOAD_SE = "Load"
#读档完成时播放的音效
LOAD_ERROR = "没有发现可以使用的存档"
#读档失败时的提示文字
LOAD_ERROR_SE = "Buzzer1"
#读档失败时播放的音效
#==============================================================================
# 设定结束
#==============================================================================
end
class Window_Hint < Window_Base
def initialize(x = 0,y = 90,height = 80)
super(x,y,Graphics.width, height)
end
def write_text(text)
contents.clear
draw_text(0,0,Graphics.width,fitting_height(1),text,1)
end
def line_height
Font.default_size
end
end
class Window_SimpleSave < Window_Command
def initialize
super(0, 0)
update_placement
self.openness = 0
open
end
def window_width
160
end
def update_placement
self.x = (Graphics.width - width) / 2
self.y = (Graphics.height - height) / 2
end
def make_command_list
add_command(M5SimpleSave::SAVE_OPTION, :save)
add_command(M5SimpleSave::CANCLE_OPTION, :cancel)
end
def alignment
return 1
end
end
class Scene_SimpleSave < Scene_MenuBase
def start
super
create_command_window
end
def pre_terminate
super
close_command_window
end
def create_command_window
@command_window = Window_SimpleSave.new
@command_window.set_handler(:save, method(:command_save))
@command_window.set_handler(:cancel, method(:return_scene))
end
def close_command_window
@command_window.close
update until @command_window.close?
end
def command_save
DataManager.save_game(1)
hint = Window_Hint.new
Graphics.wait(10)
5.times {|i| hint.write_text(M5SimpleSave::SAVING_HINT+"."*(i+1)); Graphics.wait(20)}
Graphics.wait(40)
Audio.se_play("Audio/SE/"+M5SimpleSave::SAVE_SE)
hint.write_text(M5SimpleSave::SAVE_HINT)
Graphics.wait(10)
loop do
Input.update
break if Input.trigger?(:C)
end
hint.dispose
return_scene
end
end
class << DataManager
def make_filename(index)
M5SimpleSave::SAVE_NAME
end
def savefile_max
1
end
def save_file_exists?
!Dir.glob(M5SimpleSave::SAVE_NAME).empty?
end
end
class Scene_File
def visible_max
1
end
end
class Game_Interpreter
def load
if FileTest.exist?(M5SimpleSave::SAVE_NAME)
load_success
else
load_error
end
end
def save
SceneManager.call(Scene_SimpleSave)
end
def load_success
Audio.se_play("Audio/SE/"+M5SimpleSave::LOAD_SE)
DataManager.load_game(1)
RPG::BGM.fade(1000)
RPG::BGS.fade(1000)
RPG::ME.fade(1000)
Graphics.fadeout(1000 * Graphics.frame_rate / 1000)
RPG::BGM.stop
RPG::BGS.stop
RPG::ME.stop
$game_system.on_after_load
SceneManager.goto(Scene_Map)
end
def load_error
Audio.se_play("Audio/SE/"+M5SimpleSave::LOAD_ERROR_SE)
hint = Window_Hint.new(0,Graphics.height/2 - 40)
hint.write_text(M5SimpleSave::LOAD_ERROR)
Graphics.wait(10)
loop do
Input.update
break if Input.trigger?(:C)
end
hint.dispose
end
end
Scene_Save = Scene_SimpleSave