298 lines
10 KiB
JavaScript
298 lines
10 KiB
JavaScript
//=============================================================================
|
|
// Yanfly Engine Plugins - Patch Notes
|
|
// YEP_PatchNotes.js
|
|
//=============================================================================
|
|
|
|
var Imported = Imported || {};
|
|
Imported.YEP_PatchNotes = true;
|
|
|
|
var Yanfly = Yanfly || {};
|
|
Yanfly.PatchNotes = Yanfly.PatchNotes || {};
|
|
Yanfly.PatchNotes.version = 1.00;
|
|
|
|
//=============================================================================
|
|
/*:
|
|
* @plugindesc v1.00 Add the ability to read Patch Notes from inside your game.
|
|
* @author Yanfly Engine Plugins
|
|
*
|
|
* @param ---General---
|
|
* @default
|
|
*
|
|
* @param Patch Notes File
|
|
* @parent ---General---
|
|
* @desc Filename used for the Patch Notes. Place this inside your
|
|
* project's main folder.
|
|
* @default patchnotes.txt
|
|
*
|
|
* @param ---Title---
|
|
* @default
|
|
*
|
|
* @param PatchTitleCommand
|
|
* @text Command Name
|
|
* @parent ---Title---
|
|
* @desc This is the text used for the menu command.
|
|
* @default Patch Notes
|
|
*
|
|
* @param Add Title Screen
|
|
* @parent ---Title---
|
|
* @type boolean
|
|
* @on YES
|
|
* @off NO
|
|
* @desc Add the 'Patch Notes' command to the title screen?
|
|
* NO - false YES - true
|
|
* @default true
|
|
*
|
|
* @param ---Menu---
|
|
* @default
|
|
*
|
|
* @param PatchMenuCommand
|
|
* @text Command Name
|
|
* @parent ---Menu---
|
|
* @desc This is the text used for the menu command.
|
|
* @default Patch Notes
|
|
*
|
|
* @param Auto Add Menu
|
|
* @parent ---Menu---
|
|
* @type boolean
|
|
* @on YES
|
|
* @off NO
|
|
* @desc Automatically add the 'Patch Notes' command to the main menu?
|
|
* NO - false YES - true
|
|
* @default true
|
|
*
|
|
* @param Show Command
|
|
* @parent ---Menu---
|
|
* @type boolean
|
|
* @on Show
|
|
* @off Hide
|
|
* @desc Show the Patch command in the main menu by default?
|
|
* NO - false YES - true
|
|
* @default true
|
|
*
|
|
* @param Auto Place Command
|
|
* @parent ---Menu---
|
|
* @type boolean
|
|
* @on YES
|
|
* @off NO
|
|
* @desc Allow this plugin to decide the menu placement position?
|
|
* NO - false YES - true
|
|
* @default true
|
|
*
|
|
* @help
|
|
* ============================================================================
|
|
* Introduction
|
|
* ============================================================================
|
|
*
|
|
* This plugin grants your players the ability to access Patch Notes from the
|
|
* game itself. Being able to tell your players what you've changed from inside
|
|
* the game can make all the difference in the player experience. This plugin
|
|
* lets players access Patch Notes from the title screen, the main menu, or
|
|
* from a Plugin Command ran inside the game.
|
|
*
|
|
* ============================================================================
|
|
* Intructions
|
|
* ============================================================================
|
|
*
|
|
* Place your Patch Notes file (could be either a HTML or TXT file) inside the
|
|
* base directory of your game project. By default, this filename is set to
|
|
* 'patchnotes.txt' in the Plugin Parameters, so change that if you intend to
|
|
* use a different filename or file type.
|
|
*
|
|
* ============================================================================
|
|
* Main Menu Manager - Positioning the Patch Command
|
|
* ============================================================================
|
|
*
|
|
* For those using the Main Menu Manager and would like to position the Patch
|
|
* Notes command in a place you'd like, use the following format:
|
|
*
|
|
* Name: Yanfly.Param.PatchCmd
|
|
* Symbol: PatchNotes
|
|
* Show: $gameSystem.isShowPatchNotesCommand()
|
|
* Enabled: true
|
|
* Ext:
|
|
* Main Bind: this.commandPatchNotes.bind(this)
|
|
* Actor Bind:
|
|
*
|
|
* Insert the above setup within a Main Menu Manager slot. Provided you copy
|
|
* the exact settings to where you need it, it will appear there while using
|
|
* all of the naming, enabling, disabling, hiding, and showing effects done by
|
|
* the plugin parameters.
|
|
*
|
|
* Remember to turn off 'Auto Add Menu' from the plugin parameters.
|
|
*
|
|
* ============================================================================
|
|
* Plugin Commands
|
|
* ============================================================================
|
|
*
|
|
* You can use the following plugin commands to adjust how accessing the Patch
|
|
* file is done for your game.
|
|
*
|
|
* Plugin Commands
|
|
*
|
|
* OpenPatchNotes
|
|
* - This will open up the Patch file or URL for your game.
|
|
*
|
|
* ShowMenuPatchNotesCommand
|
|
* - Will make the 'PatchNotes' command show up in the main menu.
|
|
*
|
|
* HideMenuPatchNotesCommand
|
|
* - Will make the 'PatchNotes' command hidden in the main menu.
|
|
*/
|
|
//=============================================================================
|
|
|
|
Yanfly.Parameters = PluginManager.parameters('YEP_PatchNotes');
|
|
Yanfly.Param = Yanfly.Param || {};
|
|
|
|
Yanfly.Param.PatchNotesFilename = String(Yanfly.Parameters['Patch Notes File']);
|
|
|
|
Yanfly.Param.PatchTitleCmd = String(Yanfly.Parameters['PatchTitleCommand']);
|
|
Yanfly.Param.PatchAddTitle = eval(String(Yanfly.Parameters['Add Title Screen']));
|
|
|
|
Yanfly.Param.PatchCmd = String(Yanfly.Parameters['PatchMenuCommand']);
|
|
Yanfly.Param.PatchAutoAdd = eval(String(Yanfly.Parameters['Auto Add Menu']));
|
|
Yanfly.Param.PatchShow = eval(String(Yanfly.Parameters['Show Command']));
|
|
Yanfly.Param.PatchAutoPlace = String(Yanfly.Parameters['Auto Place Command']);
|
|
Yanfly.Param.PatchAutoPlace = eval(Yanfly.Param.PatchAutoPlace);
|
|
|
|
//=============================================================================
|
|
// Game_System
|
|
//=============================================================================
|
|
|
|
Yanfly.PatchNotes.Game_System_initialize = Game_System.prototype.initialize;
|
|
Game_System.prototype.initialize = function() {
|
|
Yanfly.PatchNotes.Game_System_initialize.call(this);
|
|
this.initPatchNotes();
|
|
};
|
|
|
|
Game_System.prototype.initPatchNotes = function() {
|
|
this._PatchNotesCommandShow = Yanfly.Param.PatchShow;
|
|
};
|
|
|
|
Game_System.prototype.isShowPatchNotesCommand = function() {
|
|
if (this._PatchNotesCommandShow === undefined) this.initPatchNotes();
|
|
return this._PatchNotesCommandShow;
|
|
};
|
|
|
|
Game_System.prototype.setShowPatchNotesCommand = function(value) {
|
|
if (this._PatchNotesCommandShow === undefined) this.initPatchNotes();
|
|
this._PatchNotesCommandShow = value;
|
|
};
|
|
|
|
//=============================================================================
|
|
// Game_Interpreter
|
|
//=============================================================================
|
|
|
|
Yanfly.PatchNotes.Game_Interpreter_pluginCommand =
|
|
Game_Interpreter.prototype.pluginCommand;
|
|
Game_Interpreter.prototype.pluginCommand = function(command, args) {
|
|
Yanfly.PatchNotes.Game_Interpreter_pluginCommand.call(this, command, args);
|
|
if (command === 'OpenPatchNotes') {
|
|
Yanfly.AccessPatchNotes();
|
|
} else if (command === 'ShowMenuPatchNotesCommand') {
|
|
$gameSystem.setShowPatchNotesCommand(true);
|
|
} else if (command === 'HideMenuPatcNoteshCommand') {
|
|
$gameSystem.setShowPatchNotesCommand(false);
|
|
}
|
|
};
|
|
|
|
//=============================================================================
|
|
// Window_MenuCommand
|
|
//=============================================================================
|
|
|
|
Yanfly.PatchNotes.Window_MenuCommand_addOriginalCommands =
|
|
Window_MenuCommand.prototype.addOriginalCommands;
|
|
Window_MenuCommand.prototype.addOriginalCommands = function() {
|
|
Yanfly.PatchNotes.Window_MenuCommand_addOriginalCommands.call(this);
|
|
if (Yanfly.Param.PatchAutoAdd) this.addPatchCommand();
|
|
};
|
|
|
|
Window_MenuCommand.prototype.addPatchCommand = function() {
|
|
if (!Yanfly.Param.PatchAutoPlace) return;
|
|
if (!$gameSystem.isShowPatchNotesCommand()) return;
|
|
if (this.findSymbol('PatchNotes') > -1) return;
|
|
var text = Yanfly.Param.PatchCmd;
|
|
this.addCommand(text, 'PatchNotes', true);
|
|
};
|
|
|
|
//=============================================================================
|
|
// Window_TitleCommand
|
|
//=============================================================================
|
|
|
|
Yanfly.PatchNotes.Window_TitleCommand_makeCommandList =
|
|
Window_TitleCommand.prototype.makeCommandList;
|
|
Window_TitleCommand.prototype.makeCommandList = function() {
|
|
Yanfly.PatchNotes.Window_TitleCommand_makeCommandList.call(this);
|
|
this.addPatchNotesCommand();
|
|
};
|
|
|
|
Window_TitleCommand.prototype.addPatchNotesCommand = function() {
|
|
if (!Yanfly.Param.PatchAddTitle) return;
|
|
this.addCommand(Yanfly.Param.PatchTitleCmd, 'PatchNotes');
|
|
};
|
|
|
|
//=============================================================================
|
|
// Scene_Menu
|
|
//=============================================================================
|
|
|
|
Yanfly.PatchNotes.Scene_Menu_createCommandWindow =
|
|
Scene_Menu.prototype.createCommandWindow;
|
|
Scene_Menu.prototype.createCommandWindow = function() {
|
|
Yanfly.PatchNotes.Scene_Menu_createCommandWindow.call(this);
|
|
this._commandWindow.setHandler('PatchNotes',
|
|
this.commandPatchNotes.bind(this));
|
|
};
|
|
|
|
Scene_Menu.prototype.commandPatchNotes = function() {
|
|
Yanfly.AccessPatchNotes();
|
|
this._commandWindow.activate();
|
|
};
|
|
|
|
//=============================================================================
|
|
// Scene_Title
|
|
//=============================================================================
|
|
|
|
Yanfly.PatchNotes.Scene_Title_createCommandWindow =
|
|
Scene_Title.prototype.createCommandWindow;
|
|
Scene_Title.prototype.createCommandWindow = function() {
|
|
Yanfly.PatchNotes.Scene_Title_createCommandWindow.call(this);
|
|
this._commandWindow.setHandler('PatchNotes', this.commandPatchNotes.bind(this));
|
|
};
|
|
|
|
Scene_Title.prototype.commandPatchNotes = function() {
|
|
Yanfly.AccessPatchNotes();
|
|
this._commandWindow.activate();
|
|
};
|
|
|
|
//=============================================================================
|
|
// Utilities
|
|
//=============================================================================
|
|
|
|
Yanfly.AccessPatchNotes = function() {
|
|
if ($gameTemp.isPlaytest()) console.log('Opening Patch Notes File...');
|
|
TouchInput.clear();
|
|
Input.clear();
|
|
var url = this.getPatchFileUrl();
|
|
var win = window.open(url);
|
|
if (win) {
|
|
win.focus();
|
|
} else if (Imported.YEP_ExternalLinks) {
|
|
SceneManager.openPopupBlockerMessage();
|
|
}
|
|
};
|
|
|
|
Yanfly.getPatchFileUrl = function() {
|
|
var url = Yanfly.Param.PatchNotesFilename;
|
|
if (url.match(/http/i)) {
|
|
return url;
|
|
} else {
|
|
var path = window.location.pathname.replace(/(\/www|)\/[^\/]*$/,
|
|
'/' + Yanfly.Param.PatchNotesFilename);
|
|
if (path.match(/^\/([A-Z]\:)/)) path = path.slice(1);
|
|
path = decodeURI(path);
|
|
return path;
|
|
}
|
|
};
|
|
|
|
//=============================================================================
|
|
// End of File
|
|
//=============================================================================
|