You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1516 lines
50 KiB
JavaScript

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

//=============================================================================
// Yanfly Engine Plugins - Save Core
// YEP_SaveCore.js
//=============================================================================
var Imported = Imported || {};
Imported.YEP_SaveCore = true;
var Yanfly = Yanfly || {};
Yanfly.Save = Yanfly.Save || {};
Yanfly.Save.version = 1.06;
//=============================================================================
/*:
* @plugindesc v1.06 存档核心☁️
* @author Yanfly Engine Plugins
*
* @param ---General---
* @text ---全局---
* @default
*
* @param Max Files
* @text 最大存档数
* @parent ---General---
* @type number
* @min 1
* @desc The maximum number of files for your game.
* Default: 20
* @default 24
*
* @param Saved Icon
* @text 保存的图标
* @parent ---General---
* @type number
* @min 0
* @desc Icon ID used for a file slot with a save.
* @default 231
*
* @param Empty Icon
* @text 空文件图标
* @parent ---General---
* @type number
* @min 0
* @desc Icon ID used for an empty file slot.
* @default 230
*
* @param Return After Saving
* @text 保存后返回
* @parent ---General---
* @type boolean
* @on YES
* @off NO
* @desc Return to the previous scene after saving?
* NO - false YES - true Default: true
* @default false
*
* @param Auto New Index
* @text 自动新建索引
* @parent ---General---
* @type boolean
* @on YES
* @off NO
* @desc For new games, automatically decide the save slot?
* NO - false YES - true Default: true
* @default true
*
* @param ---Action Window---
* @text ---动作窗口---
* @default
*
* @param Load Command
* @text 加载命令
* @parent ---Action Window---
* @desc Text for the load command in the action window.
* @default 加载
*
* @param Save Command
* @text 保存命令
* @parent ---Action Window---
* @desc Text for the save command in the action window.
* @default 保存
*
* @param Delete Command
* @text 删除命令
* @parent ---Action Window---
* @desc Text for the delete command in the action window.
* @default 删除
*
* @param ---Help Window---
* @text ---帮助窗口---
* @default
*
* @param Select Help
* @text 选择帮助
* @parent ---Help Window---
* @desc Help text displayed when selecting a slot.
* @default 请选择一个文件槽
*
* @param Load Help
* @text 加载帮助
* @parent ---Help Window---
* @desc Help text displayed when selecting load option.
* @default 加载当前进度
*
* @param Save Help
* @text 保存帮助
* @parent ---Help Window---
* @desc Help text displayed when selecting save option.
* @default 保存当前进度
*
* @param Delete Help
* @text 删除帮助
* @parent ---Help Window---
* @desc Help text displayed when selecting delete option.
* @default 删除当前进度
*
* @param ---Delete---
* @text ---删除---
* @default
*
* @param Delete Filename
* @text 删除文件名
* @parent ---Delete---
* @type file
* @dir audio/se/
* @require 1
* @desc Used for the delete sound from the /audio/se/ folder.
* Do NOT include the file extension.
* @default Damage2
*
* @param Delete Volume
* @parent ---Delete---
* @desc Volume used for the delete sound.
* @default 100
*
* @param Delete Pitch
* @parent ---Delete---
* @desc Pitch used for the delete sound.
* @default 150
*
* @param Delete Pan
* @parent ---Delete---
* @desc Pan used for the delete sound.
* @default 0
*
* @param ---Info Window---
* @text ---信息窗口---
* @default
*
* @param Show Game Title
* @text 显示游戏标题
* @parent ---Info Window---
* @type boolean
* @on Show
* @off Hide
* @desc Display the game title in the save file?
* NO - false YES - true
* @default true
*
* @param Invalid Game Text
* @text 无效的游戏文本
* @parent ---Info Window---
* @desc Text used when the save is for a different game.
* @default 这是另一个游戏的保存。
*
* @param Empty Game Text
* @text 空游戏文本
* @parent ---Info Window---
* @desc Text used when the save is empty.
* @default Empty
*
* @param Map Display Name
* @text 地图显示名称
* @parent ---Info Window---
* @type boolean
* @on Show
* @off Hide
* @desc Use the display name for the saved map instead?
* NO - false YES - true
* @default true
*
* @param Party Display
* @text 队伍展示
* @parent ---Info Window---
* @type select
* @option None
* @value 0
* @option Characters
* @value 1
* @option Faces
* @value 2
* @option SV Actors
* @value 3
* @desc The display type used for the party.
* 0 - None; 1 - Characters; 2 - Faces; 3 - SV Actors
* @default 2
*
* @param Party Y Position
* @text 队伍Y位置
* @parent ---Info Window---
* @desc This is the base Y position for the party display.
* Formulas can be used.
* @default this.lineHeight() + Window_Base._faceHeight
*
* @param Show Actor Names
* @text 显示角色名称
* @parent ---Info Window---
* @type boolean
* @on Show
* @off Hide
* @desc Display the names of the actors?
* NO - false YES - true
* @default true
*
* @param Name Font Size
* @text 名称字体大小
* @parent ---Info Window---
* @type number
* @min 1
* @desc Font size used for names if names are displayed.
* Default: 28
* @default 20
*
* @param Show Actor Level
* @text 显示角色等级
* @parent ---Info Window---
* @type boolean
* @on Show
* @off Hide
* @desc Display the levels of the actors?
* NO - false YES - true
* @default true
*
* @param Level Font Size
* @text 等级字体大小
* @parent ---Info Window---
* @type number
* @min 1
* @desc Font size used for levels if levels are displayed.
* Default: 28
* @default 20
*
* @param Level Format
* @text 等级格式
* @parent ---Info Window---
* @desc The text format used to display levels.
* %1 - Lv (Abbr) %2 - Lv (Full) %3 - Value
* @default \c[16]%1 \c[0]%3
*
* @param Data Font Size
* @text 数据字体大小
* @parent ---Info Window---
* @type number
* @min 1
* @desc Font size used for displaying data.
* Default: 28
* @default 20
*
* @param Data Column 1
* @text 数据列1
* @parent ---Info Window---
* @desc The data to be displayed in data column 1. Refer to help
* file for data entries. Separate each entry with commas.
* @default empty, playtime, save count, gold count
*
* @param Data Column 2
* @text 数据列2
* @parent ---Info Window---
* @desc The data to be displayed in data column 2. Refer to help
* file for data entries. Separate each entry with commas.
* @default location, variable 1, variable 2, variable 3
*
* @param Data Column 3
* @text 数据列3
* @parent ---Info Window---
* @desc The data to be displayed in data column 2. Refer to help
* file for data entries. Separate each entry with commas.
* @default empty, variable 4, variable 5, variable 6
*
* @param Data Column 4
* @text 数据列4
* @parent ---Info Window---
* @desc The data to be displayed in data column 2. Refer to help
* file for data entries. Separate each entry with commas.
* @default
*
* @param ---Vocabulary---
* @text ---词汇---
* @default
*
* @param Map Location
* @text 地图位置
* @parent ---Vocabulary---
* @desc Text used to categorize 'Map Location'.
* Leave empty to not use this category and center the data.
* @default
*
* @param Playtime
* @text 游戏时间
* @parent ---Vocabulary---
* @desc Text used to categorize 'Playtime'.
* Leave empty to not use this category and center the data.
* @default 游戏时间:
*
* @param Save Count
* @text 保存次数
* @parent ---Vocabulary---
* @desc Text used to categorize 'Save Count'.
* Leave empty to not use this category and center the data.
* @default 保存次数:
*
* @param Gold Count
* @text 金币数量
* @parent ---Vocabulary---
* @desc Text used to categorize 'Gold Count'.
* Leave empty to not use this category and center the data.
* @default %1:
*
* @param ---Technical---
* @text ---技术---
* @default
*
* @param Save Mode
* @text 保存模式
* @parent ---Technical---
* @type combo
* @option local
* @option web
* @option auto
* @desc How the save system should work for your game:
* local web auto
* @default auto
*
* @param Local Config
* @text 本地配置
* @parent ---Technical---
* @desc Filename for config when working with local saves.
* Default: config.rpgsave
* @default config.rpgsave
*
* @param Local Global
* @text 本地全局
* @parent ---Technical---
* @desc Filename for global when working with local saves.
* Default: global.rpgsave
* @default global.rpgsave
*
* @param Local Save
* @text 本地保存
* @parent ---Technical---
* @desc Filename for game saves when working with local saves.
* %1 - File Slot. Default: config.rpgsave
* @default file%1.rpgsave
*
* @param Web Config
* @text Web配置
* @parent ---Technical---
* @desc Filename for config when working with web saves.
* %1 - Game Name. Default: RPG Config
* @default RPG %1 Config
*
* @param Web Global
* @text Web全局
* @parent ---Technical---
* @desc Filename for global when working with web saves.
* %1 - Game Name. Default: RPG Global
* @default RPG %1 Global
*
* @param Web Save
* @text Web保存
* @parent ---Technical---
* @desc Filename for game saves when working with web saves.
* %1 - Game Name. %2 - File Slot. Default: RPG File%1
* @default RPG %1 File%2
*
* @param ---Confirmation---
* @text ---确认---
* @default
*
* @param Load Confirmation
* @text 加载确认
* @parent ---Confirmation---
* @type boolean
* @on YES
* @off NO
* @desc Show the load confirmation window when loading a
* save file? NO - false YES - true
* @default true
*
* @param Load Text
* @text 加载文本
* @parent ---Confirmation---
* @desc Text displayed when loading a save file.
* @default 是否要加载此保存文件?
*
* @param Save Confirmation
* @text 保存确认
* @parent ---Confirmation---
* @type boolean
* @on YES
* @off NO
* @desc Show the save confirmation window when overwriting a
* save file? NO - false YES - true
* @default true
*
* @param Save Text
* @text 保存文本
* @parent ---Confirmation---
* @desc Text displayed when overwriting a save file.
* @default 是否覆盖此保存文件?
*
* @param Delete Confirmation
* @text 删除确认
* @parent ---Confirmation---
* @type boolean
* @on YES
* @off NO
* @desc Show the save confirmation window when deleting a
* save file? NO - false YES - true
* @default true
*
* @param Delete Text
* @text 删除文本
* @parent ---Confirmation---
* @desc Text displayed when deleting a save file.
* @default 是否删除此保存文件?
*
* @param Confirm Yes
* @text 确认是
* @parent ---Confirmation---
* @desc Text used for the 'Yes' confirm command
* @default 是
*
* @param Confirm No
* @text 确认否
* @parent ---Confirmation---
* @desc Text used for the 'No' confirm command
* @default 否
*
* @help
* ============================================================================
* Introduction
* ============================================================================
*
* 注意这个插件只支持1.1.0以上的版本
* 这个插件提供了一个新的存档界面。通过这个新的界面,玩家可以直接从菜单
* 载入或者删除存档,这也将导致存档命令一直显示在之菜单,但是我们可以
* 关闭或者开启存档选项。从这个界面,玩家可以获得存档的各类信息,
* 例如位置,金钱树,或者任何你想展示的变量。
*
* ============================================================================
* Instructions - Data Columns
* ============================================================================
*
* 对于那些想在每个存档显示额外信息的人你可以添加插件参数里面的Data
* Columns用逗号隔开。你可以使用下面的标签
*
* Data Column Categories:
*
* Empty
* - 显示一个空位置,但是没有外框
*
* Null
* - 显示一个空位置,但是有外框
*
* Location
* - 地图坐标
*
* Playtime
* - 游戏时间
*
* Save Count
* - 存档数
*
* Gold Count
* - 金钱数
*
* Variable x
* -显示变量的名字和值。你可以使用文本代码。任何在<< >>里面的都不会
* 被显示。如果没有变量名,变量的值就会居中
*
* text: stuff
* left text: stuff
* center text: stuff
* right text: stuff
* -这将显示自定义文本。可以设置显示位置,默认是居左对齐。
*
* ============================================================================
* Technical - Save Modes
* ============================================================================
*
* 对于想要在网上发布游戏的开发者你可以看一看Technical里的参数。你可以
* 设置游戏模式,是“本地”,还是“网站”。默认你可以设置为“自动”。
* 如果是为了测试目的你可以在本地运行时设置web模式。
* 如果游戏运行在网站上,你不可以使用本地模式。
*
* ============================================================================
* Technical - Save Files
* ============================================================================
*
* 如果你有经验,你可以根据喜好设置'Local Config', 'Local Global', 和 'Local
* Save'的名字
*
* ---
*
* 如果你正在做网站包括移动端的游戏,我建议你看下'Web Config', 'Web Global'
* 和'Web Save'的参数。所以运行在网站上的游戏都会使用相同的设置。
*
* This plugin's default settings will solve this sharing issue by making the
* web save named accordingly to your game's name provided that you keep the
* current plugin settings as is or adjust it accordingly. Now, your game will
* have its own individual identity, use its own configuration, global, and
* save files without clashing with any other RPG Maker MV games players may
* have played.这个插件默认设置解决了网站游戏存档奔溃的一些问题
*
* ============================================================================
* Changelog
* ============================================================================
*
* Version 1.06:
* - Updated for RPG Maker MV version 1.5.0.
*
* Version 1.05:
* - Added anti-crash measure for nonexistent $dataMapInfos entries.
*
* Version 1.04:
* - Added 'Map Display Name' plugin parameter. Enabling this option will now
* display the display name for the map instead of the editor name.
*
* Version 1.03:
* - Fixed a bug that caused web saving to not work properly.
*
* Version 1.02:
* - Fixed a bug that caused the actor's default name to appear in the save
* screen instead of the actor's current name (if it was changed.)
*
* Version 1.01:
* - Added a wait time update for save info data to load when moving across the
* various save files.
*
* Version 1.00:
* - Finished Plugin!
*/
//=============================================================================
//=============================================================================
// Parameter Variables
//=============================================================================
Yanfly.Parameters = PluginManager.parameters("YEP_SaveCore");
Yanfly.Param = Yanfly.Param || {};
Yanfly.Param.SaveMaxFiles = Number(Yanfly.Parameters["Max Files"]);
Yanfly.Param.SaveIconSaved = Number(Yanfly.Parameters["Saved Icon"]);
Yanfly.Param.SaveIconEmpty = Number(Yanfly.Parameters["Empty Icon"]);
Yanfly.Param.SavePop = eval(String(Yanfly.Parameters["Return After Saving"]));
Yanfly.Param.SaveAutoIndex = eval(String(Yanfly.Parameters["Auto New Index"]));
Yanfly.Param.SaveCmdLoad = String(Yanfly.Parameters["Load Command"]);
Yanfly.Param.SaveCmdSave = String(Yanfly.Parameters["Save Command"]);
Yanfly.Param.SaveCmdDelete = String(Yanfly.Parameters["Delete Command"]);
Yanfly.Param.SaveHelpSelect = String(Yanfly.Parameters["Select Help"]);
Yanfly.Param.SaveLoadSelect = String(Yanfly.Parameters["Load Help"]);
Yanfly.Param.SaveSaveSelect = String(Yanfly.Parameters["Save Help"]);
Yanfly.Param.SaveDeleteSelect = String(Yanfly.Parameters["Delete Help"]);
Yanfly.Param.SaveDeleteSound = {
name: String(Yanfly.Parameters["Delete Filename"]),
volume: Number(Yanfly.Parameters["Delete Volume"]),
pitch: Number(Yanfly.Parameters["Delete Pitch"]),
pan: Number(Yanfly.Parameters["Delete Pan"]),
};
Yanfly.Param.SaveInfoTitle = String(Yanfly.Parameters["Show Game Title"]);
Yanfly.Param.SaveInfoTitle = eval(Yanfly.Param.SaveInfoTitle);
Yanfly.Param.SaveInfoInvalid = String(Yanfly.Parameters["Invalid Game Text"]);
Yanfly.Param.SaveInfoEmpty = String(Yanfly.Parameters["Empty Game Text"]);
Yanfly.Param.SaveMapDisplayName = String(Yanfly.Parameters["Map Display Name"]);
Yanfly.Param.SaveMapDisplayName = eval(Yanfly.Param.SaveMapDisplayName);
Yanfly.Param.SaveInfoPartyType = Number(Yanfly.Parameters["Party Display"]);
Yanfly.Param.SaveInfoPartyType = Yanfly.Param.SaveInfoPartyType.clamp(0, 3);
Yanfly.Param.SaveInfoPartyY = String(Yanfly.Parameters["Party Y Position"]);
Yanfly.Param.SaveInfoActorName = String(Yanfly.Parameters["Show Actor Names"]);
Yanfly.Param.SaveInfoActorName = eval(Yanfly.Param.SaveInfoActorName);
Yanfly.Param.SaveInfoActorNameSz = Number(Yanfly.Parameters["Name Font Size"]);
Yanfly.Param.SaveInfoActorLv = String(Yanfly.Parameters["Show Actor Level"]);
Yanfly.Param.SaveInfoActorLv = eval(Yanfly.Param.SaveInfoActorLv);
Yanfly.Param.SaveInfoActorLvSz = Number(Yanfly.Parameters["Level Font Size"]);
Yanfly.Param.SaveInfoActorLvFmt = String(Yanfly.Parameters["Level Format"]);
Yanfly.Param.SaveInfoDataSz = Number(Yanfly.Parameters["Data Font Size"]);
Yanfly.Param.SaveInfoDataCol1 = String(Yanfly.Parameters["Data Column 1"]);
Yanfly.Param.SaveInfoDataCol1 = Yanfly.Param.SaveInfoDataCol1.split(",");
Yanfly.Param.SaveInfoDataCol2 = String(Yanfly.Parameters["Data Column 2"]);
Yanfly.Param.SaveInfoDataCol2 = Yanfly.Param.SaveInfoDataCol2.split(",");
Yanfly.Param.SaveInfoDataCol3 = String(Yanfly.Parameters["Data Column 3"]);
Yanfly.Param.SaveInfoDataCol3 = Yanfly.Param.SaveInfoDataCol3.split(",");
Yanfly.Param.SaveInfoDataCol4 = String(Yanfly.Parameters["Data Column 4"]);
Yanfly.Param.SaveInfoDataCol4 = Yanfly.Param.SaveInfoDataCol4.split(",");
Yanfly.trimSaveDataColumns = function (array) {
var length = array.length;
for (var i = 0; i < length; ++i) {
array[i] = array[i].trim();
}
if (length === 1 && array[0] === "") array.splice(0);
};
Yanfly.trimSaveDataColumns(Yanfly.Param.SaveInfoDataCol1);
Yanfly.trimSaveDataColumns(Yanfly.Param.SaveInfoDataCol2);
Yanfly.trimSaveDataColumns(Yanfly.Param.SaveInfoDataCol3);
Yanfly.trimSaveDataColumns(Yanfly.Param.SaveInfoDataCol4);
Yanfly.Param.SaveVocabLocation = String(Yanfly.Parameters["Map Location"]);
Yanfly.Param.SaveVocabPlaytime = String(Yanfly.Parameters["Playtime"]);
Yanfly.Param.SaveVocabSaveCount = String(Yanfly.Parameters["Save Count"]);
Yanfly.Param.SaveVocabGoldCount = String(Yanfly.Parameters["Gold Count"]);
Yanfly.Param.SaveTechSaveMode = String(Yanfly.Parameters["Save Mode"]).trim();
Yanfly.Param.SaveTechSaveMode = Yanfly.Param.SaveTechSaveMode.toLowerCase();
Yanfly.Param.SaveTechLocalConfig = String(Yanfly.Parameters["Local Config"]);
Yanfly.Param.SaveTechLocalGlobal = String(Yanfly.Parameters["Local Global"]);
Yanfly.Param.SaveTechLocalSave = String(Yanfly.Parameters["Local Save"]);
Yanfly.Param.SaveTechWebConfig = String(Yanfly.Parameters["Web Config"]);
Yanfly.Param.SaveTechWebGlobal = String(Yanfly.Parameters["Web Global"]);
Yanfly.Param.SaveTechWebSave = String(Yanfly.Parameters["Web Save"]);
Yanfly.Param.SaveConfirmLoad = String(Yanfly.Parameters["Load Confirmation"]);
Yanfly.Param.SaveConfirmLoad = eval(Yanfly.Param.SaveConfirmLoad);
Yanfly.Param.SaveConfirmLoadTx = String(Yanfly.Parameters["Load Text"]);
Yanfly.Param.SaveConfirmSave = String(Yanfly.Parameters["Save Confirmation"]);
Yanfly.Param.SaveConfirmSave = eval(Yanfly.Param.SaveConfirmSave);
Yanfly.Param.SaveConfirmSaveTx = String(Yanfly.Parameters["Save Text"]);
Yanfly.Param.SaveConfirmDel = String(Yanfly.Parameters["Delete Confirmation"]);
Yanfly.Param.SaveConfirmDel = eval(Yanfly.Param.SaveConfirmDel);
Yanfly.Param.SaveConfirmDelTx = String(Yanfly.Parameters["Delete Text"]);
Yanfly.Param.SaveConfirmYes = String(Yanfly.Parameters["Confirm Yes"]);
Yanfly.Param.SaveConfirmNo = String(Yanfly.Parameters["Confirm No"]);
//=============================================================================
// DataManager
//=============================================================================
DataManager.maxSavefiles = function () {
return Yanfly.Param.SaveMaxFiles;
};
Yanfly.Save.DataManager_selectSavefileForNewGame = DataManager.selectSavefileForNewGame;
DataManager.selectSavefileForNewGame = function () {
Yanfly.Save.DataManager_selectSavefileForNewGame.call(this);
if (Yanfly.Param.SaveAutoIndex) return;
this._lastAccessedId = 1;
};
Yanfly.Save.DataManager_makeSaveContents = DataManager.makeSaveContents;
DataManager.makeSaveContents = function () {
var contents = Yanfly.Save.DataManager_makeSaveContents.call(this);
contents.map.locationDisplayName = $dataMap.displayName;
return contents;
};
//=============================================================================
// StorageManager
//=============================================================================
Yanfly.Save.StorageManager_isLocalMode = StorageManager.isLocalMode;
StorageManager.isLocalMode = function () {
if (Yanfly.Param.SaveTechSaveMode === "local") {
if (!Utils.isNwjs()) return false;
return true;
} else if (Yanfly.Param.SaveTechSaveMode === "web") {
return false;
} else {
return Yanfly.Save.StorageManager_isLocalMode.call(this);
}
};
StorageManager.localFilePath = function (savefileId) {
var name;
if (savefileId < 0) {
name = Yanfly.Param.SaveTechLocalConfig;
} else if (savefileId === 0) {
name = Yanfly.Param.SaveTechLocalGlobal;
} else {
name = Yanfly.Param.SaveTechLocalSave.format(savefileId);
}
return this.localFileDirectoryPath() + name;
};
Yanfly.Save.StorageManager_webStorageKey = StorageManager.webStorageKey;
StorageManager.webStorageKey = function (savefileId) {
if (!$dataSystem) return Yanfly.Save.StorageManager_webStorageKey.call(this);
var title = $dataSystem.gameTitle;
this.loadConfig();
if (savefileId < 0) {
return Yanfly.Param.SaveTechWebConfig.format(title);
} else if (savefileId === 0) {
return Yanfly.Param.SaveTechWebGlobal.format(title);
} else {
return Yanfly.Param.SaveTechWebSave.format(title, savefileId);
}
};
StorageManager.loadConfig = function () {
if (this._configLoaded) return;
this._configLoaded = true;
ConfigManager.load();
};
//=============================================================================
// BattleManager
//=============================================================================
Yanfly.Save.BattleManager_setBattleTest = BattleManager.setBattleTest;
BattleManager.setBattleTest = function (battleTest) {
Yanfly.Save.BattleManager_setBattleTest.call(this, battleTest);
if (battleTest) StorageManager.loadConfig();
};
//=============================================================================
// Window_Base
//=============================================================================
Window_Base.prototype.drawSvActor = function (actor, x, y) {
var filename = actor.battlerName();
var bitmap = ImageManager.loadSvActor(filename);
var pw = bitmap.width / 9;
var ph = bitmap.height / 6;
var sx = 0;
var sy = 0;
this.contents.blt(bitmap, sx, sy, pw, ph, x - pw / 2, y - ph);
};
Window_Base.prototype.textWidthEx = function (text) {
return this.drawTextEx(text, 0, this.contents.height);
};
//=============================================================================
// Window_MenuCommand
//=============================================================================
Window_MenuCommand.prototype.isSaveEnabled = function () {
if (DataManager.isEventTest()) return false;
return true;
};
//=============================================================================
// Window_SavefileList
//=============================================================================
Window_SavefileList.prototype.itemHeight = function () {
return this.lineHeight();
};
Window_SavefileList.prototype.drawItem = function (index) {
var id = index + 1;
var valid = DataManager.isThisGameFile(id);
var rect = this.itemRect(index);
this.resetTextColor();
//if (this._mode === 'load') this.changePaintOpacity(valid);
this.changePaintOpacity(valid);
var icon = valid ? Yanfly.Param.SaveIconSaved : Yanfly.Param.SaveIconEmpty;
this.drawIcon(icon, rect.x + 2, rect.y + 2);
this.drawFileId(id, rect.x + Window_Base._iconWidth + 4, rect.y);
};
Window_SavefileList.prototype.playOkSound = function () {
Window_Selectable.prototype.playOkSound.call(this);
};
//=============================================================================
// Window_SaveAction
//=============================================================================
function Window_SaveAction() {
this.initialize.apply(this, arguments);
}
Window_SaveAction.prototype = Object.create(Window_HorzCommand.prototype);
Window_SaveAction.prototype.constructor = Window_SaveAction;
Window_SaveAction.prototype.initialize = function (x, y, mode) {
this._width = Graphics.boxWidth - x;
this._currentFile = 0;
this._mode = mode;
Window_HorzCommand.prototype.initialize.call(this, x, y);
this.deactivate();
this.deselect();
};
Window_SaveAction.prototype.windowWidth = function () {
return this._width;
};
Window_SaveAction.prototype.maxCols = function () {
return 3;
};
Window_SaveAction.prototype.savefileId = function () {
return SceneManager._scene._listWindow.index() + 1;
};
Window_SaveAction.prototype.makeCommandList = function () {
var id = this.savefileId();
var enabled = DataManager.isThisGameFile(id);
var valid = DataManager.loadSavefileInfo(id);
this.addCommand(this.getCommandName("load"), "load", valid);
this.addCommand(this.getCommandName("save"), "save", this.isSaveEnabled());
this.addCommand(this.getCommandName("delete"), "delete", enabled);
};
Window_SaveAction.prototype.getCommandName = function (type) {
if (type === "load") {
return Yanfly.Param.SaveCmdLoad;
} else if (type === "save") {
return Yanfly.Param.SaveCmdSave;
} else {
return Yanfly.Param.SaveCmdDelete;
}
};
Window_SaveAction.prototype.isSaveEnabled = function () {
if (this._mode !== "save") return false;
return $gameSystem.isSaveEnabled();
};
Window_SaveAction.prototype.update = function () {
Window_HorzCommand.prototype.update.call(this);
if (this.savefileId() !== this._currentFile) this.updateIndex();
};
Window_SaveAction.prototype.updateIndex = function () {
this._currentFile = this.savefileId();
this.refresh();
};
Window_SaveAction.prototype.playOkSound = function () {};
Window_SaveAction.prototype.updateHelp = function () {
var text = "";
if (this.currentSymbol() === "load") {
text = Yanfly.Param.SaveLoadSelect;
} else if (this.currentSymbol() === "save") {
text = Yanfly.Param.SaveSaveSelect;
} else if (this.currentSymbol() === "delete") {
text = Yanfly.Param.SaveDeleteSelect;
}
this._helpWindow.setText(text);
};
//=============================================================================
// Window_SaveInfo
//=============================================================================
function Window_SaveInfo() {
this.initialize.apply(this, arguments);
}
Window_SaveInfo.prototype = Object.create(Window_Base.prototype);
Window_SaveInfo.prototype.constructor = Window_SaveInfo;
Window_SaveInfo.prototype.initialize = function (x, y, width, height, mode) {
this._currentFile = 0;
this._waitTime = 0;
this._mode = mode;
Window_Base.prototype.initialize.call(this, x, y, width, height);
};
Window_SaveInfo.prototype.resetFontSettings = function () {
Window_Base.prototype.resetFontSettings.call(this);
if (this._drawLevel) this.contents.fontSize = Yanfly.Param.SaveInfoActorLvSz;
if (this._drawData) this.contents.fontSize = Yanfly.Param.SaveInfoDataSz;
};
Window_SaveInfo.prototype.savefileId = function () {
return SceneManager._scene._listWindow.index() + 1;
};
Window_SaveInfo.prototype.drawDarkRect = function (dx, dy, dw, dh) {
var color = this.gaugeBackColor();
this.changePaintOpacity(false);
this.contents.fillRect(dx + 1, dy + 1, dw - 2, dh - 2, color);
this.changePaintOpacity(true);
};
Window_SaveInfo.prototype.update = function () {
Window_Base.prototype.update.call(this);
if (this.savefileId() !== this._currentFile) this.updateIndex();
if (this._waitTime > 0) this.updateTimer();
};
Window_SaveInfo.prototype.systemColorEx = function () {
if (Imported.YEP_CoreEngine) {
return "\\c[" + Yanfly.Param.ColorSystem + "]";
} else {
return "\\c[16]";
}
};
Window_SaveInfo.prototype.updateIndex = function () {
var id = this.savefileId();
this._currentFile = id;
this._waitTime = 30;
this.contents.clear();
};
Window_SaveInfo.prototype.updateTimer = function () {
this._waitTime -= 1;
if (this._waitTime > 0) return;
var id = this.savefileId();
this._valid = DataManager.isThisGameFile(id);
this._info = DataManager.loadSavefileInfo(id);
this.refresh();
};
Window_SaveInfo.prototype.refresh = function () {
this.contents.clear();
this.resetFontSettings();
var dy = 0;
dy = this.drawGameTitle(dy);
if (!this._valid) return this.drawInvalidText(dy);
this._saveContents = StorageManager.load(this.savefileId());
this.drawContents(dy);
};
Window_SaveInfo.prototype.drawGameTitle = function (dy) {
if (!Yanfly.Param.SaveInfoTitle) return dy;
if (!this._info) return dy;
if (!this._info.title) return dy;
this.resetFontSettings();
var text = this._info.title;
this.drawText(text, 0, dy, this.contents.width, "center");
return dy + this.lineHeight();
};
Window_SaveInfo.prototype.drawInvalidText = function (dy) {
this.drawDarkRect(0, dy, this.contents.width, this.contents.height - dy);
dy = (this.contents.height - dy - this.lineHeight()) / 2;
if (this._info) {
var text = Yanfly.Param.SaveInfoInvalid;
} else {
var text = Yanfly.Param.SaveInfoEmpty;
}
this.changeTextColor(this.systemColor());
this.drawText(text, 0, dy, this.contents.width, "center");
};
Window_SaveInfo.prototype.drawContents = function (dy) {
if (!this._saveContents) {
return setTimeout(this.drawContents.bind(this, dy), 50);
}
this._saveContents = JsonEx.parse(this._saveContents);
dy = this.drawPartyGraphics(dy);
dy = this.drawPartyNames(dy);
dy = this.drawPartyLevels(dy);
this.drawColumnData(dy);
};
Window_SaveInfo.prototype.drawPartyGraphics = function (dy) {
if (Yanfly.Param.SaveInfoPartyType === 0) return dy;
dy = eval(Yanfly.Param.SaveInfoPartyY);
var length = this._saveContents.party.maxBattleMembers();
var dw = this.contents.width / length;
dw = Math.floor(dw);
var dx = Math.floor(dw / 2);
for (var i = 0; i < length; ++i) {
var actorId = this._saveContents.party._actors[i];
var member = this._saveContents.actors._data[actorId];
if (member) {
if (Yanfly.Param.SaveInfoPartyType === 1) {
var name = member.characterName();
var index = member.characterIndex();
this.drawCharacter(name, index, dx, dy);
} else if (Yanfly.Param.SaveInfoPartyType === 2) {
var fh = Window_Base._faceHeight;
var fw = Window_Base._faceWidth;
var fx = dx - Math.floor(Math.min(fh, dw) / 2);
var dif = Math.floor(Math.max(0, dw - fw) / 2);
var name = member.faceName();
var index = member.faceIndex();
this.drawFace(name, index, fx - dif, dy - fh, dw, fh);
} else if (Yanfly.Param.SaveInfoPartyType === 3) {
this.drawSvActor(member, dx, dy);
}
}
dx += dw;
}
return dy;
};
Window_SaveInfo.prototype.drawCharacter = function (name, index, x, y) {
var bitmap = ImageManager.loadCharacter(name);
if (bitmap.width <= 0) {
return setTimeout(this.drawCharacter.bind(this, name, index, x, y), 50);
}
Window_Base.prototype.drawCharacter.call(this, name, index, x, y);
};
Window_SaveInfo.prototype.drawFace = function (name, index, x, y, w, h) {
var bitmap = ImageManager.loadFace(name);
if (bitmap.width <= 0) {
return setTimeout(this.drawFace.bind(this, name, index, x, y, w, h), 50);
}
Window_Base.prototype.drawFace.call(this, name, index, x, y, w, h);
};
Window_SaveInfo.prototype.drawSvActor = function (actor, x, y) {
var filename = actor.battlerName();
var bitmap = ImageManager.loadSvActor(filename);
if (bitmap.width <= 0) {
return setTimeout(this.drawSvActor.bind(this, actor, x, y), 50);
}
Window_Base.prototype.drawSvActor.call(this, actor, x, y);
};
Window_SaveInfo.prototype.drawPartyNames = function (dy) {
if (!Yanfly.Param.SaveInfoActorName) return dy;
this.resetFontSettings();
this.contents.fontSize = Yanfly.Param.SaveInfoActorNameSz;
var length = this._saveContents.party.maxBattleMembers();
var dw = this.contents.width / length;
dw = Math.floor(dw);
var dx = 0;
for (var i = 0; i < length; ++i) {
var actorId = this._saveContents.party._actors[i];
var member = this._saveContents.actors._data[actorId];
if (member) {
var name = member._name;
this.drawText(name, dx, dy, dw, "center");
}
dx += dw;
}
return (dy += this.lineHeight());
};
Window_SaveInfo.prototype.drawPartyLevels = function (dy) {
if (!Yanfly.Param.SaveInfoActorLv) return dy;
this._drawLevel = true;
var length = this._saveContents.party.maxBattleMembers();
var dw = this.contents.width / length;
dw = Math.floor(dw);
var dx = 0;
var fmt = Yanfly.Param.SaveInfoActorLvFmt;
for (var i = 0; i < length; ++i) {
var actorId = this._saveContents.party._actors[i];
var member = this._saveContents.actors._data[actorId];
if (member) {
var lv = Yanfly.Util.toGroup(member.level);
var text = fmt.format(TextManager.levelA, TextManager.level, lv);
var tw = this.textWidthEx(text);
var dif = Math.floor(Math.max(0, dw - tw) / 2);
this.drawTextEx(text, dx + dif, dy);
}
dx += dw;
}
this._drawLevel = false;
return (dy += this.lineHeight());
};
Window_SaveInfo.prototype.drawColumnData = function (dy) {
var totalColumns = 0;
var drawnArrays = [];
if (Yanfly.Param.SaveInfoDataCol1.length > 0) {
totalColumns += 1;
drawnArrays.push(Yanfly.Param.SaveInfoDataCol1);
}
if (Yanfly.Param.SaveInfoDataCol2.length > 0) {
totalColumns += 1;
drawnArrays.push(Yanfly.Param.SaveInfoDataCol2);
}
if (Yanfly.Param.SaveInfoDataCol3.length > 0) {
totalColumns += 1;
drawnArrays.push(Yanfly.Param.SaveInfoDataCol3);
}
if (Yanfly.Param.SaveInfoDataCol4.length > 0) {
totalColumns += 1;
drawnArrays.push(Yanfly.Param.SaveInfoDataCol4);
}
if (totalColumns <= 0) return;
var dw = Math.floor(this.contents.width / totalColumns);
var dif = totalColumns > 1 ? this.textPadding() : 0;
for (var i = 0; i < totalColumns; ++i) {
var column = drawnArrays[i];
var dx = i * dw;
this.drawColumn(column, dx, dy, dw - dif);
}
};
Window_SaveInfo.prototype.drawColumn = function (column, dx, dy, dw) {
var length = column.length;
var tp = this.textPadding();
for (var i = 0; i < length; ++i) {
this.resetFontSettings();
this.contents.fontSize = Yanfly.Param.SaveInfoDataSz;
var data = column[i];
if (data.toUpperCase().trim() !== "EMPTY") {
this.drawDarkRect(dx, dy, dw, this.lineHeight());
this.drawData(data, dx + tp, dy, dw - tp * 2);
}
dy += this.lineHeight();
}
};
Window_SaveInfo.prototype.drawData = function (data, dx, dy, dw) {
if (data.toUpperCase().trim() === "NULL") {
return;
} else if (data.toUpperCase().trim() === "LOCATION") {
this.drawLocation(dx, dy, dw);
} else if (data.toUpperCase().trim() === "PLAYTIME") {
this.drawPlaytime(dx, dy, dw);
} else if (data.toUpperCase().trim() === "SAVE COUNT") {
this.drawSaveCount(dx, dy, dw);
} else if (data.toUpperCase().trim() === "GOLD COUNT") {
this.drawGoldCount(dx, dy, dw);
} else if (data.match(/VARIABLE[ ](\d+)/i)) {
this.drawVariable(parseInt(RegExp.$1), dx, dy, dw);
} else if (data.match(/(.*)[ ]TEXT:(.*)/i)) {
this.drawDataText(String(RegExp.$1), String(RegExp.$2), dx, dy, dw);
} else if (data.match(/TEXT:(.*)/i)) {
this.drawDataText("left", String(RegExp.$1), dx, dy, dw);
}
};
Window_SaveInfo.prototype.drawLocation = function (dx, dy, dw) {
var id = this._saveContents.map._mapId;
if (Yanfly.Param.SaveMapDisplayName) {
var text = this._saveContents.map.locationDisplayName || "";
if (text.length <= 0 && $dataMapInfos[id]) text = $dataMapInfos[id].name;
} else if ($dataMapInfos[id]) {
var text = $dataMapInfos[id].name;
} else {
var text = "";
}
if (Yanfly.Param.SaveVocabLocation.length > 0) {
this.changeTextColor(this.systemColor());
this.drawText(Yanfly.Param.SaveVocabLocation, dx, dy, dw, "left");
this.changeTextColor(this.normalColor());
this.drawText(text, dx, dy, dw, "right");
} else {
this.drawText(text, dx, dy, dw, "center");
}
};
Window_SaveInfo.prototype.drawPlaytime = function (dx, dy, dw) {
if (!this._info.playtime) return;
var text = this._info.playtime;
if (Yanfly.Param.SaveVocabPlaytime.length > 0) {
this.changeTextColor(this.systemColor());
this.drawText(Yanfly.Param.SaveVocabPlaytime, dx, dy, dw, "left");
this.changeTextColor(this.normalColor());
this.drawText(text, dx, dy, dw, "right");
} else {
this.drawText(text, dx, dy, dw, "center");
}
};
Window_SaveInfo.prototype.drawSaveCount = function (dx, dy, dw) {
var text = Yanfly.Util.toGroup(this._saveContents.system._saveCount);
if (Yanfly.Param.SaveVocabSaveCount.length > 0) {
this.changeTextColor(this.systemColor());
this.drawText(Yanfly.Param.SaveVocabSaveCount, dx, dy, dw, "left");
this.changeTextColor(this.normalColor());
this.drawText(text, dx, dy, dw, "right");
} else {
this.drawText(text, dx, dy, dw, "center");
}
};
Window_SaveInfo.prototype.drawGoldCount = function (dx, dy, dw) {
var text = Yanfly.Util.toGroup(this._saveContents.party._gold);
if (Yanfly.Param.SaveVocabGoldCount.length > 0) {
this.changeTextColor(this.systemColor());
var fmt = Yanfly.Param.SaveVocabGoldCount;
this.drawText(fmt.format(TextManager.currencyUnit), dx, dy, dw, "left");
this.changeTextColor(this.normalColor());
this.drawText(text, dx, dy, dw, "right");
} else {
var fmt = "\\c[0]%1" + this.systemColorEx() + "%2";
var ftext = fmt.format(text, TextManager.currencyUnit);
this._drawData = true;
var fw = this.textWidthEx(ftext);
dx += Math.max(0, Math.floor((dw - fw) / 2));
this.drawTextEx(ftext, dx, dy);
this._drawData = false;
}
};
Window_SaveInfo.prototype.drawVariable = function (id, dx, dy, dw) {
var varName = $dataSystem.variables[id];
varName = varName.replace(/<<(.*?)>>/i, "");
var text = Yanfly.Util.toGroup(this._saveContents.variables.value(id));
var diff = Math.max(0, (this.standardFontSize() - this.contents.fontSize) / 2);
if (varName.length > 0) {
this._drawData = true;
this.changeTextColor(this.systemColor());
dy += diff;
this.drawTextEx(this.systemColorEx() + varName, dx, dy, dw, "left");
dy -= diff;
this.changeTextColor(this.normalColor());
this._drawData = false;
this.drawText(text, dx, dy, dw, "right");
} else {
this.drawText(text, dx, dy, dw, "center");
}
};
Window_SaveInfo.prototype.drawDataText = function (align, text, dx, dy, dw) {
this._drawData = true;
dy += Math.max(0, (this.standardFontSize() - this.contents.fontSize) / 2);
var align = align.toLowerCase().trim();
var text = text.trim();
if (align === "left") {
this.drawTextEx(text, dx, dy);
} else if (align === "right") {
var tw = this.textWidthEx(text);
this.drawTextEx(text, dx + dw - tw, dy);
} else {
var tw = this.textWidthEx(text);
this.drawTextEx(text, dx + (dw - tw) / 2, dy);
}
this._drawData = false;
};
//=============================================================================
// Window_SaveConfirm
//=============================================================================
function Window_SaveConfirm() {
this.initialize.apply(this, arguments);
}
Window_SaveConfirm.prototype = Object.create(Window_Command.prototype);
Window_SaveConfirm.prototype.constructor = Window_SaveConfirm;
Window_SaveConfirm.prototype.initialize = function () {
Window_Command.prototype.initialize.call(this, 0, 0);
this.openness = 0;
};
Window_SaveConfirm.prototype.makeCommandList = function () {
this.addCommand(Yanfly.Param.SaveConfirmYes, "confirm");
this.addCommand(Yanfly.Param.SaveConfirmNo, "cancel");
};
Window_SaveConfirm.prototype.setData = function (text) {
this._text = text;
var ww = this.textWidthEx(this._text) + this.standardPadding() * 2;
ww += this.textPadding() * 2;
this.width = ww;
this.refresh();
this.x = (Graphics.boxWidth - this.width) / 2;
this.y = (Graphics.boxHeight - this.height) / 2;
this.drawTextEx(this._text, this.textPadding(), 0);
};
Window_SaveConfirm.prototype.itemTextAlign = function () {
return "center";
};
Window_SaveConfirm.prototype.windowHeight = function () {
return this.fittingHeight(3);
};
Window_SaveConfirm.prototype.itemRect = function (index) {
var rect = Window_Selectable.prototype.itemRect.call(this, index);
rect.y += this.lineHeight();
return rect;
};
//=============================================================================
// Scene_File
//=============================================================================
Scene_File.prototype.terminate = function () {
Scene_MenuBase.prototype.terminate.call(this);
if (this._loadSuccess) $gameSystem.onAfterLoad();
};
Scene_Load.prototype.terminate = function () {
Scene_File.prototype.terminate.call(this);
};
Scene_File.prototype.create = function () {
Scene_MenuBase.prototype.create.call(this);
DataManager.loadAllSavefileImages();
this.createHelpWindow();
this.createListWindow();
this.createActionWindow();
this.createInfoWindow();
this.createConfirmWindow();
};
Scene_File.prototype.createHelpWindow = function () {
this._helpWindow = new Window_Help(2);
this._helpWindow.setText(Yanfly.Param.SaveHelpSelect);
this.addWindow(this._helpWindow);
};
Scene_File.prototype.createListWindow = function () {
var x = 0;
var y = this._helpWindow.height;
var width = 240;
var height = Graphics.boxHeight - y;
this._listWindow = new Window_SavefileList(x, y, width, height);
this.addWindow(this._listWindow);
this._listWindow.setHandler("ok", this.onSavefileOk.bind(this));
this._listWindow.setHandler("cancel", this.popScene.bind(this));
this._listWindow.select(this.firstSavefileIndex());
this._listWindow.setTopRow(this.firstSavefileIndex() - 2);
this._listWindow.setMode(this.mode());
this._listWindow.refresh();
};
Scene_File.prototype.createActionWindow = function () {
var x = this._listWindow.width;
var y = this._listWindow.y;
this._actionWindow = new Window_SaveAction(x, y, this.mode());
this.addWindow(this._actionWindow);
this._actionWindow.setHelpWindow(this._helpWindow);
this._actionWindow.setHandler("load", this.onActionLoad.bind(this));
this._actionWindow.setHandler("save", this.onActionSave.bind(this));
this._actionWindow.setHandler("delete", this.onActionDelete.bind(this));
this._actionWindow.setHandler("cancel", this.onActionCancel.bind(this));
};
Scene_File.prototype.createInfoWindow = function () {
var x = this._actionWindow.x;
var y = this._actionWindow.y + this._actionWindow.height;
var width = Graphics.boxWidth - x;
var height = Graphics.boxHeight - y;
this._infoWindow = new Window_SaveInfo(x, y, width, height, this.mode());
this.addWindow(this._infoWindow);
};
Scene_File.prototype.createConfirmWindow = function () {
this._confirmWindow = new Window_SaveConfirm();
var win = this._confirmWindow;
win.setHandler("confirm", this.onConfirmOk.bind(this));
win.setHandler("cancel", this.onConfirmCancel.bind(this));
this.addWindow(this._confirmWindow);
};
Scene_File.prototype.onSavefileOk = function () {
this._actionWindow.activate();
if (this.mode() === "load") {
this._actionWindow.select(0);
} else if (this.mode() === "save") {
this._actionWindow.select(1);
}
};
Scene_Save.prototype.onSavefileOk = function () {
Scene_File.prototype.onSavefileOk.call(this);
};
Scene_Load.prototype.onSavefileOk = function () {
Scene_File.prototype.onSavefileOk.call(this);
};
Scene_File.prototype.onActionLoad = function () {
if (Yanfly.Param.SaveConfirmLoad) {
this.startConfirmWindow(Yanfly.Param.SaveConfirmLoadTx);
} else {
this.performActionLoad();
}
};
Scene_File.prototype.performActionLoad = function () {
if (DataManager.loadGame(this.savefileId())) {
this.onLoadSuccess();
} else {
this.onLoadFailure();
}
};
Scene_File.prototype.onLoadSuccess = function () {
SoundManager.playLoad();
this.fadeOutAll();
this.reloadMapIfUpdated();
SceneManager.goto(Scene_Map);
this._loadSuccess = true;
};
Scene_Load.prototype.onLoadSuccess = function () {
Scene_File.prototype.onLoadSuccess.call(this);
};
Scene_File.prototype.onLoadFailure = function () {
SoundManager.playBuzzer();
this.onActionCancel();
};
Scene_Load.prototype.onLoadFailure = function () {
Scene_File.prototype.onLoadFailure.call(this);
};
Scene_File.prototype.reloadMapIfUpdated = function () {
if ($gameSystem.versionId() === $dataSystem.versionId) return;
$gamePlayer.reserveTransfer($gameMap.mapId(), $gamePlayer.x, $gamePlayer.y);
$gamePlayer.requestMapReload();
};
Scene_File.prototype.onActionSave = function () {
var id = this.savefileId();
if (Yanfly.Param.SaveConfirmSave && StorageManager.exists(id)) {
this.startConfirmWindow(Yanfly.Param.SaveConfirmSaveTx);
} else {
this.performActionSave();
}
};
Scene_File.prototype.performActionSave = function () {
$gameSystem.onBeforeSave();
if (DataManager.saveGame(this.savefileId())) {
this.onSaveSuccess();
} else {
this.onSaveFailure();
}
};
Scene_File.prototype.onSaveSuccess = function () {
SoundManager.playSave();
StorageManager.cleanBackup(this.savefileId());
if (Yanfly.Param.SavePop) {
this.popScene();
} else {
this._listWindow.refresh();
this._actionWindow._currentFile = this.savefileId() - 1;
this._infoWindow._currentFile = this.savefileId() - 1;
this.onActionCancel();
}
};
Scene_Save.prototype.onSaveSuccess = function () {
Scene_File.prototype.onSaveSuccess.call(this);
};
Scene_File.prototype.onSaveFailure = function () {
SoundManager.playBuzzer();
this.onActionCancel();
};
Scene_Save.prototype.onSaveFailure = function () {
Scene_File.prototype.onSaveFailure.call(this);
};
Scene_File.prototype.onActionDelete = function () {
if (Yanfly.Param.SaveConfirmDel) {
this.startConfirmWindow(Yanfly.Param.SaveConfirmDelTx);
} else {
this.performActionDelete();
}
};
Scene_File.prototype.performActionDelete = function () {
AudioManager.playSe(Yanfly.Param.SaveDeleteSound);
StorageManager.remove(this.savefileId());
this.onActionCancel();
this._listWindow.refresh();
this._actionWindow._currentFile = this.savefileId() - 1;
this._infoWindow._currentFile = this.savefileId() - 1;
};
Scene_File.prototype.onActionCancel = function () {
this._actionWindow.deselect();
this._listWindow.activate();
this._helpWindow.setText(Yanfly.Param.SaveHelpSelect);
};
Scene_File.prototype.startConfirmWindow = function (text) {
SoundManager.playOk();
this._confirmWindow.setData(text);
this._confirmWindow.open();
this._confirmWindow.activate();
this._confirmWindow.select(0);
};
Scene_File.prototype.onConfirmOk = function () {
this._confirmWindow.deactivate();
this._confirmWindow.close();
if (this._actionWindow.currentSymbol() === "load") {
setTimeout(this.performActionLoad.bind(this), 200);
} else if (this._actionWindow.currentSymbol() === "save") {
setTimeout(this.performActionSave.bind(this), 200);
} else if (this._actionWindow.currentSymbol() === "delete") {
setTimeout(this.performActionDelete.bind(this), 200);
} else {
this.onConfirmCancel();
}
};
Scene_File.prototype.onConfirmCancel = function () {
var index = this._actionWindow.index();
this._confirmWindow.deactivate();
this._confirmWindow.close();
this.onSavefileOk();
this._actionWindow.select(index);
};
//=============================================================================
// Utilities
//=============================================================================
Yanfly.Util = Yanfly.Util || {};
if (!Yanfly.Util.toGroup) {
Yanfly.Util.toGroup = function (inVal) {
return inVal;
};
}
//=============================================================================
// End of File
//=============================================================================