Files
Superproject1/js/plugins/YEP_PatchNotes.js
alexpolo1 3cfd07d722 2
2023-04-10 00:05:51 +02:00

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
//=============================================================================